示例#1
0
        public override void OnInspectorGUI()
        {
            string name = task.Name;

            BehaviorTreeEditorUtility.BeginInspectorGUI(ref name);
            if (name != task.Name)
            {
                task.Name = name;
                AssetDatabase.SaveAssets();
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Target Code", false))
            {
                BehaviorTreeEditorUtility.DrawTargetScript(OnSelected, serializedObject);
                if (task.targetScript != null && BehaviorTreeEditorUtility.DrawTargetMethod(task.targetScript.GetType(), typeof(System.IDisposable), typeof(IEnumerator), ref task.targetMethod))
                {
                    CheckMethod();
                    UpdateName();
                    UpdateComment();
                    BehaviorTreeEditor.RepaintAll();
                    AssetDatabase.SaveAssets();
                }
            }
            BehaviorTreeEditorUtility.EndInspectorGUI(node);
        }
示例#2
0
        public override void OnInspectorGUI()
        {
            string name = service.Name;

            BehaviorTreeEditorUtility.BeginInspectorGUI(ref name);
            if (name != service.Name)
            {
                service.Name = name;
                AssetDatabase.SaveAssets();
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Target Code", false))
            {
                BehaviorTreeEditorUtility.DrawTargetScript(OnSelected, serializedObject);
                if (service.targetScript != null && BehaviorTreeEditorUtility.DrawTargetMethod(service.targetScript.GetType(), typeof(void), ref service.targetMethod))
                {
                    UpdateName();
                    UpdateComment();
                    BehaviorTreeEditor.RepaintAll();
                    AssetDatabase.SaveAssets();
                    EditorGUILayout.Space();
                }
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Service", false))
            {
                DrawTick();
            }
            BehaviorTreeEditorUtility.EndInspectorGUI(service);
        }
示例#3
0
        public override void OnInspectorGUI()
        {
            string name = decorator.Name;

            BehaviorTreeEditorUtility.BeginInspectorGUI(ref name);
            if (name != decorator.Name)
            {
                decorator.Name = name;
                AssetDatabase.SaveAssets();
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Target Code", false))
            {
                BehaviorTreeEditorUtility.DrawTargetScript(OnSelected, serializedObject);
                if (decorator.targetScript != null && BehaviorTreeEditorUtility.DrawTargetMethod(decorator.targetScript.GetType(), typeof(bool), ref decorator.targetMethod))
                {
                    UpdateName("Decorator");
                    UpdateComment();
                    BehaviorTreeEditor.RepaintAll();
                    AssetDatabase.SaveAssets();
                    EditorGUILayout.Space();
                }
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Key Query", false))
            {
                DrawInverseCondition();
            }
            GUILayout.Space(7f);
            if (BehaviorTreeEditorUtility.DrawHeader("Observer Aborts", false))
            {
                DrawTick();
            }
            BehaviorTreeEditorUtility.EndInspectorGUI(decorator);
        }
示例#4
0
 public static void Open()
 {
     BTEditorWindow = GetWindow <BehaviorTreeEditor>();
     BTEditorWindow.Init();
     BTEditorWindow.maxSize = new Vector2(1920, 1080);
     BTEditorWindow.minSize = new Vector2(1600, 900);
     BehaviorTreeEditorSettings.Instance.Load();
     BehaviorTreeEditorSettings.Instance.Init();
 }
示例#5
0
 public static void Open()
 {
     BTEditorWindow = GetWindow<BehaviorTreeEditor>();
     BTEditorWindow.Init();
     BTEditorWindow.maxSize = new Vector2(1920, 1080);
     BTEditorWindow.minSize = new Vector2(1600, 900);
     BehaviorTreeEditorSettings.Instance.Load();
     BehaviorTreeEditorSettings.Instance.Init();
 }
示例#6
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("打开调试器"))
        {
            BehaviorTreeEditor.ShowWindow(Agent);
        }
    }
示例#7
0
 public void OnDoubleClick(string guid, Rect rect)
 {
     if (Event.current.type == EventType.MouseDown &&
         Event.current.clickCount == 2 &&
         rect.Contains(Event.current.mousePosition))
     {
         BehaviorTreeEditor.ShowEditorWindow();
         BehaviorTreeEditor.SelectBehaviorTrees(target as BehaviorTree);
     }
 }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        serializedObject.Update();
        //EditorGUILayout.PropertyField(rootnode);

        if (rootnode.objectReferenceValue == null && GUILayout.Button("Create RootNode"))
        {
            string path       = "";
            var    scriptable = ScriptableObject.CreateInstance <RootNode>();

            string name = target.name;
            bool   find = false;
            foreach (string s in AssetDatabase.GetSubFolders("Assets/Project/BehaviorTree"))
            {
                if (s.Contains(name))
                {
                    find = true;
                    break;
                }
            }

            if (!find)
            {
                Debug.Log("Create");
                path = AssetDatabase.CreateFolder("Assets/Project/BehaviorTree", name);
                path = AssetDatabase.GUIDToAssetPath(path);
            }
            else
            {
                Debug.Log("default");
                path = "Assets/Project/BehaviorTree/" + name;
            }

            rootnode.objectReferenceValue = scriptable;
            scriptable.m_RootNode         = scriptable;
            AssetDatabase.CreateAsset(scriptable, path + "/BehaviorTreeNode.asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            serializedObject.ApplyModifiedProperties();
        }
        else if (rootnode.objectReferenceValue != null && GUILayout.Button("BehaviorTree Open"))
        {
            BehaviorTreeEditor window = (BehaviorTreeEditor)EditorWindow.GetWindow(typeof(BehaviorTreeEditor));
            window.Show();
            window.m_RootProperty = (ScriptableObject)rootnode.objectReferenceValue;
        }

        serializedObject.ApplyModifiedProperties();
    }
示例#9
0
        private void DrawTick()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Space(7f);
            float tick = EditorGUILayout.FloatField("Interval", service.tick);

            if (tick != service.tick)
            {
                if (tick <= 0)
                {
                    tick = 0.1f;
                }
                service.tick = tick;
                BehaviorTreeEditorUtility.UpdateComment <Service>(service);
                BehaviorTreeEditor.RepaintAll();
                AssetDatabase.SaveAssets();
            }
            GUILayout.EndHorizontal();
        }
示例#10
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        serializedObject.Update();

        if (GUILayout.Button("BehaviorTree Open"))
        {
            BehaviorTreeEditor window = (BehaviorTreeEditor)EditorWindow.GetWindow(typeof(BehaviorTreeEditor));
            window.Show();
            window.m_RootProperty = (ScriptableObject)target;
        }

        if (GUILayout.Button("Refresh"))
        {
            RootNode root = serializedObject.targetObject as RootNode;
            EditorUtility.SetDirty(root);
            root.m_ListActionNode.Clear();
            RefreshChild(root, root);
        }

        serializedObject.ApplyModifiedProperties();
    }
    static public void ShowWindow()
    {
        BehaviorTreeEditor window = (BehaviorTreeEditor)EditorWindow.GetWindow(typeof(BehaviorTreeEditor));

        window.minSize = new Vector2(600, 600);
    }
示例#12
0
 protected void OnChanged()
 {
     BehaviorTreeEditorUtility.UpdateComment <Decorator>(decorator);
     BehaviorTreeEditor.RepaintAll();
     AssetDatabase.SaveAssets();
 }