Now calling both collidee when a collision occur, removed unnecessary parameter to collision callbacks

This commit is contained in:
Antoine Pilote
2024-04-24 00:05:59 -04:00
parent 4468b83364
commit 70dec8f46e
2 changed files with 15 additions and 7 deletions

View File

@@ -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);
}
}

View File

@@ -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<Entity>(entity2);
entityInstance = Scene.GetEntity<Entity>(entity);
}
else
{
entityInstance = new Entity { ECSHandle = entity2 };
entityInstance = new Entity { ECSHandle = entity };
}
}
OnCollision(new Entity { ECSHandle = entity1 }, entityInstance);
OnCollision(entityInstance);
}
protected static Dictionary<Type, ComponentTypes> MappingTypeEnum = new Dictionary<Type, ComponentTypes>()