public void Execute(TriggerEvent triggerEvent) { var entityA = triggerEvent.Entities.EntityA; var entityB = triggerEvent.Entities.EntityB; var collisionData = PhysicsUtility.CalculateCollisionData(entityA, entityB, CompositeScaleEntities, ScaleEntities, TranslationEntities, ColliderEntities); var collisionDataSwapped = PhysicsUtility.SwapCollisionData(collisionData); var aIsGround = GroundTagEntities.HasComponent(entityA); var bIsGround = GroundTagEntities.HasComponent(entityB); if (PlayerTagEntities.HasComponent(entityA) && bIsGround) { PlayerWithGroundCollisionDatas.Add(collisionData); } else if (PlayerTagEntities.HasComponent(entityB) && aIsGround) { PlayerWithGroundCollisionDatas.Add(collisionDataSwapped); } else if ((EnemyTagEntities.HasComponent(entityA) || DeadEnemyTagEntities.HasComponent(entityA)) && (EnemyTagEntities.HasComponent(entityB) || DeadEnemyTagEntities.HasComponent(entityB))) { EnemyAndDeadEnemyCollisionDatas.Add(collisionData); } else if (PlayerTagEntities.HasComponent(entityA) && EnemyTagEntities.HasComponent(entityB)) { PlayerWithEnemyCollisionDatas.Add(collisionData); } else if (PlayerTagEntities.HasComponent(entityB) && EnemyTagEntities.HasComponent(entityA)) { PlayerWithEnemyCollisionDatas.Add(collisionDataSwapped); } else if (PlayerTagEntities.HasComponent(entityA) && ItemTagEntities.HasComponent(entityB)) { PlayerWithItemCollisionDatas.Add(collisionData); } else if (PlayerTagEntities.HasComponent(entityB) && ItemTagEntities.HasComponent(entityA)) { PlayerWithItemCollisionDatas.Add(collisionDataSwapped); } else if (PlayerBulletTagEntities.HasComponent(entityA) && GroundTagEntities.HasComponent(entityB)) { PlayerBulletWithGroundCollisionDatas.Add(collisionData); } else if (PlayerBulletTagEntities.HasComponent(entityB) && GroundTagEntities.HasComponent(entityA)) { PlayerBulletWithGroundCollisionDatas.Add(collisionDataSwapped); } else if (PlayerBulletTagEntities.HasComponent(entityA) && EnemyTagEntities.HasComponent(entityB)) { PlayerBulletWithEnemyCollisionDatas.Add(collisionData); } else if (PlayerBulletTagEntities.HasComponent(entityB) && EnemyTagEntities.HasComponent(entityA)) { PlayerBulletWithEnemyCollisionDatas.Add(collisionDataSwapped); } else if (SimpleMovementAbilityEntities.HasComponent(entityA) && bIsGround) { SimpleMovingObjectWithGroundCollisionDatas.Add(collisionData); } else if (SimpleMovementAbilityEntities.HasComponent(entityB) && aIsGround) { SimpleMovingObjectWithGroundCollisionDatas.Add(collisionDataSwapped); } }