public void CheckCondition(GameObject outerObject) { int arrCount = MainLoop.GameObjectsArray.Count; GameObject obj; int i = 0; while (true && MainLoop.GameObjectsArray.Count != 0) { if (arrCount == i) { break; } obj = MainLoop.GameObjectsArray[i]; BaseEntity targetEntity = obj.Entity; if (obj.Entity == outerObject.Entity) { i++; continue; } // Console.WriteLine($"Starting to check... {FirstModelObject}, {targetEntity.GetType()}"); if (!ModelObject.Equals(targetEntity.GetType())) { i++; continue; } // Console.WriteLine("Type Success"); var distanse = Math.Sqrt(Math.Pow(Math.Abs(outerObject.Entity.XCoordinate - targetEntity.XCoordinate), 2) + Math.Pow(Math.Abs(outerObject.Entity.YCoordinate - targetEntity.YCoordinate), 2)); //Console.WriteLine($"Distance: {distanse}"); if (distanse - (outerObject.Entity.Radius + targetEntity.Radius) / 2 > 0) { i++; continue; } switch (Condition) { case DeadByConditionType.DEAD_BY_COLLISION: { outerObject.Entity.InvokeDeath(); targetEntity.InvokeDeath(); break; } case DeadByConditionType.IMMORTAL_DEAD_BY_COLLISION: { targetEntity.InvokeDeath(); break; } } i++; } }