Beispiel #1
0
 public static System.Drawing.Image Icon(Element e)
 {
     if (e is Pump) return PumpIcon;
     else if (e is Sink) return SinkIcon;
     else if (e is Merger) return MergerIcon;
     else if (e is Splitter) return SplitterIcon;
     else if (e is AdjustableSplitter) return AdjSplitterIcon;
     throw new ArgumentException("Element not implemented, " + e.GetType().Name);
 }
Beispiel #2
0
        //, Element element, Point end)
        public Collision(Point intersection, Element element, Point from, Point to)
        {
            bool left = from.X < element.Center.X;
            bool up = from.Y < element.Center.Y;

            bool targetLeft = to.X < element.Center.X;
            bool targetUp = to.Y < element.Center.Y;

            this.SenderIsOnLeft = left;
            this.SenderIsUp = up;

            this.TargetIsUp = targetUp;
            this.TargetIsOnLeft = targetLeft;

            this.Element = element;
            this.Intersection = intersection;
            Point closerMargin = new Point();
            if (left)
                if (up)
                {
                    closerMargin = element.D;
                    LeftCloserMargin = element.A;
                    RightCloserMargin = element.C;
                    InverseCloserMargin = element.B;
                }
                else
                {
                    closerMargin = element.A;
                    this.LeftCloserMargin = element.D;
                    this.RightCloserMargin = element.B;
                    this.InverseCloserMargin = element.C;
                }
            else
                if (up)
                {
                    closerMargin = element.C;
                    this.LeftCloserMargin = element.D;
                    this.RightCloserMargin = element.B;
                    this.InverseCloserMargin = element.A;
                }
                else
                {
                    closerMargin = element.B;
                    this.LeftCloserMargin = element.A;
                    this.RightCloserMargin = element.D;
                    this.InverseCloserMargin = element.C;
                }
            this.CloserMargin = closerMargin;

            //this.CloserMargin = Offset(CloserMargin, element, targetLeft, targetUp);
            //this.LeftCloserMargin = Offset(LeftCloserMargin, element, targetLeft, targetUp);
            //this.RightCloserMargin = Offset(RightCloserMargin, element, targetLeft, targetUp);
            //this.InverseCloserMargin = Offset(InverseCloserMargin, element, targetLeft, targetUp);
        }
Beispiel #3
0
        public Collision(Element element, Point from, Point to)
        {
            bool left = from.X < element.Center.X;
            bool up = from.Y < element.Center.Y;

            bool targetLeft = to.X < element.Center.X;
            bool targetUp = to.Y < element.Center.Y;

            this.SenderIsOnLeft = left;
            this.SenderIsUp = up;

            this.TargetIsUp = targetUp;
            this.TargetIsOnLeft = targetLeft;

            this.Element = element;
        }
Beispiel #4
0
 public ConnectionZone(Point margin, Element parent)
 {
     this.Margin = margin;
     this.Parent = parent;
 }
 public ConnectionZone(Point margin, Element parent, bool isInflow)
 {
     this.Parent = parent;
     this.Margin = margin;
     this.isInFlow = isInflow;
 }
 public ConnectionZone(int x, int y, Element parent, bool isInFlow) : this(new Point(x, y), parent, isInFlow) { }
Beispiel #7
0
        private Point Offset(Point closerMargin, Element element, bool targetLeft, bool targetUp)
        {
            int xD = targetLeft ? -1 : 1;
            int yD = targetUp ? -1 : 1;

            if (xD < 0) xD = -1;
            else xD = 1;
            if (yD < 0) yD = -1;
            else yD = 1;

            xD *= 5;
            yD *= 5;
            closerMargin.X += xD;
            closerMargin.Y += yD;

            return closerMargin;
        }
Beispiel #8
0
 static bool Intersects(Point p1, Point p2, Element r)
 {
     return LineIntersectsLine(p1, p2, new Point(r.X, r.Y), new Point(r.X + r.Width, r.Y)) ||
            LineIntersectsLine(p1, p2, new Point(r.X + r.Width, r.Y), new Point(r.X + r.Width, r.Y + r.Height)) ||
            LineIntersectsLine(p1, p2, new Point(r.X + r.Width, r.Y + r.Height), new Point(r.X, r.Y + r.Height)) ||
            LineIntersectsLine(p1, p2, new Point(r.X, r.Y + r.Height), new Point(r.X, r.Y)) ||
            (r.Contains(p1) && r.Contains(p2));
 }