Пример #1
0
 public virtual void DrawLinks(Vector2 scrollPos, NodeMonitor monitor)
 {
     if (sockets != null)
     {
         foreach (var outputSocket in sockets.GetSockets(SocketIO.OUTPUT))
         {
             if (outputSocket.connectedTo != null)
             {
                 var inputSocket = (outputSocket.connectedTo as NodeEditor).GetSocketDimension(SocketIO.INPUT, 0);
                 TreeEditor.DrawLinkBetweenDots(outputSocket.GetGlobalDimension(window).center, inputSocket.center,
                                                monitor != null && monitor.InSequence(outputSocket.connectedTo) ? Sockets.COLOR_RUNNING : Sockets.COLOR_LINK);
             }
         }
     }
 }
Пример #2
0
                private void DrawGUI()
                {
                    GUILayout.BeginHorizontal();
                    scrollPos = EditorGUILayout.BeginScrollView(scrollPos, true, true);

                    GUILayout.BeginHorizontal();
                    GUILayout.Space(pan.width);
                    GUILayout.EndHorizontal();

                    GUILayout.BeginVertical();
                    GUILayout.Space(pan.height);
                    GUILayout.EndVertical();

                    DrawGrid(20, 0.2f, Color.gray);
                    DrawGrid(100, 0.5f, Color.gray);
                    BeginWindows();

                    //CheckIsAllTextureLoaded();
                    if (nodes == null)
                    {
                        LoadAiFromFile(behaviourPath);
                        Debug.Log("Reload nodes");
                    }

                    for (int i = 0; i < nodes.Count; i++)
                    {
                        var node = (nodes[i] as NodeEditor);
                        if (node != null)
                        {
                            Texture2D texture;
                            try
                            {
                                texture = textureIcons[GetBaseType(node.GetType())];
                            }
                            finally
                            {
                                LoadStyle();
                                texture = textureIcons[GetBaseType(node.GetType())];
                            }

                            var textureRun    = textureIconsRun[GetBaseType(node.GetType())];
                            var textureFailed = textureIconsFailed[GetBaseType(node.GetType())];

                            if (mode.Equals(Mode.EDIT) && grabPos == Vector2.zero)
                            {
                                node.SetPosition(GUI.Window(i, ZoomWindow(node.GetWindow(), zoom), Draw, texture /*node.GetTitle()*/, skin.window).position);
                            }
                            else
                            {
                                /*var last = node.GetLastReturn();
                                 * if (last.Equals(ENodeState.FAILURE))
                                 * {
                                 *  GUI.Window(i, ZoomWindow(node.GetWindow(), zoom), Draw, textureFailed, skin.window);
                                 * }
                                 * else
                                 * {*/
                                if (monitor.InSequence(node))
                                {
                                    GUI.Window(i, ZoomWindow(node.GetWindow(), zoom), Draw, textureRun, skin.window);
                                }
                                else
                                {
                                    GUI.Window(i, ZoomWindow(node.GetWindow(), zoom), Draw, texture, skin.window);
                                }
                                //}
                            }
                            node.DrawLinks(scrollPos, monitor);
                        }
                    }
                    EndWindows();
                    EditorGUILayout.EndScrollView();

                    GUILayout.BeginVertical();
                    selectedToolbar = GUILayout.SelectionGrid(-1, TOOLBAR_BUTTONS, 1, GUILayout.MinWidth(WIDTH_PANEL), GUILayout.MaxWidth(WIDTH_PANEL));

                    if (behaviourPath != string.Empty)
                    {
                        GUILayout.Label("Ai: " + behaviourPath.Split('/').ToList().Last(), GUILayout.MaxWidth(WIDTH_PANEL));
                    }
                    GUILayout.Space(8f);

                    DrawZoomComponent();

                    if (fromNode != null)
                    {
                        GUILayout.Label("Node: " + fromNode.GetTitle(), GUILayout.MaxWidth(WIDTH_PANEL));

                        if (typeof(LeafEditor).Equals(fromNode.GetType()))
                        {
                            var leaf = fromNode as LeafEditor;

                            DrawPanelForLeaf(leaf);
                        }
                        else if (typeof(RootEditor).Equals(fromNode.GetType()))
                        {
                            var context = (fromNode as RootEditor).GetContext();
                            if (context != null)
                            {
                                foreach (var pair in context.Get())
                                {
                                    GUILayout.Label("Key: " + pair.Key, GUILayout.MaxWidth(WIDTH_PANEL));
                                    GUILayout.Label("Type: " + pair.GetType(), GUILayout.MaxWidth(WIDTH_PANEL));

                                    GUILayout.TextField(pair.Value.ToString(), GUILayout.MaxWidth(WIDTH_PANEL));
                                }
                            }
                        }
                        else if (typeof(ParallelEditor).Equals(fromNode.GetType()) ||
                                 typeof(ParallelRunningEditor).Equals(fromNode.GetType()))
                        {
                            var composite = fromNode as ParallelEditor;

                            GUILayout.Label("Name: ", GUILayout.MaxWidth(WIDTH_PANEL));
                            composite.SetName(GUILayout.TextField(composite.GetName(), GUILayout.MaxWidth(WIDTH_PANEL)));

                            GUILayout.Label("Request to Fail", GUILayout.MaxWidth(WIDTH_PANEL));
                            composite.SetReqFail(EditorGUILayout.IntField(composite.GetReqFail(), GUILayout.MaxWidth(WIDTH_PANEL_SECONDARY_NUMFIELD)));

                            GUILayout.Label("Request to Success", GUILayout.MaxWidth(WIDTH_PANEL));
                            composite.SetReqSuccess(EditorGUILayout.IntField(composite.GetReqSuccess(), GUILayout.MaxWidth(WIDTH_PANEL_SECONDARY_NUMFIELD)));
                        }
                        else if (typeof(CompositeEditor).Equals(fromNode.GetType().BaseType))
                        {
                            var composite = fromNode as CompositeEditor;

                            GUILayout.Label("Name: ", GUILayout.MaxWidth(WIDTH_PANEL));
                            composite.SetName(GUILayout.TextField(composite.GetName(), GUILayout.MaxWidth(WIDTH_PANEL)));
                        }



                        if (mode.Equals(Mode.DEBUG))
                        {
                            GUILayout.Space(8f);

                            GUILayout.Label("---------------DEBUG----------------", GUILayout.MaxWidth(WIDTH_PANEL));
                            var lastReturn  = fromNode.GetLastReturn();
                            var returnCount = fromNode.GetCountReturn();

                            foreach (var pair in returnCount)
                            {
                                GUILayout.Label(pair.Key.ToString() + "", GUILayout.MaxWidth(WIDTH_PANEL));

                                GUILayout.TextField(pair.Value + "", GUILayout.MaxWidth(WIDTH_PANEL));
                            }

                            GUILayout.Label("Last return:", GUILayout.MaxWidth(WIDTH_PANEL));
                            GUILayout.TextField(lastReturn.ToString(), GUILayout.MaxWidth(WIDTH_PANEL));
                            GUILayout.Label("Ticks:", GUILayout.MaxWidth(WIDTH_PANEL));
                            GUILayout.TextField(fromNode.GetTicks() + "", GUILayout.MaxWidth(WIDTH_PANEL));
                        }
                    }

                    GUILayout.EndVertical();

                    GUILayout.EndHorizontal();
                }