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); } } } }
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(); }