public BTreeNodePreconditionNOT(BTreeNodePrecondition _precondition) { if (_precondition == null) { Debugger.Log("BTreeNodePreconditionNOT is null"); } m_Precondition = _precondition; }
public BTreeNodeNonePrioritySelector(BTreeNode _parentNode, BTreeNodePrecondition _precondition = null) : base(_parentNode, _precondition) { }
public BTreeNodeCtrl(BTreeNode _parentNode, BTreeNodePrecondition _precondition = null) : base(_parentNode, _precondition) { }
public BTreeNodeLoop(BTreeNode _parentNode, BTreeNodePrecondition _precondition = null, int _loopCount = INFINITELOOP) : base(_parentNode, _precondition) { m_LoopCount = _loopCount; m_CurrentCount = 0; }
public BTreeNodeSequence(BTreeNode _parentNode, BTreeNodePrecondition _precondition = null) : base(_parentNode, _precondition) { }
public BTreeNodeAction(BTreeNode _parentNode, BTreeNodePrecondition _precondition = null) : base(_parentNode, _precondition) { m_IsAcitonNode = true; }
BTreeNodePrecondition DrawPrecondition(BTreeNodePrecondition _condition, int _space, ref int index) { index = index + 1; BTreeNodePrecondition result = null; if (_condition == null) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); m_Precondition[index] = EditorGUILayout.ObjectField("", m_Precondition[index], typeof(MonoScript), false); if (m_Precondition[index] != null) { Type type = GetPreconditionType(m_Precondition[index].name); if (type == null) { m_Precondition[index] = null; return(_condition); } result = (BTreeNodePrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { }); } GUILayout.EndHorizontal(); } else { m_Precondition[index] = null; GUILayout.BeginHorizontal(); GUILayout.Space(_space); string[] scripts = AssetDatabase.FindAssets("t:Script " + _condition.GetType().Name); if (scripts.Length > 0) { string path = AssetDatabase.GUIDToAssetPath(scripts[0]); MonoScript monoScript = (MonoScript)AssetDatabase.LoadAssetAtPath(path, typeof(MonoScript)); var obj = EditorGUILayout.ObjectField("", monoScript, typeof(MonoScript), false); Type type = GetPreconditionType(obj.name); if (type == null) { return(_condition); } result = (BTreeNodePrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { }); } GUILayout.EndHorizontal(); _space = _space + SPACEDETLE; BTreeNodePrecondition _lastPreCondition = _condition; if (result is BTreeNodePreconditionAND) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); int childCount = 0; if (_lastPreCondition is BTreeNodePreconditionAND) { BTreeNodePreconditionAND _lastCondAND = (BTreeNodePreconditionAND)_lastPreCondition; childCount = _lastCondAND.GetChildPreconditionCount(); } var val = EditorGUILayout.IntField(childCount); GUILayout.EndHorizontal(); if (_lastPreCondition is BTreeNodePreconditionAND) { BTreeNodePreconditionAND _lastCondAND = (BTreeNodePreconditionAND)_lastPreCondition; BTreeNodePrecondition[] childPreconditions = new BTreeNodePrecondition[val]; BTreeNodePrecondition[] curChildPreconditions = _lastCondAND.GetChildPrecondition(); for (int i = 0; i < val; i++) { BTreeNodePrecondition _cond = null; if (curChildPreconditions.Length >= i + 1) { _cond = curChildPreconditions[i]; } childPreconditions[i] = DrawPrecondition(_cond, _space, ref index); } ((BTreeNodePreconditionAND)result).SetChildPrecondition(childPreconditions); } else { BTreeNodePrecondition[] childPreconditions = new BTreeNodePrecondition[val]; for (int i = 0; i < val; i++) { childPreconditions[i] = DrawPrecondition(null, _space, ref index); } ((BTreeNodePreconditionAND)result).SetChildPrecondition(childPreconditions); } } else if (result is BTreeNodePreconditionOR) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); int childCount = 0; if (_lastPreCondition is BTreeNodePreconditionOR) { BTreeNodePreconditionOR _lastCondOR = (BTreeNodePreconditionOR)_lastPreCondition; childCount = _lastCondOR.GetChildPreconditionCount(); } var val = EditorGUILayout.IntField(childCount); GUILayout.EndHorizontal(); if (_lastPreCondition is BTreeNodePreconditionOR) { BTreeNodePreconditionOR _lastCondOR = (BTreeNodePreconditionOR)_lastPreCondition; BTreeNodePrecondition[] childPreconditions = new BTreeNodePrecondition[val]; BTreeNodePrecondition[] curChildPreconditions = _lastCondOR.GetChildPrecondition(); for (int i = 0; i < val; i++) { BTreeNodePrecondition _cond = null; if (curChildPreconditions.Length >= i + 1) { _cond = curChildPreconditions[i]; } childPreconditions[i] = DrawPrecondition(_cond, _space, ref index); } ((BTreeNodePreconditionOR)result).SetChildPrecondition(childPreconditions); } else { BTreeNodePrecondition[] childPreconditions = new BTreeNodePrecondition[val]; for (int i = 0; i < val; i++) { childPreconditions[i] = DrawPrecondition(null, _space, ref index); } ((BTreeNodePreconditionOR)result).SetChildPrecondition(childPreconditions); } } else if (result is BTreeNodePreconditionNOT) { BTreeNodePrecondition curChildPreconditions = null; if (_lastPreCondition is BTreeNodePreconditionNOT) { BTreeNodePreconditionNOT _lastCondNOT = (BTreeNodePreconditionNOT)_lastPreCondition; curChildPreconditions = _lastCondNOT.GetChildPrecondition(); } curChildPreconditions = DrawPrecondition(curChildPreconditions, _space, ref index); ((BTreeNodePreconditionNOT)result).SetChildPrecondition(curChildPreconditions); } } return(result); }
public void SetChildPrecondition(BTreeNodePrecondition _precondition) { m_Precondition = _precondition; }