public void HandlePlayerBulletCollisions(PlayerBullet bullet) { // player hits itself from defelcted bullet if ((Player.Instance.BoundsContains(bullet) || bullet.BoundsContains(Player.Instance)) && bullet.Movement.Deflected == true) { Player.Instance.TakeDamage(bullet.Damage); bullet.IsDead = true; } HashSet <Component> collidedEnemies = GetObjectsCollided(bullet, typeof(Enemy)); HashSet <Component> collidedBullets = GetObjectsCollided(bullet, typeof(EnemyBullet)); //collision with enemy foreach (Enemy enemyObject in collidedEnemies) { if (enemyObject.IsDead) { continue; } enemyObject.TakeDamage(bullet.Damage); bullet.IsDead = true; } //collision with enemy bullets foreach (EnemyBullet enemyBullet in collidedBullets) { if (bullet.IsDead) { break; } else if (enemyBullet.IsDead) { continue; } HandleBulletCollision(bullet, enemyBullet); } if (bullet.IsDead) { Remove(bullet); } }