#include "CGame.h" #include "CEngine.h" #include "CScriptingManager.h" #include "CGameScriptingEngine.h" #include "U_General.h" #include "U_ShortAPI.h" CGame::CGame() { } void CGame::V_DeInit() { PhysicsEngine.reset(); //TODO delete worlds } void CGame::V_Update() { if(PhysicsEngine && !IsConnectedClient()) { auto deltaTime = CEngine::GetInstance()->Time.GetDeltaTime(); PhysicsEngine->Trace([deltaTime](CPhysicsWorld* world) { world->Step(deltaTime); }); } Worlds.Update(); } bool CGame::V_ScriptInit(std::shared_ptr state, sol::table table) { table["worlds"] = Worlds.GetScriptTable(state); SetFieldsManager(table, [this](FieldsManPtr fieldsMan) { fieldsMan->AddField("physics", std::make_unique([this](sol::state_view ts) -> sol::object { return PhysicsEngine ? PhysicsEngine->GetScriptTable(ts) : sol::lua_nil; })); }); return true; } LINK_SOL_USERTYPE(CGame); LINK_COMPONENT_TO_CLASS(CGame, game);