feat(scripting): add mono csharp runtime foundation

This commit is contained in:
2026-03-27 13:07:39 +08:00
parent 134a80b334
commit b06932724c
33 changed files with 4227 additions and 18 deletions

View File

@@ -0,0 +1,64 @@
#include "Scene/SceneRuntime.h"
#include "Scripting/ScriptEngine.h"
namespace XCEngine {
namespace Components {
void SceneRuntime::Start(Scene* scene) {
if (m_running && m_scene == scene) {
return;
}
Stop();
if (!scene) {
return;
}
m_scene = scene;
m_running = true;
Scripting::ScriptEngine::Get().OnRuntimeStart(scene);
}
void SceneRuntime::Stop() {
if (!m_running) {
m_scene = nullptr;
return;
}
Scripting::ScriptEngine::Get().OnRuntimeStop();
m_running = false;
m_scene = nullptr;
}
void SceneRuntime::FixedUpdate(float fixedDeltaTime) {
if (!m_running || !m_scene || !m_scene->IsActive()) {
return;
}
// Scripts run first so their state changes are visible to native components in the same frame.
Scripting::ScriptEngine::Get().OnFixedUpdate(fixedDeltaTime);
m_scene->FixedUpdate(fixedDeltaTime);
}
void SceneRuntime::Update(float deltaTime) {
if (!m_running || !m_scene || !m_scene->IsActive()) {
return;
}
Scripting::ScriptEngine::Get().OnUpdate(deltaTime);
m_scene->Update(deltaTime);
}
void SceneRuntime::LateUpdate(float deltaTime) {
if (!m_running || !m_scene || !m_scene->IsActive()) {
return;
}
Scripting::ScriptEngine::Get().OnLateUpdate(deltaTime);
m_scene->LateUpdate(deltaTime);
}
} // namespace Components
} // namespace XCEngine