void Start() { //Load the states and transitions into the FSMLoader loader = GetComponent <FSMLoader>() as FSMLoader; loader.InitialiseLoader(); //Store references to commonly used components motorActions = GetComponent <AIMotorActions>() as AIMotorActions; conditionChecker = GetComponent <AIConditionChecker> () as AIConditionChecker; parentTransform = this.transform.parent; //Instantiate the root FSM GameObject FSMObject = Instantiate(FSMPrefab, parentTransform.position, parentTransform.rotation); FSMObject.transform.SetParent(this.transform.parent); rootFSM = FSMObject.GetComponent <FSM> () as FSM; rootFSM.InitialiseFSM(loader.GetStartingStateName(), loader, motorActions, conditionChecker, parentTransform); }
public void InitialiseFSM(string startingState, FSMLoader load, AIMotorActions aiM, AIConditionChecker aiC, Transform parentT) { loader = load; activeState = loader.GetState(startingState); motorActions = aiM; conditionChecker = aiC; parentTransform = parentT; fsmCounter = new FSMCounter(); fsmCounter.timer = 0f; fsmCounter.frames = 0; if (activeState.GetAction() == Action.RUN_SUB_FSM) { SpawnFSMStartingWithState(activeState.GetStartingSubstate()); } }