예제 #1
0
        /// <summary>
        /// Load a graph asset in this window for editing
        /// </summary>
        public void Load(Graph graph)
        {
            m_Graph = graph;
            var serializedGraph = new SerializedObject(graph);

            m_Canvas = new CanvasView(this);
            m_Canvas.Load(graph, serializedGraph);
            var side_menu = make_side_menu(m_Graph, serializedGraph);

            if (side_menu != null)
            {
                var container = new VisualElement();
                container.style.flexDirection = FlexDirection.Row;
                container.Add(side_menu);
                container.Add(m_Canvas);
                container.style.flexGrow = new StyleFloat(1.0f);
                rootVisualElement.Add(container);
            }
            else
            {
                rootVisualElement.Add(m_Canvas);
            }

            titleContent = new GUIContent(graph.name);
            Repaint();
        }
예제 #2
0
        internal void Initialize(Node node, CanvasView canvas, EdgeConnectorListener connectorListener)
        {
            viewDataKey       = node.ID;
            Target            = node;
            Canvas            = canvas;
            ReflectionData    = NodeReflection.GetNodeType(node.GetType());
            ConnectorListener = connectorListener;

            styleSheets.Add(Resources.Load <StyleSheet>("BlueGraphEditor/NodeView"));
            AddToClassList("nodeView");

            // Add a class name matching the node's name (e.g. `.node-My-Branch`)
            var ussSafeName = Regex.Replace(Target.Name, @"[^a-zA-Z0-9]+", "-").Trim('-');

            AddToClassList($"node-{ussSafeName}");

            var errorContainer = new VisualElement {
                name = "error"
            };

            errorContainer.Add(new VisualElement {
                name = "error-icon"
            });

            errorMessage = new Label {
                name = "error-label"
            };
            errorContainer.Add(errorMessage);

            Insert(0, errorContainer);

            SetPosition(new Rect(node.Position, Vector2.one));
            title = node.Name;

            if (!ReflectionData.Deletable)
            {
                capabilities &= ~Capabilities.Deletable;
            }
            if (!ReflectionData.Moveable)
            {
                capabilities &= ~Capabilities.Movable;
            }

            // Custom OnDestroy() handler via https://forum.unity.com/threads/request-for-visualelement-ondestroy-or-onremoved-event.718814/
            RegisterCallback <DetachFromPanelEvent>((e) => Destroy());
            RegisterCallback <TooltipEvent>(OnTooltip);

            node.OnErrorEvent    += RefreshErrorState;
            node.OnValidateEvent += OnValidate;

            ReloadPorts();
            ReloadEditables();
            RefreshErrorState();

            OnInitialize();
        }
예제 #3
0
        /// <summary>
        /// Load a graph asset in this window for editing
        /// </summary>
        public void Load(Graph graph)
        {
            m_Graph = graph;

            m_Canvas = new CanvasView(this);
            m_Canvas.Load(graph);

            rootVisualElement.Add(m_Canvas);

            titleContent = new GUIContent(graph.name);
            Repaint();
        }
        /// <summary>
        /// Load a graph asset in this window for editing
        /// </summary>
        public virtual void Load(Graph graph)
        {
            Graph = graph;

            Canvas = new CanvasView(this);
            Canvas.Load(graph);
            Canvas.StretchToParentSize();
            rootVisualElement.Add(Canvas);

            titleContent = new GUIContent(graph.name);
            Repaint();
        }
 public EdgeConnectorListener(CanvasView canvas)
 {
     this.canvas = canvas;
 }