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

Function NewScriptInstance

engine/gameobject/src/gameobject/gameobject_script.cpp:2530–2574  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2528 }
2529
2530 HScriptInstance NewScriptInstance(CompScriptWorld* script_world, HScript script, HInstance instance, uint16_t component_index)
2531 {
2532 lua_State* L = script->m_LuaState;
2533
2534 int top = lua_gettop(L);
2535 (void) top;
2536
2537 ScriptInstance* i = (ScriptInstance *)lua_newuserdata(L, sizeof(ScriptInstance));
2538 ResetScriptInstance(i);
2539 i->m_Script = script;
2540
2541 lua_pushvalue(L, -1);
2542 i->m_InstanceReference = dmScript::Ref( L, LUA_REGISTRYINDEX );
2543
2544 lua_newtable(L);
2545 i->m_ScriptDataReference = dmScript::Ref( L, LUA_REGISTRYINDEX );
2546
2547 lua_newtable(L);
2548 i->m_ContextTableReference = dmScript::Ref( L, LUA_REGISTRYINDEX );
2549
2550 i->m_Instance = instance;
2551 i->m_ScriptWorld = script_world->m_ScriptWorld;
2552 i->m_ComponentIndex = component_index;
2553 i->m_UniqueScriptId = dmScript::GenerateUniqueScriptId();
2554 NewPropertiesParams params;
2555 params.m_ResolvePathCallback = ScriptInstanceResolvePathCB;
2556 params.m_ResolvePathUserData = (uintptr_t)L;
2557 params.m_GetURLCallback = ScriptInstanceGetURLCB;
2558 i->m_Properties = NewProperties(params);
2559 SetPropertySet(i->m_Properties, PROPERTY_LAYER_DEFAULT, script->m_PropertySet);
2560 luaL_getmetatable(L, SCRIPTINSTANCE);
2561 lua_setmetatable(L, -2);
2562
2563 lua_pop(L, 1);
2564
2565 lua_rawgeti(L, LUA_REGISTRYINDEX, i->m_InstanceReference);
2566 dmScript::SetInstance(L);
2567 dmScript::InitializeInstance(i->m_ScriptWorld);
2568 lua_pushnil(L);
2569 dmScript::SetInstance(L);
2570
2571 assert(top == lua_gettop(L));
2572
2573 return i;
2574 }
2575
2576 void DeleteScriptInstance(HScriptInstance script_instance)
2577 {

Callers 1

CompScriptCreateFunction · 0.85

Calls 14

lua_gettopFunction · 0.85
lua_newuserdataFunction · 0.85
ResetScriptInstanceFunction · 0.85
lua_pushvalueFunction · 0.85
RefFunction · 0.85
GenerateUniqueScriptIdFunction · 0.85
NewPropertiesFunction · 0.85
SetPropertySetFunction · 0.85
lua_setmetatableFunction · 0.85
lua_rawgetiFunction · 0.85
SetInstanceFunction · 0.85
InitializeInstanceFunction · 0.85

Tested by

no test coverage detected