private void MouseDown() { if (configuration == null) { return; } if (inputController.isLeftMouse) { bool isPointClick = false; bool isNodeClick = false; bool isLinkClick = false; foreach (Node node in configuration.nodes) { if (ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(true, node.position, false)).Contains(inputController.mousePosition)) { isPointClick = true; BeginBuild(node); break; } } if (isPointClick == false) { foreach (Node node in configuration.nodes) { if (ViewportService.ToScreenRect(node.position).Contains(inputController.mousePosition)) { isNodeClick = true; break; } } } if (isNodeClick == false) { //TODO: Link selection handler here... } if (isNodeClick == false && isLinkClick == false && isPointClick == false) { ClickDownOnBackground(); } } if (inputController.isRightMouse) { GUIContextMenu.Show(inputController.mousePosition, new GUIControls.MenuItem("Create/Entry", () => CreateNode(0, GUIContextMenu.Position)), new GUIControls.MenuItem("Create/Out", () => CreateNode(1, GUIContextMenu.Position)), new GUIControls.MenuItem("Create/Sigmoid", () => CreateNode(2, GUIContextMenu.Position)), new GUIControls.MenuItem("Create/Bias", () => CreateNode(3, GUIContextMenu.Position))); } Repaint(); }
private void DrawNodes() { if (configuration == null) { return; } foreach (Node node in configuration.nodes) { GUI.skin = nodeSkin; if (IsSelectedNode(node)) { GUI.color = new Color( ColorAtlas.orange.r, ColorAtlas.orange.g, ColorAtlas.orange.b, 0.55F); Rect selection_rect = ViewportService.ToScreenRect(node.position); selection_rect.x -= border_width * 0.5F; selection_rect.y -= border_width * 0.5F; selection_rect.width += border_width; selection_rect.height += border_width; GUI.Box(selection_rect, ""); } var right_rect = ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(true, node.position, false)); var left_rect = ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(false, node.position, false)); GUI.color = node.color; GUI.Box(ViewportService.ToScreenRect(node.position), ""); GUI.color = new Color(0, 1F, 1F, 0.3F); GUI.skin = nodeElipseSkin; if (NodeRules.ContainsRightConnection(node)) { GUI.Box(right_rect, ""); } if (NodeRules.ContainsLeftConnection(node)) { GUI.Box(left_rect, ""); } if (editorState == EditorState.Waiting && inputController.isLeftMouse && IsSelectedNode(node)) { node.position.position += inputController.delta * 0.5F; CalculateCollision(inputController.delta, node); Repaint(); } } }
private void MouseUp() { if (configuration == null) { return; } bool isPointClick = false; bool isNodeClick = false; bool isLinkClick = false; foreach (Node node in configuration.nodes) { if (ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(false, node.position, false)).Contains(inputController.mousePosition)) { isPointClick = true; EndBuild(node); break; } } if (isPointClick == false) { foreach (Node node in configuration.nodes) { if (ViewportService.ToScreenRect(node.position).Contains(inputController.mousePosition)) { isNodeClick = true; SelectOrDeselectNode(node); break; } } } if (isNodeClick == false && isLinkClick == false && isPointClick == false) { ClickUpOnBackground(); } EndMultiselect(); Repaint(); }
private void DrawLinks() { if (configuration == null) { return; } foreach (var link in configuration.links) { var from = configuration.nodes.Find(x => x.ID == link.from); var to = configuration.nodes.Find(x => x.ID == link.to); if (from != null && to != null) { Rect from_rect = ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(true, from.position, false)); Rect to_rect = ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(false, to.position, false)); Vector2 from_point = from_rect.position + new Vector2(to_rect.size.x, to_rect.size.y * 0.5F); Vector2 to_point = to_rect.position + new Vector2(0, to_rect.size.y * 0.5F); DrawCurve(2, from_point, to_point, new Color(0.55F, 0.55F, 0.55F, 0.6F), new Color(0.55F, 0.55F, 0.55F, 0.6F)); } } if (IsBuildMode()) { from_build_nodes.ForEach(x => { Rect from_rect = ViewportService.ToScreenRect(ViewportService.GetConnectionEllipse(true, x.position, false)); Vector2 from = from_rect.position + from_rect.size * 0.5F; DrawCurve(2, from, inputController.mousePosition, new Color(0.55F, 0.55F, 0.55F, 0.6F), new Color(0, 1F, 1F, 0.6F)); }); Repaint(); } }