public CustomTypeNode(CustomType type, CustomTypeNode parent, int level) { this.type = type; this.level = level; this.parent = parent; }
private void HandleInput() { // Handle positioning and scaling of scroll view and nodes if (Event.current.type == EventType.KeyDown) { switch (Event.current.keyCode) { case KeyCode.RightArrow: scrollPosition += new Vector2(panStep, 0); break; case KeyCode.LeftArrow: scrollPosition -= new Vector2(panStep, 0); break; case KeyCode.UpArrow: scrollPosition -= new Vector2(0, panStep); break; case KeyCode.DownArrow: scrollPosition += new Vector2(0, panStep); break; case KeyCode.PageUp: if (!Event.current.modifiers.ToString().Contains("Shift")) { zoomLevel++; } style.fontSize++; Debug.LogWarning("ZOOM IN"); break; case KeyCode.PageDown: if (!Event.current.modifiers.ToString().Contains("Shift")) { zoomLevel--; } style.fontSize--; Debug.LogWarning("ZOOM OUT"); break; } } // Determine which node user has left-clicked on // NOTE: need to store selected node in "tempSelectedNode" to prevent Unity bug that occurs when // selected node is immediately modified in same frame if (previousEvent == EventType.Layout) { if (Event.current.type == EventType.MouseDown) { Vector2 mousePos = Event.current.mousePosition; foreach (LinkedList <CustomTypeNode> nodeList in allNodes.Values) { foreach (CustomTypeNode n in nodeList) { if (n.rect.Contains(mousePos + scrollPosition)) { tempSelectedNode = n; } } } } } // Need this interim step to prevent Unity bug when immediately referencing the selected node if (previousEvent == EventType.Repaint) { selectedNode = tempSelectedNode; } }