Beispiel #1
0
        public void Execute(int i)
        {
            var outerEntity = Entities[i];

            for (int j = i + 1; j < Colliders.Length; j++)
            {
                var innerEntity = Entities[j];

                if (PhysicsUtility.DoCirclesOverlap
                    (
                        Translations[i].Value, Colliders[i].Radius,
                        Translations[j].Value, Colliders[j].Radius,
                        OverlapError, out float overlapAmount
                    ))
                {
                    CommandBuffer.AppendToBuffer(i, outerEntity, new CollisionInfoElementData
                                                 (
                                                     innerEntity,
                                                     Translations[j].Value,
                                                     Colliders[j].Group,
                                                     overlapAmount,
                                                     math.normalize(Translations[i].Value - Translations[j].Value)
                                                 ));

                    CommandBuffer.AppendToBuffer(i, innerEntity, new CollisionInfoElementData
                                                 (
                                                     outerEntity,
                                                     Translations[i].Value,
                                                     Colliders[i].Group,
                                                     overlapAmount,
                                                     math.normalize(Translations[j].Value - Translations[i].Value)
                                                 ));

                    if (Colliders[i].Group == CollisionLayer.Obstacle ||
                        Colliders[j].Group == CollisionLayer.Obstacle ||
                        Colliders[j].Group == Colliders[i].Group)
                    {
                        CommandBuffer.AddComponent <HandleCollisionWithBounceTag>(i, outerEntity);
                        CommandBuffer.AddComponent <RigidbodyCollisionTag>(i, outerEntity);

                        CommandBuffer.AddComponent <HandleCollisionWithBounceTag>(i, innerEntity);
                        CommandBuffer.AddComponent <RigidbodyCollisionTag>(i, innerEntity);
                    }
                    else
                    {
                        CommandBuffer.AddComponent <HaveBattleTag>(i, outerEntity);
                        CommandBuffer.AddComponent <HaveBattleTag>(i, innerEntity);
                    }
                }
            }
        }
Beispiel #2
0
 public void Execute()
 {
     for (int index = 0; index < Colliders.Length; index++)
     {
         if (PhysicsUtility.DoCirclesOverlap
             (
                 Position, Radius,
                 Translations[index].Value, Colliders[index].Radius,
                 CollisionError, out _
             ))
         {
             IsSuitable[0] = false;
             return;
         }
     }
 }