Пример #1
0
        public static ActionPopupWindow ShowWindow(Vector2 pos, Action onGUI,
                                                   Action onGUITop, Action onGUIBottom, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            if (onGUI != null)
            {
                window.onGUI = delegate(ref object obj) { onGUI(); }
            }
            ;
            if (onGUITop != null)
            {
                window.onGUITop = delegate(ref object obj) { onGUITop(); }
            }
            ;
            if (onGUIBottom != null)
            {
                window.onGUIBottom = delegate(ref object obj) { onGUIBottom(); }
            }
            ;
            window.width  = width;
            window.height = height;
            window.Init(pos);
            return(window);
        }
Пример #2
0
        public virtual void Initialize(UGraphView owner, TransitionEvent transition)
        {
            this.transition = transition;
            AddToClassList("transition");
            this.AddStyleSheet("uNodeStyles/NativeNodeStyle");
            this.AddStyleSheet(UIElementUtility.Theme.nodeStyle);
            Initialize(owner);
            ReloadView();

            border.style.overflow = Overflow.Visible;

            titleIcon.RemoveFromHierarchy();
            m_CollapseButton.RemoveFromHierarchy();

            RegisterCallback <MouseDownEvent>((e) => {
                if (e.button == 0 && e.clickCount == 2)
                {
                    ActionPopupWindow.ShowWindow(owner.GetTopMousePosition(e), transition.Name,
                                                 (ref object obj) => {
                        object str = EditorGUILayout.TextField(obj as string);
                        if (obj != str)
                        {
                            obj             = str;
                            transition.Name = obj as string;
                            if (GUI.changed)
                            {
                                uNodeGUIUtility.GUIChanged(transition);
                            }
                        }
                    }).headerName = "Edit name";
                }
            });
        }
Пример #3
0
        public override void Initialize(UGraphView owner, NodeComponent node)
        {
            this.owner = owner;
            targetNode = node;
            title      = targetNode.GetNodeName();
            titleButtonContainer.RemoveFromHierarchy();
            this.AddStyleSheet("uNodeStyles/NativeRegionStyle");
            var border = this.Q("node-border");

            border.style.overflow = Overflow.Visible;
            horizontalDivider     = border.Q("contents").Q("divider");

            comment = new Label(node.comment);
            inputContainer.Add(comment);

            titleContainer.RegisterCallback <MouseDownEvent>((e) => {
                if (e.clickCount == 2 && e.button == 0)
                {
                    ActionPopupWindow.ShowWindow(Vector2.zero, node.gameObject.name,
                                                 (ref object obj) => {
                        object str = EditorGUILayout.TextField(obj as string);
                        if (obj != str)
                        {
                            obj = str;
                            node.gameObject.name = obj as string;
                            if (GUI.changed)
                            {
                                uNodeGUIUtility.GUIChanged(node);
                            }
                        }
                    }).ChangePosition(owner.GetTopMousePosition(e)).headerName = "Rename title";
                }
            });
            RegisterCallback <MouseDownEvent>((e) => {
                if (e.button == 0)
                {
                    nodes = new List <NodeComponent>(owner.graph.nodes);
                    if (owner.graph.eventNodes != null)
                    {
                        foreach (var c in owner.graph.eventNodes)
                        {
                            if (c != null)
                            {
                                nodes.Add(c);
                            }
                        }
                    }
                    nodes.RemoveAll((n) => n == null || !targetNode.editorRect.Contains(new Vector2(n.editorRect.x + (n.editorRect.width * 0.5f), n.editorRect.y + (n.editorRect.height * 0.5f))));
                }
            });

            Add(new ResizableElement());
            this.SetSize(new Vector2(node.editorRect.width, node.editorRect.height));
            Teleport(targetNode.editorRect);
            ReloadView();
            RefreshPorts();
        }
Пример #4
0
        public static ActionPopupWindow ShowWindow(Rect rect, object startValue, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            window.variable = startValue;
            window.width    = width;
            window.height   = height;
            window.Init(rect);
            return(window);
        }
