public virtual void InitWithBehavior(UNBehaviorType bType, int priority = 0, UNBehaviorStateType bState = UNBehaviorStateType.Wait, UNBehaviorChangeStateCallBack cbBeforeBehaviorChange = null, UNBehaviorChangeStateCallBack cbAfterBehaviorChange = null) { Init(); AddWaitBehavior(bType, priority, bState, cbBeforeBehaviorChange, cbAfterBehaviorChange); }
public void AddWaitBehavior(UNBehaviorType bType, int priority = 0, UNBehaviorStateType bState = UNBehaviorStateType.Wait, UNBehaviorChangeStateCallBack cbBeforeChange = null, UNBehaviorChangeStateCallBack cbAfterChange = null) { m_cbsBeforeBehaviorChange.Add(cbBeforeChange); m_cbsAfterBehaviorChange.Add(cbAfterChange); AddWaitBehavior(UNBehavior.New(bType, priority, bState, m_cbsBeforeBehaviorChange, m_cbsAfterBehaviorChange)); }
public static UNBehavior New(UNBehaviorType bType, int priority = 0, UNBehaviorStateType bState = UNBehaviorStateType.Wait, UNList <UNBehaviorChangeStateCallBack> cbsBeforeChange = null, UNList <UNBehaviorChangeStateCallBack> cbsAfterChange = null) { var obj = New(); obj.ResetToBehavior(bType, priority, bState, cbsBeforeChange, cbsAfterChange); return(obj); }
public void ResetToBehavior(UNBehaviorType bType, int priority = 0, UNBehaviorStateType bState = UNBehaviorStateType.Wait, UNList <UNBehaviorChangeStateCallBack> cbsBeforeChange = null, UNList <UNBehaviorChangeStateCallBack> cbsAfterChange = null) { m_type = bType; m_priority = priority; m_curState = bState; m_cbsBeforeChange = cbsBeforeChange; m_cbsAfterChange = cbsAfterChange; Init(); }
public virtual void ChangeToState(UNBehaviorStateType state) { var oldState = m_curState; if (m_cbsBeforeChange != null) { for (int i = 0; i < m_cbsBeforeChange.Count; ++i) { m_cbsBeforeChange[i](m_type, oldState, state); } } m_stateCbs[state](); if (m_cbsAfterChange != null) { for (int i = 0; i < m_cbsAfterChange.Count; ++i) { m_cbsAfterChange[i](m_type, oldState, state); } } }
public void AddBehaviorImmediate(UNBehaviorType bType, int priority = 0, UNBehaviorStateType bState = UNBehaviorStateType.Wait, UNBehaviorChangeStateCallBack cbBeforeChange = null, UNBehaviorChangeStateCallBack cbAfterChange = null) { m_cbsBeforeBehaviorChange.Add(cbBeforeChange); m_cbsAfterBehaviorChange.Add(cbAfterChange); if (m_curBehavior.IsNull()) { m_curBehavior = UNBehavior.New(); m_curBehavior.ResetToBehavior(bType, priority, bState, m_cbsBeforeBehaviorChange, m_cbsAfterBehaviorChange); } else { m_curBehavior.ChangeToState(UNBehaviorStateType.Finish); m_curBehavior.ResetToBehavior(bType, priority, bState, m_cbsBeforeBehaviorChange, m_cbsAfterBehaviorChange); } m_curBehavior.ChangeToState(UNBehaviorStateType.Execute); }
protected void Finish() { m_curState = UNBehaviorStateType.Finish; }
protected void Execute() { m_curState = UNBehaviorStateType.Execute; }
protected void Wait() { m_curState = UNBehaviorStateType.Wait; }
public bool CanChangeToState(UNBehaviorStateType state) { return(m_stateCheckCbs[state]()); }