public void NextTick() { foreach (var baseMapObject in MapObjects) { baseMapObject.NextTick(); } for (var i = 0; i < Interactables.Count; i++) { for (var j = i + 1; j < Interactables.Count; j++) { if (i == j) { continue; } if (Interactables[i].IsIntersect(Interactables[j])) { Interactables[i].Intersect(Interactables[j]); Interactables[j].Intersect(Interactables[i]); } } } var objectToRemove = MapObjects.Where(a => a.ObjectState == MapObjectState.RemovalCandidate).ToList(); foreach (var mapObject in objectToRemove) { RemoveMapObject(mapObject); } }