Пример #5
0
        public override void Initialize(UGraphView owner, NodeComponent node)
        {
            this.owner      = owner;
            this.targetNode = node;
            title           = targetNode.GetNodeName();
            titleButtonContainer.RemoveFromHierarchy();

            this.AddStyleSheet("uNodeStyles/NativeStickyNote");
            AddToClassList("sticky-note");

            comment = new Label(node.comment);
            inputContainer.Add(comment);
            elementTypeColor = Color.yellow;

            titleContainer.RegisterCallback <MouseDownEvent>((e) => {
                if (e.clickCount == 2)
                {
                    ActionPopupWindow.ShowWindow(Vector2.zero, node.gameObject.name,
                                                 (ref object obj) => {
                        object str = EditorGUILayout.TextField(obj as string);
                        if (obj != str)
                        {
                            obj = str;
                            node.gameObject.name = obj as string;
                            if (GUI.changed)
                            {
                                uNodeGUIUtility.GUIChanged(node);
                            }
                        }
                    }).ChangePosition(owner.GetTopMousePosition(e)).headerName = "Rename title";
                }
            });
            comment.RegisterCallback <MouseDownEvent>((e) => {
                if (e.clickCount == 2)
                {
                    ActionPopupWindow.ShowWindow(Vector2.zero, node.comment,
                                                 (ref object obj) => {
                        object str = EditorGUILayout.TextArea(obj as string);
                        if (obj != str)
                        {
                            obj          = str;
                            node.comment = obj as string;
                            if (GUI.changed)
                            {
                                uNodeGUIUtility.GUIChanged(node);
                            }
                        }
                    }, 300, 200).ChangePosition(owner.GetTopMousePosition(e)).headerName = "Edit description";
                }
            });

            //this.SetSize(new Vector2(node.editorRect.width, node.editorRect.height));
            SetPosition(targetNode.editorRect);
            RefreshPorts();
        }
Пример #6
0
        public static ActionPopupWindow ShowWindow(Vector2 pos, object startValue, ActionRef <object> onGUI, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            window.variable = startValue;
            window.onGUI    = onGUI;
            window.width    = width;
            window.height   = height;
            window.Init(pos);
            return(window);
        }
Пример #7
0
        void OnClick(MouseUpEvent mouseDownEvent)
        {
            var val  = config.value;
            var mPos = mouseDownEvent.mousePosition;

            if (UnityEditor.EditorWindow.focusedWindow != null)
            {
                mPos = (mouseDownEvent.currentTarget as VisualElement).GetScreenMousePosition(
                    mouseDownEvent.localMousePosition,
                    UnityEditor.EditorWindow.focusedWindow);
            }
            if (config.filter.OnlyGetType)
            {
                if (config.filter.CanManipulateArray())
                {
                    TypeSelectorWindow.ShowWindow(Vector2.zero, config.filter, delegate(MemberData[] types) {
                        config.value = types[0];
                        config.OnValueChanged(config.value);
                        config.owner.OnValueChanged();
                        config.owner.MarkRepaint();
                    }, new TypeItem[1] {
                        val as MemberData
                    }).ChangePosition(mPos);
                }
                else
                {
                    ItemSelector.ShowWindow(null, val as MemberData, config.filter, (m) => {
                        config.value = m;
                        config.OnValueChanged(m);
                        config.owner.OnValueChanged();
                        config.owner.MarkRepaint();
                    }).ChangePosition(mPos);
                }
            }
            else
            {
                ActionPopupWindow.ShowWindow(Vector2.zero, () => {
                    uNodeGUIUtility.EditValueLayouted(GUIContent.none, val, config.type, (obj) => {
                        config.owner.RegisterUndo();
                        val = obj;
                        config.OnValueChanged(obj);
                        config.owner.MarkRepaint();
                    }, new uNodeUtility.EditValueSettings()
                    {
                        attributes  = new object[] { config.filter },
                        unityObject = config.owner.targetNode
                    });
                }, 300, 300).ChangePosition(mPos);
            }
        }
Пример #8
0
        public static ActionPopupWindow ShowWindow(Rect rect, object startValue, ActionRef <object> onGUI,
                                                   ActionRef <object> onGUITop, ActionRef <object> onGUIBottom, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            window.variable    = startValue;
            window.onGUI       = onGUI;
            window.onGUITop    = onGUITop;
            window.onGUIBottom = onGUIBottom;
            window.width       = width;
            window.height      = height;
            window.Init(rect);
            return(window);
        }
Пример #9
0
        public static ActionPopupWindow ShowWindow(Rect rect, Action onGUI, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            if (onGUI != null)
            {
                window.onGUI = delegate(ref object obj) { onGUI(); }
            }
            ;
            window.width  = width;
            window.height = height;
            window.Init(rect);
            return(window);
        }
Пример #10
0
 private void Inspect(TreeViewItem treeView, Vector2 position)
 {
     if (treeView is HierarchyNodeTree nodeTree)
     {
         ActionPopupWindow.ShowWindow(Vector2.zero, () => {
             CustomInspector.ShowInspector(new GraphEditorData(graph)
             {
                 selected = nodeTree.node
             });
         }, 300, 300).ChangePosition(position);
     }
     else if (treeView is HierarchyFunctionTree functionTree)
     {
         ActionPopupWindow.ShowWindow(Vector2.zero, () => {
             CustomInspector.ShowInspector(new GraphEditorData(graph)
             {
                 selected = functionTree.function
             });
         }, 300, 300).ChangePosition(position);
     }
     else if (treeView is HierarchyPropertyTree propertyTree)
     {
         ActionPopupWindow.ShowWindow(Vector2.zero, () => {
             CustomInspector.ShowInspector(new GraphEditorData(graph)
             {
                 selected = propertyTree.property
             });
         }, 300, 300).ChangePosition(position);
     }
     else if (treeView is HierarchyVariableTree variableTree)
     {
         ActionPopupWindow.ShowWindow(Vector2.zero, () => {
             CustomInspector.ShowInspector(new GraphEditorData(graph)
             {
                 selected = variableTree.variable
             });
         }, 300, 300).ChangePosition(position);
     }
 }
