using System.Collections.Generic; using UnityEngine; namespace Invector.vCharacterController.AI.FSMBehaviour { /// /// Message Object to FSM Debug Window /// public class vFSMDebugObject { public string message = string.Empty; public UnityEngine.Object sender; public vFSMDebugObject(string message, UnityEngine.Object sender = null) { if(!string.IsNullOrEmpty(message)) this.message = message; this.sender = sender; } } public partial interface vIFSMBehaviourController { Transform transform { get; } GameObject gameObject { get; } /// /// Use this to stop FSM Update /// bool isStopped { get; set; } /// /// Debug mode /// bool debugMode { get; set; } /// /// Debug Message List /// List debugList { get; } /// /// AI Controller that FSM will to control /// vIControlAI aiController { get; set; } /// /// of the FSMBehaviour /// vFSMBehaviour fsmBehaviour { get; set; } /// /// Any State of the FSM (state that makes updating independent of current) /// vFSMState anyState { get; } /// /// Last State of the FSM /// vFSMState lastState { get; } /// /// Current State of the FSM /// vFSMState currentState { get; } /// /// Retur index of current state /// int indexOffCurrentState { get; } /// /// Retur name of current state /// string nameOffCurrentState { get; } bool HasTimer(string key); void RemoveTimer(string key); /// /// Check if timer is greater than FSM timer /// /// timer /// float GetTimer(string key); /// /// Reset FSM timer to zero. Auto called for when change state /// void SetTimer(string key,float timer); /// /// Change State /// /// new state void ChangeState(vFSMState state); ///// ///// Change State using index of state in . If index dont exit,there will be no changes ///// ///// //void ChangeState(int stateIndex); ///// ///// Change State using name of state in . If name dont exit, ther will be no changes. ///// ///// name of the state in //void ChangeState(string stateName); void ChangeBehaviour(vFSMBehaviour behaviour); /// /// Start FSM Update /// void StartFSM(); /// /// Stop the FSM Update /// void StopFSM(); /// /// Send debug Message to FSM Debug Window /// /// Message /// Object sending message void SendDebug(string message, UnityEngine.Object sender = null); } }