// Co-Routines
    IEnumerator SpawnRoutine()
    {
        bIsProduce = true;
        this.CalculateCooldown();
        while (bIsProduce)
        {
            yield return(new WaitForSeconds(fNextCooldown));

            if (SquadChildFSM.StateCount(SCState.Produce) != 0)
            {
                if (!this.CalculateCooldown())
                {
                    bIsProduce = false;
                }
                else
                {
                    SquadChildFSM.Spawn(transform.position);
                    mAnimate.ExpandContract(0.5f, 1, 1.3f);
                }
            }
            else
            {
                bIsProduce = false;
            }
        }
    }
 // Public Functions
 /// <summary>
 /// Spawns the squad captain
 /// </summary>
 /// <param name="_position"> The position in which the squad captain to spawn in </param>
 public bool Initialise(Vector3 _position)
 {
     transform.position = _position;
     this.Advance(PSState.Idle);
     SquadChildFSM.Spawn(_position);
     return(false);
 }