Beispiel #1
0
        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);
            }
        }