public void Tick() { foreach (Projectile projectile in Projectiles.ToList()) { foreach (IDestructible destructible in Destructibles.ToList()) { if (CheckCollision(projectile, destructible.Actor)) { if (destructible.IsDestructible && destructible.IsAlive) { switch (destructible.Actor) { case Enemy _ when projectile.Owner is Player: case Player _ when projectile.Owner is Enemy: case GameObject _: destructible.OnHit(); projectile.Dispose(); break; } } else if (destructible.StopsProjectile) { projectile.Dispose(); } } } } }