public void HandleEnemyBulletCollisions(EnemyBullet bullet) { HashSet <Component> collidedBullets = GetObjectsCollided(bullet, typeof(EnemyBullet)); HashSet <Component> collidedEnemies = GetObjectsCollided(bullet, typeof(Enemy)); if (Player.Instance.BoundsContains(bullet) || bullet.BoundsContains(Player.Instance)) { Player.Instance.TakeDamage(bullet.Damage); bullet.IsDead = true; } // see if deflected bullet hits enemy bullet foreach (EnemyBullet go in collidedBullets) { if (bullet.IsDead) { break; } else if (go.IsDead || go == bullet) { continue; } if (bullet.Movement.Deflected) { HandleBulletCollision(bullet, go); } } // see if deflected enemy bullet hits an enemy foreach (Enemy go in collidedEnemies) { if (bullet.IsDead) { break; } else if (go.IsDead) { continue; } if (bullet.Movement.Deflected) { go.TakeDamage(bullet.Damage); bullet.IsDead = true; } } if (bullet.IsDead) { Remove(bullet); } }