public virtual void Initialize(AbstractNode node, EdgeConnectorListener connectorListener) { viewDataKey = node.guid; target = node; styleSheets.Add(Resources.Load <StyleSheet>("Styles/NodeView")); AddToClassList("nodeView"); SetPosition(new Rect(node.graphPosition, Vector2.one)); m_ConnectorListener = connectorListener; title = node.name; m_SerializedNode = new SerializedObject(node); // Custom OnDestroy() handler via https://forum.unity.com/threads/request-for-visualelement-ondestroy-or-onremoved-event.718814/ RegisterCallback <DetachFromPanelEvent>((e) => OnDestroy()); RegisterCallback <TooltipEvent>(OnTooltip); UpdatePorts(); // TODO: Don't do it this way. if (node is FuncNode func) { func.Awake(); } }
public CanvasView(EditorWindow window) { m_EditorWindow = window; styleSheets.Add(Resources.Load <StyleSheet>("Styles/CanvasView")); AddToClassList("canvasView"); m_EdgeListener = new EdgeConnectorListener(this); m_SearchProvider = ScriptableObject.CreateInstance <SearchProvider>(); m_SearchProvider.target = this; SetupZoom(0.05f, ContentZoomer.DefaultMaxScale); this.AddManipulator(new ContentDragger()); this.AddManipulator(new SelectionDragger()); this.AddManipulator(new RectangleSelector()); this.AddManipulator(new ClickSelector()); // Add event handlers for shortcuts and changes RegisterCallback <KeyDownEvent>(OnGraphKeydown); RegisterCallback <MouseMoveEvent>(OnGraphMouseMove); graphViewChanged = OnGraphViewChanged; nodeCreationRequest = (ctx) => OpenSearch(ctx.screenMousePosition); // Add handlers for (de)serialization serializeGraphElements = OnSerializeGraphElements; canPasteSerializedData = OnTryPasteSerializedData; unserializeAndPaste = OnUnserializeAndPaste; RegisterCallback <GeometryChangedEvent>(OnFirstResize); title = new Label(); title.text = "BLUEGRAPH"; title.AddToClassList("canvasViewTitle"); Add(title); // Add a grid renderer *behind* content containers Insert(0, new GridBackground()); }