void EditAlternateBehaviorData(AlternateBehaviorData alternateBehaviorData) { EditorGUILayout.LabelField ("--------------------------- Edit AlternateBehaviorData: " + alternateBehaviorData.Name); alternateBehaviorData.priority = EditorGUILayout.IntField (new GUIContent ("Priority (0=least priority):", ""), alternateBehaviorData.priority); string[] allBehaviorName = aiEditor.AI.Behaviors.Select (x => x.Name).ToArray (); alternateBehaviorData.NextBehaviorName = EditorCommon.EditPopup ("Next beahvior:", alternateBehaviorData.NextBehaviorName, allBehaviorName); EditConditionWrapper (alternateBehaviorData.AlternateCondition); }
void EditAlternateBehaviorData(AlternateBehaviorData alternateBehaviorData) { EditorGUILayout.LabelField("--------------------------- Edit AlternateBehaviorData: " + alternateBehaviorData.Name); alternateBehaviorData.priority = EditorGUILayout.IntField(new GUIContent("Priority (0=least priority):", ""), alternateBehaviorData.priority); string[] allBehaviorName = aiEditor.AI.Behaviors.Select(x => x.Name).ToArray(); alternateBehaviorData.NextBehaviorName = EditorCommon.EditPopup("Next beahvior:", alternateBehaviorData.NextBehaviorName, allBehaviorName); EditConditionWrapper(alternateBehaviorData.AlternateCondition); }
public void OnGUI() { if (aiBehavior == null || aiEditor == null) { EditorGUILayout.LabelField("No condition wrapper or AIEditor!!"); return; } EditorGUILayout.LabelField("Edit AlternateBehaviorData of Behavior:" + aiBehavior.Name); if (GUILayout.Button("Save")) { EditorUtility.SetDirty(aiEditor.AI); } ScrollPos = EditorGUILayout.BeginScrollView(ScrollPos, false, true, null); if (GUILayout.Button("Add AlternateBehaviorData")) { AlternateBehaviorData alternateBehaviorData = new AlternateBehaviorData(); aiBehavior.alternateBehaviorConditionArray = Util.AddToArray <AlternateBehaviorData> (alternateBehaviorData, aiBehavior.alternateBehaviorConditionArray); } for (int i = 0; i < aiBehavior.alternateBehaviorConditionArray.Length; i++) { AlternateBehaviorData alternateBehaviorData = aiBehavior.alternateBehaviorConditionArray [i]; EditorGUILayout.BeginHorizontal(); alternateBehaviorData.Name = EditorGUILayout.TextField("AlternateBehaviorData name:", alternateBehaviorData.Name); if (editableFlagDict.Keys.Contains(alternateBehaviorData.Name) == false) { editableFlagDict.Add(alternateBehaviorData.Name, false); } editableFlagDict [alternateBehaviorData.Name] = EditorGUILayout.Toggle("Enable:" + alternateBehaviorData.Name, editableFlagDict [alternateBehaviorData.Name]); EditorGUILayout.EndHorizontal(); if (editableFlagDict [alternateBehaviorData.Name]) { EditAlternateBehaviorData(alternateBehaviorData); if (GUILayout.Button("Remove AlternateBehaviorData:" + alternateBehaviorData.Name)) { aiBehavior.alternateBehaviorConditionArray = Util.CloneExcept <AlternateBehaviorData> (aiBehavior.alternateBehaviorConditionArray, alternateBehaviorData); } } } EditorGUILayout.EndScrollView(); }
public void OnGUI() { if (aiBehavior == null || aiEditor == null) { EditorGUILayout.LabelField ("No condition wrapper or AIEditor!!"); return; } EditorGUILayout.LabelField ("Edit AlternateBehaviorData of Behavior:" + aiBehavior.Name); if (GUILayout.Button ("Save")) { EditorUtility.SetDirty (aiEditor.AI); } ScrollPos = EditorGUILayout.BeginScrollView (ScrollPos, false, true, null); if (GUILayout.Button ("Add AlternateBehaviorData")) { AlternateBehaviorData alternateBehaviorData = new AlternateBehaviorData (); aiBehavior.alternateBehaviorConditionArray = Util.AddToArray<AlternateBehaviorData> (alternateBehaviorData, aiBehavior.alternateBehaviorConditionArray); } for (int i=0; i<aiBehavior.alternateBehaviorConditionArray.Length; i++) { AlternateBehaviorData alternateBehaviorData = aiBehavior.alternateBehaviorConditionArray [i]; EditorGUILayout.BeginHorizontal(); alternateBehaviorData.Name = EditorGUILayout.TextField("AlternateBehaviorData name:", alternateBehaviorData.Name); if (editableFlagDict.Keys.Contains (alternateBehaviorData.Name) == false) { editableFlagDict.Add (alternateBehaviorData.Name, false); } editableFlagDict [alternateBehaviorData.Name] = EditorGUILayout.Toggle("Enable:" + alternateBehaviorData.Name, editableFlagDict [alternateBehaviorData.Name]); EditorGUILayout.EndHorizontal(); if (editableFlagDict [alternateBehaviorData.Name]) { EditAlternateBehaviorData (alternateBehaviorData); if (GUILayout.Button ("Remove AlternateBehaviorData:" + alternateBehaviorData.Name)) { aiBehavior.alternateBehaviorConditionArray = Util.CloneExcept<AlternateBehaviorData> (aiBehavior.alternateBehaviorConditionArray, alternateBehaviorData); } } } EditorGUILayout.EndScrollView (); }
/// <summary> /// Scans the alternate behavior condition of the given behavior. /// Return true if one of the alternate behavior condition matches, and assign next behavior to behavior.NextBehavior varaible. /// </summary> public virtual bool CheckAlternateBehaviorCondition(AIBehavior behavior) { bool hasConditionMatched = false; behavior.NextBehaviorName = string.Empty; for (int i = 0; i < behavior.alternateBehaviorConditionArray.Length; i++) { AlternateBehaviorData alternateBehaviorData = behavior.alternateBehaviorConditionArray[i]; bool IsAlterBehaviorConditionMatched = CheckConditionWrapper(alternateBehaviorData.AlternateCondition, behavior); if (this.PrintDebugMessage) { Debug.Log("AlernateBehavior name:" + alternateBehaviorData.Name + " is matched:" + IsAlterBehaviorConditionMatched); } if (IsAlterBehaviorConditionMatched) { behavior.NextBehaviorName = alternateBehaviorData.NextBehaviorName; hasConditionMatched = true; // Debug.Log("At frame:" + Time.frameCount + " behavior:" + behavior.Name + " condition match at: " + alternateBehaviorData.Name + " alter to next behavior:" + alternateBehaviorData.NextBehaviorName); break; } } return(hasConditionMatched); }