// Use this for initialization void Awake() { DontDestroyOnLoad(gameObject); Debug.Log("FSMBehavior - Awake"); // TODO: add all initial constructors here foreach(string szType in _FSMConstructorTypes) { Type constructorType = Type.GetType(szType); if(constructorType != null) { if (constructorType.IsSubclassOf(typeof(IFSMConstructor))) { RetroFSM.AddConstructor(constructorType); } else { Debug.LogError(string.Format("Type \"{0}\" not derived IFSMConstructor type!", szType)); } } else { Debug.LogError(string.Format("Constructor Type \"{0}\" not found!", szType)); } } // build all constructors RetroFSM.Build(); // Start Library here because OnStart() needs to happen before OnEnable, and Start() doesnt RetroFSM.StartLibrary(); }
public override void Destroy() { Dictionary <string, StateInfo> FinalMachine = GenerateMachine(); foreach (KeyValuePair <string, StateInfo> pair in FinalMachine) { RetroFSM.Chapter(ChapterHash).RemoveState(pair.Value); } }
private string _FSMID = "FSMOverride"; // "FSMOverride" can be set to any ID we want void Start() { // We can start an FSM through the FSMBehavior by giving it a list of the FSMConstructors we created. // This will start the FSM when the game starts(useful for gameplay states e.g. splashscreen, main menu, gameplay, pause, etc) // OR we can manually start a new FSM through this function. This is helpful for when you want a bunch of gameobjects to share an FSM(e.g AI) RetroFSM.StartNewChapter <ExampleFSMOverrideConstructor>(_FSMID); // this is how we can get a handle to an FSM so we can change states _FSMOverride = RetroFSM.Chapter(_FSMID); }
public override void Build() { Dictionary <string, StateInfo> FinalMachine = GenerateMachine(); foreach (KeyValuePair <string, StateInfo> pair in FinalMachine) { RetroFSM.Chapter(ChapterHash).AddState(pair.Value); // check for default if (pair.Value.Attribute.IsDefault) { RetroFSM.Chapter(ChapterHash).SetDefaultState(pair.Value); } } }
void OnDestroy() { // this is how we stop an FSM RetroFSM.StopChapter <ExampleFSMOverrideConstructor>(_FSMID); }
void LateUpdate() { RetroFSM.LateUpdate(); }
// Update is called once per frame void Update() { RetroFSM.PriorityUpdate(); RetroFSM.Update(); }
void OnDisable() { Debug.Log("FSMBehavior - OnDisable"); RetroFSM.PauseLibrary(); }
void OnEnable() { Debug.Log("FSMBehavior - OnEnable"); RetroFSM.ResumeLibrary(); }
void OnDestroy() { Debug.Log("FSMBehavior - OnDestroy"); RetroFSM.StopLibrary(); }