public RoadNode(int thickness, InnerDirection flowDirection, InnerDirection crossDirection, Point position)
 {
     Thickness      = thickness;
     FlowDirection  = flowDirection;
     CrossDirection = crossDirection;
     Position       = position;
 }
Beispiel #2
0
        /// <summary>
        ///     Gets the dir.
        /// </summary>
        /// <param name="dir">The dir.</param>
        /// <param name="n">The n.</param>
        /// <returns></returns>
        private static InnerDirection GetDirection(this InnerDirection dir, int n)
        {
            var v = (int)dir + n;

            if (v < 0)
            {
                v += dirLength;
            }
            else if (v >= dirLength)
            {
                v -= dirLength;
            }

            return((InnerDirection)v);
        }
Beispiel #3
0
        /// <summary>
        ///     Gets the point.
        /// </summary>
        /// <param name="dir">The dir.</param>
        /// <returns>Point.</returns>
        public Point GetInnerPoint(InnerDirection dir)
        {
            switch (dir)
            {
            case InnerDirection.up:
                return(up);

            case InnerDirection.right:
                return(right);

            case InnerDirection.down:
                return(down);

            case InnerDirection.left:
                return(left);
            }

            return(zero);
        }
Beispiel #4
0
 /// <summary>
 ///     Gets the inverse.
 /// </summary>
 /// <param name="dir">The dir.</param>
 /// <param name="inverse">if set to <c>true</c> [inverse].</param>
 /// <returns></returns>
 public static InnerDirection GetInverse(this InnerDirection dir, bool inverse = false)
 {
     // down ==> up
     // right ==> left
     return(GetDirection(dir, inverse ? -2 : 2));
 }
Beispiel #5
0
 /// <summary>
 ///     Gets the perpendicular.
 /// </summary>
 /// <param name="dir">The dir.</param>
 /// <returns>Direction.</returns>
 public static InnerDirection GetPerpendicular(this InnerDirection dir, bool inverse = false)
 {
     // left ==> up
     // down ==> left ...
     return(GetDirection(dir, inverse ? -1 : 1));
 }
Beispiel #6
0
 /// <summary>
 ///     Nexts the direction.
 /// </summary>
 /// <param name="lastDirection">The last direction.</param>
 /// <returns></returns>
 public Point NextDirection(ref InnerDirection lastDirection)
 {
     lastDirection = lastDirection.GetPerpendicular();
     return(GetInnerPoint(lastDirection));
 }
Beispiel #7
0
 /// <summary>
 ///     News the position.
 /// </summary>
 /// <param name="dir">The dir.</param>
 /// <returns>Point.</returns>
 public Point NewInnerPos(InnerDirection dir)
 {
     return(this + GetInnerPoint(dir));
 }
Beispiel #8
0
 private Direction(InnerDirection direction)
 {
     this.direction = direction;
 }
Beispiel #9
0
 private Direction(uint dir)
 {
     this.direction = (InnerDirection)dir;
 }