diff --git a/Nuake/src/Scene/Systems/ScriptingSystem.cpp b/Nuake/src/Scene/Systems/ScriptingSystem.cpp index 08f15533..83d0e330 100644 --- a/Nuake/src/Scene/Systems/ScriptingSystem.cpp +++ b/Nuake/src/Scene/Systems/ScriptingSystem.cpp @@ -213,11 +213,19 @@ namespace Nuake const auto collisions = physicsManager.GetCollisions(); for (const auto& col : collisions) { + // Calling both collidee(?) Entity entity1 = { (entt::entity)col.Entity1, m_Scene }; if (entity1.IsValid() && scriptingEngineNet.HasEntityScriptInstance(entity1)) { auto scriptInstance = scriptingEngineNet.GetEntityScript(entity1); - scriptInstance.InvokeMethod("OnCollisionInternal", (int)col.Entity1, (int)col.Entity2); + scriptInstance.InvokeMethod("OnCollisionInternal", (int)col.Entity2); + } + + Entity entity2 = { (entt::entity)col.Entity2, m_Scene }; + if (entity2.IsValid() && scriptingEngineNet.HasEntityScriptInstance(entity2)) + { + auto scriptInstance = scriptingEngineNet.GetEntityScript(entity2); + scriptInstance.InvokeMethod("OnCollisionInternal", (int)col.Entity1); } } diff --git a/NuakeNet/src/Entity.cs b/NuakeNet/src/Entity.cs index 8d97429e..bd877068 100644 --- a/NuakeNet/src/Entity.cs +++ b/NuakeNet/src/Entity.cs @@ -55,29 +55,29 @@ namespace Nuake.Net public virtual void OnFixedUpdate(float dt) { } public virtual void OnDestroy() { } - public virtual void OnCollision(Entity entity1, Entity entity2) + public virtual void OnCollision(Entity entity) { } // Physics - public void OnCollisionInternal(int entity1, int entity2) + public void OnCollisionInternal(int entity) { Entity entityInstance; unsafe { - bool hasInstance = EntityHasManagedInstanceIcall(entity2); + bool hasInstance = EntityHasManagedInstanceIcall(entity); if (hasInstance) { - entityInstance = Scene.GetEntity(entity2); + entityInstance = Scene.GetEntity(entity); } else { - entityInstance = new Entity { ECSHandle = entity2 }; + entityInstance = new Entity { ECSHandle = entity }; } } - OnCollision(new Entity { ECSHandle = entity1 }, entityInstance); + OnCollision(entityInstance); } protected static Dictionary MappingTypeEnum = new Dictionary()