MCPcopy Create free account
hub / github.com/antopilo/Nuake / Init

Method Init

Nuake/Source/Nuake/Scene/Systems/ScriptingSystem.cpp:17–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15 }
16
17 bool ScriptingSystem::Init()
18 {
19 Logger::Log("Initializing ScriptingSystem");
20
21 preInitDelegate.Broadcast();
22
23 auto& scriptingEngineNet = ScriptingEngineNet::Get();
24 scriptingEngineNet.Uninitialize();
25 scriptingEngineNet.Initialize();
26 scriptingEngineNet.LoadProjectAssembly(Engine::GetProject());
27
28 auto netEntities = m_Scene->m_Registry.view<NetScriptComponent>();
29 for (auto& e : netEntities)
30 {
31 NetScriptComponent& netScriptComponent = netEntities.get<NetScriptComponent>(e);
32
33 if (netScriptComponent.ScriptPath.empty())
34 continue;
35
36 auto entity = Entity{ e, m_Scene };
37
38 // Creates an instance of the entity script in C#
39 scriptingEngineNet.RegisterEntityScript(entity);
40
41 netScriptComponent.Initialized = true;
42 }
43
44 // Instantiate UI widgets
45 for (auto& uiWidget : CanvasParser::Get().GetAllCustomWidgetInstance())
46 {
47 scriptingEngineNet.RegisterCustomWidgetInstance(uiWidget.first.first, uiWidget.first.second, uiWidget.second);
48 }
49
50 // Call OnInit on entity script instances
51 for (auto& e : netEntities)
52 {
53 auto entity = Entity{ e, m_Scene };
54
55 if (entity.IsValid() && scriptingEngineNet.HasEntityScriptInstance(entity))
56 {
57 // We can now call on init on it.
58 auto scriptInstance = scriptingEngineNet.GetEntityScript(entity);
59 scriptInstance->InvokeMethod("OnInit");
60 }
61 }
62
63 // Call OnInit on UI widgets
64 for (auto& widget : CanvasParser::Get().GetAllCustomWidgetInstance())
65 {
66 const UUID& canvasInstanceUUID = widget.first.first;
67 const UUID& widgetInstanceUUID = widget.first.second;
68 if (scriptingEngineNet.HasCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID))
69 {
70 auto widgetInstance = scriptingEngineNet.GetCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID);
71 widgetInstance.InvokeMethod("OnInit");
72 }
73 }
74

Callers

nothing calls this directly

Calls 14

LogFunction · 0.85
BroadcastMethod · 0.80
UninitializeMethod · 0.80
LoadProjectAssemblyMethod · 0.80
RegisterEntityScriptMethod · 0.80
GetEntityScriptMethod · 0.80
InitializeMethod · 0.45

Tested by

no test coverage detected