public static bool DeleteNode(this ShipPathData Data, BezierNodeData nodeToDelete) { if (Data.Nodes.Count <= 2) { return(false); } int idx = Data.Nodes.IndexOf(nodeToDelete); if (idx >= 0) { Data.Nodes.RemoveAt(idx); } return(true); }
public static BezierNodeData AddNode(this ShipPathData Data, BezierNodeData afterNode) { int idx = Data.Nodes.IndexOf(afterNode); if (idx >= 0) { BezierNodeData nextNode = afterNode.GetNextNode(); float midX = (afterNode.worldX + nextNode.worldX) / 2; float midY = (afterNode.worldY + nextNode.worldY) / 2; BezierNodeData newNode = new BezierNodeData() { worldX = midX, worldY = midY, rotation = 0, shipPath = Data /*, mainForm.currentProject*/ }; Data.Nodes.Insert(idx + 1, newNode); } return(null); }
public static ShipPathData SetFrom(this ShipPathData Data, MainForm mainForm, float worldX, float worldY) { float nodeSize = BezierNodeEx.GetBezierNodeSize(mainForm.currentProject); Data.Nodes.Add(new BezierNodeData() { worldX = worldX - nodeSize * 2, worldY = worldY + nodeSize, rotation = 0, shipPath = Data, controlPointsDistance = BezierNodeEx.GetBezierNodeSize(mainForm.currentProject) }); Data.Nodes.Add(new BezierNodeData() { worldX = worldX, worldY = worldY, rotation = 0, shipPath = Data, controlPointsDistance = BezierNodeEx.GetBezierNodeSize(mainForm.currentProject) }); Data.Nodes.Add(new BezierNodeData() { worldX = worldX + nodeSize * 2, worldY = worldY + nodeSize, rotation = 0, shipPath = Data, controlPointsDistance = BezierNodeEx.GetBezierNodeSize(mainForm.currentProject) }); Data.PathId = mainForm.currentProject.GenerateNewShipPathId(); return(Data); }
public EditShipPath(ShipPathData TargetPath) { this.TargetPath = TargetPath; InitializeComponent(); }