예제 #1
0
 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);
 }
예제 #2
0
 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));
 }
예제 #3
0
    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);
    }
예제 #4
0
    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();
    }
예제 #5
0
 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);
 }
예제 #6
0
    public void AddBehaviorsTransRule(UNBehaviorType fromType, UNBehaviorType toType)
    {
        UNList <UNBehaviorType> fromList = null;

        if (m_behaviorsTransRules.ContainsKey(toType))
        {
            if (!m_behaviorsTransRules[toType].Contains(fromType))
            {
                fromList = m_behaviorsTransRules[toType];
            }
        }
        else
        {
            fromList = UNList <UNBehaviorType> .New();
        }
        if (fromList != null)
        {
            fromList.Add(fromType);
        }
        AddBehaviorsTransRule(fromList, toType);
    }
예제 #7
0
 public void AddBehaviorsTransRule(UNList <UNBehaviorType> fromTypes, UNBehaviorType toType)
 {
     m_behaviorsTransRules.Add(toType, fromTypes);
 }
예제 #8
0
 public void ReplaceBehavior(UNBehaviorType bType, int priority = 0)
 {
     ClearBehavior();
     AddWaitBehavior(bType, priority);
 }