コード例 #1
0
        internal void DrawWorkspace(ref BehaviourTreeEditorPresenter.Model model)
        {
            GUILayout.BeginVertical();
            {
                DrawToolbar(ref model);

                GUILayout.BeginHorizontal();
                {
                    DrawNodeGraph();

                    if (bShowParameters)
                    {
                        EditorGUILayout.BeginVertical(GUILayout.Width(300));
                        {
                            DrawParameters();
                        }
                        EditorGUILayout.EndVertical();
                    }
                }
                GUILayout.EndHorizontal();

                Nodes.HandleEvents(this);

                DrawFooter(ref model);
            }
            EditorGUILayout.EndVertical();

            if (Nodes.WantsRepaint)
            {
                Repaint();
            }
        }
コード例 #2
0
        private void DrawFooter(ref BehaviourTreeEditorPresenter.Model model)
        {
            EditorGUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); // GUI.skin.box,
            {
                if (GUILayout.Button(model.AssetPath, EditorStyles.label))
                {
                    Selection.activeObject = model.TreeAsset;
                    EditorGUIUtility.PingObject(model.TreeAsset);
                }

                GUILayout.FlexibleSpace();
                GUILayout.Label($"<<{(Nodes.CurrentMouseMode != null ? Nodes.CurrentMouseMode.GetType().Name : "null")}>>");
                //GUILayout.Label($"{Nodes.ScrollPos} :: {Event.current.mousePosition} :: ");
                //GUILayout.Label($"{Nodes.ZoomLevel * 100:##.##}%");
                Nodes.ZoomLevel = GUILayout.HorizontalSlider(Nodes.ZoomLevel, 0.25f, 1, GUILayout.Width(64));
            }
            EditorGUILayout.EndHorizontal();
        }
コード例 #3
0
        internal void RecreateNodes(ref BehaviourTreeEditorPresenter.Model model)
        {
            if (NodeLookup != null)
            {
                NodeLookup.Clear();
            }
            else
            {
                NodeLookup = new Dictionary <BehaviourTreeNode, BehaviourTreeEditorNode>();
            }

            Nodes.ClearNodes();
            Nodes.ScrollPos = model.TreeAsset.EditorPos;

            foreach (var node in model.TreeAsset.Nodes)
            {
                var editorNode = new BehaviourTreeEditorNode(model.TreeAsset, node, Presenter);
                NodeLookup[node] = editorNode;
                Nodes.AddNode(editorNode);
            }

            foreach (var node in Nodes.AllNodes.Select(n => n as BehaviourTreeEditorNode))
            {
                if (node != null && node.TreeNode.IsParentNode())
                {
                    var childNodes = node.TreeNode.AsParentNode().GetChildNodes();
                    if (childNodes != null)
                    {
                        foreach (var childNode in childNodes)
                        {
                            var foundNode = NodeLookup[childNode];
                            if (GraphNode.CanMakeConnection(node, foundNode))
                            {
                                GraphNode.MakeConnection(node, foundNode);
                            }
                        }
                    }
                }
            }
        }
コード例 #4
0
        private void DrawToolbar(ref BehaviourTreeEditorPresenter.Model model)
        {
            EditorGUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true));
            {
                GUILayout.Label(model.TreeAsset.name);

                /*if (ExecuteInRuntime())
                 * {
                 *  GUI.color = Color.yellow;
                 *
                 *  EditorGUILayout.Separator();
                 *
                 *  GUILayout.Label("PLAYING : " + RuntimeController.name);
                 *
                 *  GUI.color = Color.white;
                 *
                 *  if (GUILayout.Button("select", EditorStyles.toolbarButton))
                 *  {
                 *      Selection.activeGameObject = RuntimeController.gameObject;
                 *  }
                 * }*/

                if (Presenter.NeedsRepair(model.AssetPath, model.TreeAsset))
                {
                    using (new EditorAreaUtils.GUIColor(Color.red))
                    {
                        EditorGUILayout.Separator();
                        GUILayout.Label("Optimizeable");
                    }
                }

                GUILayout.FlexibleSpace();

                bShowParameters = GUILayout.Toggle(bShowParameters, "Parameters", EditorStyles.toolbarButton);
            }
            EditorGUILayout.EndHorizontal();
        }