| 155 | } |
| 156 | |
| 157 | static dmResource::Result ResLuaRecreate(const dmResource::ResourceRecreateParams* params) |
| 158 | { |
| 159 | dmLuaDDF::LuaModule* lua_module = 0; |
| 160 | dmDDF::Result e = dmDDF::LoadMessage<dmLuaDDF::LuaModule>(params->m_Buffer, params->m_BufferSize, &lua_module); |
| 161 | if ( e != dmDDF::RESULT_OK ) |
| 162 | return dmResource::RESULT_FORMAT_ERROR; |
| 163 | |
| 164 | PatchLuaBytecode(&lua_module->m_Source); |
| 165 | |
| 166 | ModuleContext* module_context = (ModuleContext*) params->m_Context; |
| 167 | uint32_t context_count = module_context->m_ScriptContexts.Size(); |
| 168 | for (uint32_t i = 0; i < context_count; ++i) { |
| 169 | dmScript::HContext script_context = module_context->m_ScriptContexts[i]; |
| 170 | dmScript::ReloadModule(script_context, &lua_module->m_Source, ResourceDescriptorGetNameHash(params->m_Resource)); |
| 171 | } |
| 172 | LuaScript* lua_script = (LuaScript*) ResourceDescriptorGetResource(params->m_Resource); |
| 173 | ResourceDescriptorSetResourceSize(params->m_Resource, sizeof(LuaScript) + params->m_BufferSize - lua_script->m_LuaModule->m_Source.m_Script.m_Count); |
| 174 | dmDDF::FreeMessage(lua_script->m_LuaModule); |
| 175 | lua_script->m_LuaModule = lua_module; |
| 176 | return dmResource::RESULT_OK; |
| 177 | } |
| 178 | |
| 179 | static ResourceResult RegisterResourceTypeLua(HResourceTypeContext ctx, HResourceType type) |
| 180 | { |
nothing calls this directly
no test coverage detected