Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
            }
        }