#include "ScriptingSystem.h" #include #include "src/Scene/Scene.h" ScriptingSystem::ScriptingSystem(Scene* scene) { m_Scene = scene; } bool ScriptingSystem::Init() { ScriptingEngine::Init(); auto entities = m_Scene->m_Registry.view(); for (auto e : entities) { WrenScriptComponent& wren = entities.get(e); if (wren.Script != "" && wren.Class != "") { wren.WrenScript = CreateRef(wren.Script, wren.Class, true); if (!wren.WrenScript->CompiledSuccesfully) return false; } if (wren.WrenScript != nullptr) { wren.WrenScript->SetScriptableEntityID((int)e); wren.WrenScript->CallInit(); } } return true; } void ScriptingSystem::Update(Timestep ts) { auto entities = m_Scene->m_Registry.view(); for (auto& e : entities) { WrenScriptComponent& wren = entities.get(e); if (wren.WrenScript != nullptr) wren.WrenScript->CallUpdate(ts); } } void ScriptingSystem::FixedUpdate(Timestep ts) { auto entities = m_Scene->m_Registry.view(); for (auto& e : entities) { WrenScriptComponent& wren = entities.get(e); if (wren.WrenScript != nullptr) wren.WrenScript->CallFixedUpdate(ts); } } void ScriptingSystem::Exit() { auto entities = m_Scene->m_Registry.view(); for (auto& e : entities) { WrenScriptComponent& wren = entities.get(e); if (wren.WrenScript != nullptr) wren.WrenScript->CallExit(); } ScriptingEngine::Close(); }