using System; using System.Collections.Generic; using UnityEngine; namespace NBC { public abstract class FsmBaseState { protected TOwnerClass _owner; protected Fsm Root; public FsmTransmit Params = new FsmTransmit(); public abstract uint StateId { get; } public uint PrevState { get; set; } public uint NextState { get; set; } protected float EnterTime { get; set; } public void Init(TOwnerClass owner, Fsm fsm) { _owner = owner; Root = fsm; } public virtual void Transition(FsmBaseState source) { Enter(); } public void Enter() { EnterTime = Time.time; onEnter(); } protected virtual void onEnter() { } public void Exit() { onExit(); } protected virtual void onExit() { } public uint Update() { return onUpdate(); } protected virtual uint onUpdate() { return 0; } public uint FixedUpdate() { return onFixedUpdate(); } protected virtual uint onFixedUpdate() { return 0; } public void PreUpdate() { OnPreUpdate(); } protected virtual void OnPreUpdate() { } public uint LateUpdate() { return OnLateUpdate(); } protected virtual uint OnLateUpdate() { return 0; } } }