public GameObject BeginEffect(GameConstants.EffectTypes effectType, Vector3 position, Vector3 lookAt)
    {
        GameObject effectObject = null;

        switch (effectType)
        {
        // Get First Child, set parent to gunport (to remove from respective pool)
        case GameConstants.EffectTypes.Implosion:
            effectObject = implosionEffectsPool.GetComponentInChildren <ImplosionScript>(true).gameObject;
            break;

        case GameConstants.EffectTypes.Explosion:
            effectObject = explosionEffectsPool.GetComponentInChildren <ExplosionScript>(true).gameObject;
            break;

        case GameConstants.EffectTypes.Ignition:
            effectObject = ignitionEffectsPool.GetComponentInChildren <IgnitionScript>(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;
        effectObject.transform.SetParent(worldEffects);
        effectObject.transform.position = new Vector3(position.x, position.y, position.z);
        effectObject.transform.up       = new Vector3(lookAt.x, lookAt.y, lookAt.z);

        effectObject.SetActive(true);

        switch (effectType)
        {
        // Get First Child, set parent to gunport (to remove from respective pool)
        case GameConstants.EffectTypes.Ignition:
            effectObject.GetComponent <IgnitionScript>().FadeIn();
            break;

        case GameConstants.EffectTypes.Explosion:
            effectObject.GetComponent <ExplosionScript>().FadeIn();
            break;

        case GameConstants.EffectTypes.Implosion:
            effectObject.GetComponent <ImplosionScript>().FadeIn();
            break;
        }

        return(effectObject);
    }
    public void ReturnEffectToPool(GameObject effectToStore, GameConstants.EffectTypes effectType)
    {
        if (effectType == GameConstants.EffectTypes.Ignition)
        {
            // Return to normal bullet pool
            effectToStore.transform.SetParent(ignitionEffectsPool);
        }
        else if (effectType == GameConstants.EffectTypes.Explosion)
        {
            // Return to shotgun bullet pool
            effectToStore.transform.SetParent(explosionEffectsPool);
        }
        else if (effectType == GameConstants.EffectTypes.Implosion)
        {
            // Return to laser bullet pool
            effectToStore.transform.SetParent(implosionEffectsPool);
        }

        effectToStore.gameObject.SetActive(false);
        effectToStore.transform.localScale = Vector3.one;
        effectToStore.transform.position   = Vector3.zero;
    }