Ejemplo n.º 1
0
 public Align2D(IVertexSource objectToAlign, Side2D boundingFacesToAlign, IVertexSource objectToAlignTo, Side2D boundingFacesToAlignTo, double offsetX = 0, double offsetY = 0, string name = "")
     : this(objectToAlign, boundingFacesToAlign, GetPositionToAlignTo(objectToAlignTo, boundingFacesToAlignTo, new Vector2(offsetX, offsetY)), name)
 {
     if (objectToAlign == objectToAlignTo)
     {
         throw new Exception("You cannot align an object to itself.");
     }
 }
Ejemplo n.º 2
0
        private static bool IsSet(Side2D variableToCheck, Side2D faceToCheckFor, Side2D faceToAssertNot)
        {
            if ((variableToCheck & faceToCheckFor) != 0)
            {
                if ((variableToCheck & faceToAssertNot) != 0)
                {
                    throw new Exception("You cannot have both " + faceToCheckFor.ToString() + " and " + faceToAssertNot.ToString() + " set when calling Align.  The are mutually exclusive.");
                }
                return(true);
            }

            return(false);
        }
Ejemplo n.º 3
0
        public static Vector2 GetPositionToAlignTo(IVertexSource objectToAlignTo, Side2D boundingFacesToAlignTo, Vector2 extraOffset)
        {
            Vector2 positionToAlignTo = new Vector2();

            if (IsSet(boundingFacesToAlignTo, Side2D.Left, Side2D.Right))
            {
                positionToAlignTo.X = objectToAlignTo.GetBounds().Left;
            }
            if (IsSet(boundingFacesToAlignTo, Side2D.Right, Side2D.Left))
            {
                positionToAlignTo.X = objectToAlignTo.GetBounds().Right;
            }
            if (IsSet(boundingFacesToAlignTo, Side2D.Bottom, Side2D.Top))
            {
                positionToAlignTo.Y = objectToAlignTo.GetBounds().Bottom;
            }
            if (IsSet(boundingFacesToAlignTo, Side2D.Top, Side2D.Bottom))
            {
                positionToAlignTo.Y = objectToAlignTo.GetBounds().Top;
            }

            return(positionToAlignTo + extraOffset);
        }
Ejemplo n.º 4
0
        public Align2D(IVertexSource item, Side2D boundingFacesToAlign, Vector2 positionToAlignTo, string name = "")
        {
            var bounds = item.GetBounds();

            if (IsSet(boundingFacesToAlign, Side2D.Left, Side2D.Right))
            {
                positionToAlignTo.X = positionToAlignTo.X - bounds.Left;
            }
            if (IsSet(boundingFacesToAlign, Side2D.Right, Side2D.Left))
            {
                positionToAlignTo.X = positionToAlignTo.X - bounds.Left - (bounds.Right - bounds.Left);
            }
            if (IsSet(boundingFacesToAlign, Side2D.Bottom, Side2D.Top))
            {
                positionToAlignTo.Y = positionToAlignTo.Y - bounds.Bottom;
            }
            if (IsSet(boundingFacesToAlign, Side2D.Top, Side2D.Bottom))
            {
                positionToAlignTo.Y = positionToAlignTo.Y - bounds.Bottom - (bounds.Top - bounds.Bottom);
            }

            Transform    = Affine.NewTranslation(positionToAlignTo);
            VertexSource = item;
        }
Ejemplo n.º 5
0
 public Align2D(IVertexSource objectToAlign, Side2D boundingFacesToAlign, Vector2 positionToAlignTo, double offsetX, double offsetY, string name = "")
     : this(objectToAlign, boundingFacesToAlign, positionToAlignTo + new Vector2(offsetX, offsetY), name)
 {
 }
Ejemplo n.º 6
0
 public Align2D(IVertexSource objectToAlign, Side2D boundingFacesToAlign, double positionToAlignToX = 0, double positionToAlignToY = 0, string name = "")
     : this(objectToAlign, boundingFacesToAlign, new Vector2(positionToAlignToX, positionToAlignToY), name)
 {
 }