Started collision callbacks for .Net

This commit is contained in:
Antoine Pilote
2024-04-01 14:28:59 -04:00
parent 0693ac1ad0
commit 5217a8639b
7 changed files with 82 additions and 22 deletions

View File

@@ -5,7 +5,7 @@
#include "Engine.h"
#include "src/Scripting/ScriptingEngineNet.h"
#include "src/Physics/PhysicsManager.h"
namespace Nuake
{
@@ -129,6 +129,8 @@ namespace Nuake
auto scriptInstance = scriptingEngineNet.GetEntityScript(entity);
scriptInstance.InvokeMethod("OnFixedUpdate", ts.GetSeconds());
}
DispatchPhysicCallbacks();
}
void ScriptingSystem::Exit()
@@ -166,4 +168,23 @@ namespace Nuake
ScriptingEngine::Close();
ScriptingEngineNet::Get().Uninitialize();
}
void ScriptingSystem::DispatchPhysicCallbacks()
{
auto& scriptingEngineNet = ScriptingEngineNet::Get();
auto& physicsManager = PhysicsManager::Get();
const auto& collisions = physicsManager.GetCollisions();
for (const auto& col : collisions)
{
Entity entity1 = m_Scene->GetEntityByID(col.Entity1);
Entity entity2 = m_Scene->GetEntityByID(col.Entity2);
if (entity1.IsValid() && scriptingEngineNet.HasEntityScriptInstance(entity1))
{
auto scriptInstance = scriptingEngineNet.GetEntityScript(entity1);
scriptInstance.InvokeMethod("OnCollision", col.Entity1, col.Entity2);
}
}
}
}