Initial infrastructure for C# scene callbacks in subsystems

This commit is contained in:
WiggleWizard
2024-09-19 17:52:01 +01:00
parent 98797e15f8
commit d0c5ef1a1d
14 changed files with 190 additions and 4 deletions

View File

@@ -40,6 +40,8 @@ namespace Nuake
void Engine::Init()
{
Window::Get()->OnWindowSetScene().AddStatic(&Engine::OnWindowSetScene);
ScriptingEngineNet::Get().AddListener<ScriptingEngineNet::GameAssemblyLoadedDelegate>(&Engine::OnScriptingEngineGameAssemblyLoaded);
AudioManager::Get().Initialize();
@@ -257,6 +259,15 @@ namespace Nuake
return std::reinterpret_pointer_cast<EngineSubsystemScriptable>(subsystems[subsystemId]);
}
void Engine::OnWindowSetScene(Ref<Scene> scene)
{
if (scene != nullptr)
{
scene->OnPreInitialize().AddStatic(&Engine::OnScenePreInitialize, scene);
scene->OnPostInitialize().AddStatic(&Engine::OnScenePostInitialize, scene);
}
}
void Engine::InitializeCoreSubsystems()
{
}
@@ -296,6 +307,28 @@ namespace Nuake
}
}
void Engine::OnScenePreInitialize(Ref<Scene> scene)
{
for (auto subsystem : subsystems)
{
if (subsystem == nullptr)
continue;
subsystem->OnScenePreInitialize(scene);
}
}
void Engine::OnScenePostInitialize(Ref<Scene> scene)
{
for (auto subsystem : subsystems)
{
if (subsystem == nullptr)
continue;
subsystem->OnScenePostInitialize(scene);
}
}
bool Engine::LoadProject(Ref<Project> project)
{
currentProject = project;