public GameObject GetBullet(GameConstants.GunTypes gunType, Transform gunPort)
    {
        GameObject bulletObject = null;

        // Get Bullet From pool and return it
        switch (gunType)
        {
        // Get First Child, set parent to gunport (to remove from respective pool)
        case GameConstants.GunTypes.MachineGun:
            bulletObject = unusedBulletPool.GetComponentInChildren <BulletScript>(true).gameObject;
            break;

        case GameConstants.GunTypes.ShotGun:
            bulletObject = unusedShotgunBulletPool.GetComponentInChildren <ShotgunBulletScript>(true).gameObject;
            break;

        case GameConstants.GunTypes.LaserGun:
            bulletObject = unusedLaserBulletPool.GetComponentInChildren <LaserBulletScript>(true).gameObject;
            break;
        }

        bulletObject.transform.SetParent(worldBullets);
        bulletObject.transform.position = gunPort.transform.position;
        // Return bullet and let GunPort handle how to fire and set initial velocities
        return(bulletObject);
    }
 // Returning Normal Bullet to pool
 public void ReturnBulletToPool(GameObject bulletToStore, GameConstants.GunTypes bulletType)
 {
     if (bulletType == GameConstants.GunTypes.MachineGun)
     {
         // Return to normal bullet pool
         bulletToStore.transform.SetParent(unusedBulletPool);
     }
     else if (bulletType == GameConstants.GunTypes.ShotGun)
     {
         // Return to shotgun bullet pool
         bulletToStore.transform.SetParent(unusedShotgunBulletPool);
     }
     else if (bulletType == GameConstants.GunTypes.LaserGun)
     {
         // Return to laser bullet pool
         bulletToStore.transform.SetParent(unusedLaserBulletPool);
     }
     bulletToStore.gameObject.SetActive(false);
     bulletToStore.transform.localScale = Vector3.one;
     bulletToStore.transform.position   = Vector3.zero;
 }