void Awake() { Fsm = new StateMachine <Enemy>(this); State <Enemy> state; switch (this.startState) { case StartState.Wander: state = new DumbWanderState(this, Fsm, 30.0f); break; case StartState.ReachGoal: state = new ReachGoalState(this, Fsm, target); break; default: state = new DumbWanderState(this, Fsm, 30.0f); break; } Fsm.InitialState(state); GroupPositions = new List <GameObject>(GroupMembers.Count); switch (this.formation) { case Formation.V: generatePositions(Formations.GetVFormation(this.transform.position, spread, GroupMembers.Count)); break; case Formation.Circle: generatePositions(Formations.GetCircleFormation(this.transform.position + spread * (new Vector3(1, 0, 0)), this.transform.position, new Vector3(0, 1, 0), GroupMembers.Count)); break; case Formation.Square: generatePositions(Formations.GetPolygonFormation(this.transform.position + spread * (new Vector3(1, 0, 0)), this.transform.position, new Vector3(0, 1, 0), 4, GroupMembers.Count)); break; case Formation.Triangle: generatePositions(Formations.GetPolygonFormation(this.transform.position + spread * (new Vector3(1, 0, 0)), this.transform.position, new Vector3(0, 1, 0), 3, GroupMembers.Count)); break; case Formation.Polygon: if (formationSideCount > 3) { generatePositions(Formations.GetPolygonFormation(this.transform.position + spread * (new Vector3(1, 0, 0)), this.transform.position, new Vector3(0, 1, 0), formationSideCount, GroupMembers.Count)); } break; } }