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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
    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 ();
    }
Exemple #5
0
    /// <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);
    }