Пример #11
0
        public static ActionPopupWindow ShowWindow(Rect rect, object startValue, ActionRef <object> onGUI,
                                                   Action onGUITop, Action onGUIBottom, float width = 250, float height = 100)
        {
            ActionPopupWindow window = CreateInstance(typeof(ActionPopupWindow)) as ActionPopupWindow;

            window.variable = startValue;
            window.onGUI    = onGUI;
            if (onGUITop != null)
            {
                window.onGUITop = delegate(ref object obj) { onGUITop(); }
            }
            ;
            if (onGUIBottom != null)
            {
                window.onGUIBottom = delegate(ref object obj) { onGUIBottom(); }
            }
            ;
            window.width  = width;
            window.height = height;
            window.Init(rect);
            return(window);
        }
Пример #12
0
        protected void Initialize(UGraphView owner)
        {
            this.owner = owner;
            this.AddToClassList("node-view");
            if (!ShowExpandButton())             //Hides colapse button
            {
                m_CollapseButton.style.position = Position.Absolute;
                m_CollapseButton.style.width    = 0;
                m_CollapseButton.style.height   = 0;
                m_CollapseButton.visible        = false;
            }
            base.expanded = true;
            RegisterCallback <MouseDownEvent>(evt => {
                var mPos = (evt.currentTarget as VisualElement).GetScreenMousePosition(evt.localMousePosition, graph.window);
                if (evt.button == 0 && evt.shiftKey && !evt.altKey)
                {
                    ActionPopupWindow.ShowWindow(Vector2.zero, () => {
                        CustomInspector.ShowInspector(new GraphEditorData(graph.editorData)
                        {
                            selected = targetNode
                        });
                    }, 300, 300).ChangePosition(mPos);
                }
            });
            RegisterCallback <MouseOverEvent>((e) => {
                for (int i = 0; i < inputPorts.Count; i++)
                {
                    var edges = inputPorts[i].GetEdges();
                    foreach (var edge in edges)
                    {
                        if (edge == null)
                        {
                            continue;
                        }
                        if (edge.isProxy)
                        {
                            edge.edgeControl.visible = true;
                        }
                    }
                }
                for (int i = 0; i < outputPorts.Count; i++)
                {
                    var edges = outputPorts[i].GetEdges();
                    foreach (var edge in edges)
                    {
                        if (edge == null)
                        {
                            continue;
                        }
                        if (edge.isProxy)
                        {
                            edge.edgeControl.visible = true;
                        }
                    }
                }
            });
            RegisterCallback <MouseLeaveEvent>((e) => {
                for (int i = 0; i < inputPorts.Count; i++)
                {
                    var edges = inputPorts[i].GetEdges();
                    foreach (var edge in edges)
                    {
                        if (edge == null)
                        {
                            continue;
                        }
                        if (edge.isProxy)
                        {
                            edge.edgeControl.visible = false;
                        }
                    }
                }
                for (int i = 0; i < outputPorts.Count; i++)
                {
                    var edges = outputPorts[i].GetEdges();
                    foreach (var edge in edges)
                    {
                        if (edge == null)
                        {
                            continue;
                        }
                        if (edge.isProxy)
                        {
                            edge.edgeControl.visible = false;
                        }
                    }
                }
            });
            RegisterCallback <GeometryChangedEvent>(evt => {
                if (evt.oldRect != Rect.zero && evt.oldRect.width != evt.newRect.width)
                {
                    Teleport(new Rect(evt.newRect.x + (evt.oldRect.width - evt.newRect.width), evt.newRect.y, evt.newRect.width, evt.newRect.height));
                }
            });

            border = this.Q("node-border");
            {            //Flow inputs
                flowInputContainer      = new VisualElement();
                flowInputContainer.name = "flow-inputs";
                flowInputContainer.AddToClassList("flow-container");
                flowInputContainer.AddToClassList("input");
                flowInputContainer.pickingMode = PickingMode.Ignore;
                border.Insert(0, flowInputContainer);
            }
            {            //Flow outputs
                flowOutputContainer      = new VisualElement();
                flowOutputContainer.name = "flow-outputs";
                flowOutputContainer.AddToClassList("flow-container");
                flowOutputContainer.AddToClassList("output");
                flowOutputContainer.pickingMode = PickingMode.Ignore;
                Add(flowOutputContainer);
            }

            controlsContainer = new VisualElement {
                name = "controls"
            };
            mainContainer.Add(controlsContainer);

            titleIcon = new Image()
            {
                name = "title-icon"
            };
            titleContainer.Add(titleIcon);
            titleIcon.SendToBack();

            OnSetup();
        }