public GameObject getPoolObject(POOL_OBJECT_TYPE type)
    {
        List <GameObject> effectList = null;

        switch (type)
        {
        case POOL_OBJECT_TYPE.FireEXplosionParticle:
            effectList = basicFireExplosionParticlesList;
            break;

        case POOL_OBJECT_TYPE.DroneExplosion:
            effectList = basicDroneExplosionList;
            break;

        case POOL_OBJECT_TYPE.HitBasicParticle:
            effectList = bulletHitBasicParticleList;
            break;

        case POOL_OBJECT_TYPE.BasicProjectile:
            effectList = basicProjectilesList;
            break;

        case POOL_OBJECT_TYPE.ElectricParticleEffect:
            effectList = electricParticleEffectList;
            break;

        default:
            effectList = null;
            break;

        case POOL_OBJECT_TYPE.SmokeEffect:
            effectList = smokeEffectList;
            break;

        case POOL_OBJECT_TYPE.RifleAmmo:
            effectList = rifleAmmoList;
            break;

        case POOL_OBJECT_TYPE.PistolAmmo:
            effectList = pistolAmmoList;
            break;
        }

        foreach (GameObject projectile in effectList)
        {
            if (!projectile.activeInHierarchy)
            {
                return(projectile);
            }
        }

        return(null);
    }
    private void initalziePool(POOL_OBJECT_TYPE typeofEffect)
    {
        string            resourcePath = "";
        List <GameObject> effectList   = null;
        int count = 0;

        switch (typeofEffect)
        {
        case POOL_OBJECT_TYPE.FireEXplosionParticle:
            resourcePath = "ParticleEffects/Explosion_fire";
            count        = maxExplosions;
            basicFireExplosionParticlesList = new List <GameObject>();
            effectList = basicFireExplosionParticlesList;
            break;

        case POOL_OBJECT_TYPE.DroneExplosion:
            resourcePath            = "Explosions/BasicDroneExplosion";
            count                   = donreExplosions;
            basicDroneExplosionList = new List <GameObject>();
            effectList              = basicDroneExplosionList;
            break;

        case POOL_OBJECT_TYPE.HitBasicParticle:
            count        = maxExplosions;
            resourcePath = "ParticleEffects/BulletHitBasicParticle";
            bulletHitBasicParticleList = new List <GameObject>();
            effectList = bulletHitBasicParticleList;
            break;

        case POOL_OBJECT_TYPE.BasicProjectile:
            count                = maxBulletCount;
            resourcePath         = "Prefab/LaserBeamProjectile";
            basicProjectilesList = new List <GameObject>();
            effectList           = basicProjectilesList;
            break;

        case POOL_OBJECT_TYPE.ElectricParticleEffect:
            count        = maxExplosions;
            resourcePath = "ParticleEffects/ElectricShock";
            electricParticleEffectList = new List <GameObject>();
            effectList = electricParticleEffectList;
            break;

        case POOL_OBJECT_TYPE.SmokeEffect:
            count           = maxExplosions;
            resourcePath    = "ParticleEffects/SmokeParticleEffect";
            smokeEffectList = new List <GameObject>();
            effectList      = smokeEffectList;
            break;

        case POOL_OBJECT_TYPE.RifleAmmo:
            count         = ammoCount;
            resourcePath  = "Drops/Rifle_Mag";
            rifleAmmoList = new List <GameObject>();
            effectList    = rifleAmmoList;
            break;

        case POOL_OBJECT_TYPE.PistolAmmo:
            count          = ammoCount;
            resourcePath   = "Drops/Pistol_Mag";
            pistolAmmoList = new List <GameObject>();
            effectList     = pistolAmmoList;
            break;
        }

        GameObject bulletHitBasicParticlePrefab = Resources.Load <GameObject>(resourcePath);

        for (int i = 0; i < count; i++)
        {
            GameObject bulletHitParticle = GameObject.Instantiate(bulletHitBasicParticlePrefab);
            bulletHitParticle.transform.parent = this.transform;
            bulletHitParticle.SetActive(false);
            effectList.Add(bulletHitParticle);
        }
    }