Ejemplo n.º 1
0
        /// <summary>
        /// Used to centerize with a sprite as reference
        /// </summary>
        /// <param name="d1">Main sprite</param>
        /// <param name="obj">Sprite as Reference</param>
        /// <param name="type">How it will be centerized</param>
        /// <returns></returns>
        public static PositionerStyle CenterTo(this PositionerStyle p1, DrawableObject obj, CenterType type)
        {
            // Calculate bounds
            var d1   = p1.Modified;
            var pos1 = p1.Modified.BoundingBox;
            var pos2 = obj.BoundingBox;

            switch (type)
            {
            case CenterType.Horizontally:
                d1.Position = new Vector2((pos2.X + (pos2.Width / 2)) - (pos1.Width / 2), pos1.Y);
                break;

            case CenterType.Vertically:
                d1.Position = new Vector2(pos1.X, (pos2.Y + (pos2.Height / 2)) - (pos1.Height / 2));
                break;

            case CenterType.Both:
                // To avoid copying code, we do this
                p1.CenterTo(obj, CenterType.Horizontally);
                p1.CenterTo(obj, CenterType.Vertically);
                break;
            }

            return(p1);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Put an object side by another
        /// </summary>
        /// <param name="d1">Main sprite</param>
        /// <param name="obj">Sprite as Reference</param>
        /// <param name="side">From which side</param>
        /// <returns></returns>
        public static PositionerStyle SideBy(this PositionerStyle p1, DrawableObject obj, SideFrom side)
        {
            // Calculate bounds
            var d1   = p1.Modified;
            var pos1 = p1.Modified.BoundingBox;
            var pos2 = obj.BoundingBox;

            d1.Position = GetSideBy(pos1, pos2, side);

            return(p1);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Used to put an object inside another with margin
        /// </summary>
        /// <param name="d1">Main sprite</param>
        /// <param name="obj">Sprite as Reference</param>
        /// <param name="margin">The margins</param>
        /// <param name="from">From where the margin starts</param>
        /// <returns></returns>
        public static PositionerStyle Margin(this PositionerStyle p1, DrawableObject obj, Vector2 margin, MarginFrom from)
        {
            // Calculate bounds
            var d1   = p1.Modified;
            var pos1 = p1.Modified.BoundingBox;
            var pos2 = obj.BoundingBox;

            switch (from)
            {
            case MarginFrom.TopLeft:
                d1.Position = obj.Position + margin;
                break;

            case MarginFrom.BottomRight:
                d1.Position = obj.Position + new Vector2(pos2.Width, pos2.Height) - (new Vector2(pos1.Width, pos1.Height) + margin);
                break;

            case MarginFrom.BottomLeft:
                d1.Position = obj.Position + new Vector2(margin.X, pos2.Height - (pos1.Height + margin.Y));
                break;
            }

            return(p1);
        }