MCPcopy Create free account
hub / github.com/defold/defold / ResScriptRecreate

Function ResScriptRecreate

engine/gameobject/src/gameobject/res_script.cpp:95–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

93 }
94
95 static dmResource::Result ResScriptRecreate(const dmResource::ResourceRecreateParams* params)
96 {
97 HScript script = (HScript) ResourceDescriptorGetResource(params->m_Resource);
98
99 dmLuaDDF::LuaModule* lua_module = 0;
100 dmDDF::Result e = dmDDF::LoadMessage<dmLuaDDF::LuaModule>(params->m_Buffer, params->m_BufferSize, &lua_module);
101 if ( e != dmDDF::RESULT_OK )
102 return dmResource::RESULT_FORMAT_ERROR;
103
104 PatchLuaBytecode(&lua_module->m_Source);
105
106 dmScript::HContext script_context = (dmScript::HContext) params->m_Context;
107 if (!RegisterSubModules(params->m_Factory, script_context, lua_module))
108 {
109 dmDDF::FreeMessage(lua_module);
110 return dmResource::RESULT_FORMAT_ERROR;
111 }
112
113 dmLuaDDF::LuaModule* old_lua_module = script->m_LuaModule;
114 bool ok = ReloadScript(script, lua_module);
115 if (ok)
116 {
117 dmArray<void*> tmp_res;
118 dmResource::Result res = LoadPropertyResources(params->m_Factory, lua_module->m_PropertyResources.m_Data, lua_module->m_PropertyResources.m_Count, tmp_res);
119 if(res == dmResource::RESULT_OK)
120 {
121 UnloadPropertyResources(params->m_Factory, script->m_PropertyResources);
122 script->m_PropertyResources.Swap(tmp_res);
123 }
124 dmDDF::FreeMessage(old_lua_module);
125 ResourceDescriptorSetResourceSize(params->m_Resource, params->m_BufferSize - script->m_LuaModule->m_Source.m_Script.m_Count);
126 return dmResource::RESULT_OK;
127 }
128 else
129 {
130 dmDDF::FreeMessage(lua_module);
131 return dmResource::RESULT_FORMAT_ERROR;
132 }
133 }
134
135 static ResourceResult RegisterResourceTypeScript(HResourceTypeContext ctx, HResourceType type)
136 {

Callers

nothing calls this directly

Calls 9

PatchLuaBytecodeFunction · 0.85
RegisterSubModulesFunction · 0.85
FreeMessageFunction · 0.85
ReloadScriptFunction · 0.85
LoadPropertyResourcesFunction · 0.85
UnloadPropertyResourcesFunction · 0.85
SwapMethod · 0.45

Tested by

no test coverage detected