private void ContextCreateNode(NodeData data) { data.Position = _mousePosProvider.MousePosition; Tree.NodeData.AddData(data); BTWindow.SetDirty("Add Node"); GenerateNode(data); OnStructureChanged?.Invoke(); }
public void InitSamplePolygonAdd() { if (mouseState == MouseState.Drawing && currentStructure is Polygon) { TryClosePolygon(currentStructure as Polygon); } mouseState = MouseState.PutingSample; Update(); if (currentStructure is Polygon) { OnStructureChanged?.Invoke(this, currentStructure as Polygon); } }
private void Canvas_MouseDown(object sender, MouseEventArgs e) { //handle add sample if (mouseState == MouseState.PutingSample) { var polygon = Polygon.GetSampleSquare(); polygon.Move(e.Location); polygons.Add(polygon); OnStructureChanged?.Invoke(this, polygon); Update(); mouseState = MouseState.Normal; return; } if (currentStructure == null) { return; } //handle add if (mouseState == MouseState.Drawing) { if (!(currentStructure is Polygon)) { return; } var polygon = currentStructure as Polygon; var result = polygon.AddVertex(e.Location); OnStructureChanged?.Invoke(this, polygon); if (result == Polygon.AddVertexResult.Closed) { mouseState = MouseState.Normal; } Update(); return; } //handle dragging previousMousePosition = e.Location; if (currentStructure.HitTest(e.Location)) { if (mouseState == MouseState.Normal) { mouseState = MouseState.Dragging; } } }
public void HandleMouseDown() { if (mouseState == MouseState.Dragging) { Canvas_MouseUp(this, null); } if (!(currentStructure is Polygon)) { return; } if (mouseState == MouseState.Drawing && !IsMouseOver()) { TryClosePolygon(currentStructure as Polygon); Update(); OnStructureChanged?.Invoke(this, currentStructure as Polygon); } }
public void InitPolygonAdd() { if (mouseState == MouseState.Drawing && currentStructure is Polygon) { TryClosePolygon(currentStructure as Polygon); } if (mouseState != MouseState.Normal) { return; } mouseState = MouseState.Drawing; var polygon = new Polygon(); currentStructure = polygon; polygons.Add(polygon); Update(); OnStructureChanged?.Invoke(this, polygon); }
private void UnserializeAndPaste(string operationName, string dataString) { var newNodeData = CopyPasteSerializer.Deserialize(dataString, GetAvailableNodeIndex(), MousePosition); Tree.NodeData.AddData(newNodeData); var newNodes = new List <BTNode>(); foreach (var data in newNodeData) { var newNode = GenerateNode(data); newNodes.Add(newNode); } foreach (var node in newNodes) { CreateEdgesForNode(node); } OnStructureChanged?.Invoke(); BTWindow.SetDirty("Paste Elements"); }
private GraphViewChange GraphChanged(GraphViewChange change) { if (!_isInitialized) { return(change); } if (change.elementsToRemove != null) { // Remove entry node from change change.elementsToRemove = change.elementsToRemove.Where(e => !e.IsEntryNode()).ToList(); var edges = change.elementsToRemove.Where(e => e is Edge).Select(e => (Edge)e).ToArray(); if (edges.Length > 0) { var nodesToUpdate = RemoveConnectionsByEdges(edges); BTWindow.SetDirty("Delete Connections"); foreach (var n in nodesToUpdate) { n.EdgesChangedExternally(); } } var nodes = ToNodes(change.elementsToRemove).ToArray(); var data = nodes.Select(n => n.Data).ToArray(); if (data.Length > 0) { Tree.NodeData.RemoveData(data); BTWindow.SetDirty("Delete Nodes"); foreach (var n in nodes) { _nodes.Remove(n); n.OnReconnect -= ReconnectNode; n.WasDeleted(); } BTNode.AnyNodeDeleted(); } OnStructureChanged?.Invoke(); } else if (change.movedElements != null) { var nodes = ToNodes(change.movedElements).ToArray(); foreach (var n in nodes) { n.Data.Position = n.GetWorldPosition(); } BTWindow.SetDirty($"Move Nodes"); } else if (change.edgesToCreate != null && change.edgesToCreate.Count > 0) { var nodesToUpdate = new HashSet <BTNode>(change.edgesToCreate.Select(e => e.output.node as BTNode).ToArray()); foreach (var e in change.edgesToCreate) { CreateConnectionByEdge(e); } foreach (var n in nodesToUpdate) { n.EdgesChangedExternally(); } BTWindow.SetDirty("Connect Nodes"); OnStructureChanged?.Invoke(); } return(change); }
private static void StructureChanged(Structure structure) { OnStructureChanged?.Invoke(structure); Debug.Log($"Structure '{structure.Name}' has changed."); }