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);
            }
        }