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