public static ValueTuple <DoubleDestructibleLineSegment, DoubleDestructibleLineSegment> Split(DoubleDestructibleLineSegment a, Vec2 point, float size) { var split1 = DestructibleLineSegment.Split(a.SideA, point, size); var split2 = DestructibleLineSegment.Split(a.SideB, point, size); DoubleDestructibleLineSegment lineLeft; DoubleDestructibleLineSegment lineRight; if (split1.Item1 == null || split2.Item2 == null) { lineLeft = null; } else { lineLeft = new DoubleDestructibleLineSegment(split1.Item1.Start, split1.Item1.End, split1.Item1.Color, split1.Item1.LineWidth); } if (split1.Item2 == null || split2.Item1 == null) { lineRight = null; } else { lineRight = new DoubleDestructibleLineSegment(split1.Item2.Start, split1.Item2.End, split1.Item2.Color, split1.Item2.LineWidth); } return(ValueTuple.Create(lineLeft, lineRight)); }
public void AddDestructibleLine(Vec2 start, Vec2 end, bool addLineEndings = true, uint color = 0xff00ff00) { var line = new DoubleDestructibleLineSegment(start, end, color, 2); AddChild(line); DestructibleLines.Add(line); if (addLineEndings) { Movers.Add(new Ball(0, start, isKinematic: true)); Movers.Add(new Ball(0, end, isKinematic: true)); } }