Esempio n. 1
0
        public static Point getDrawingOffset(Rectangle drawArea, Rectangle camera, LocationOverlap overlap)
        {
            switch (overlap)
            {
            case LocationOverlap.TopLeft:
                return(new Point(camera.Left - drawArea.Left, camera.Top - drawArea.Top));

            case LocationOverlap.TopRight:
                return(new Point(drawArea.Right - camera.Right, camera.Top - drawArea.Top));

            case LocationOverlap.BottomLeft:
                return(new Point(camera.Left - drawArea.Left, drawArea.Bottom - camera.Bottom));

            case LocationOverlap.BottomRight:
                return(new Point(drawArea.Right - camera.Right, drawArea.Bottom - camera.Bottom));

            case LocationOverlap.TopOnly:
                return(new Point(0, camera.Top - drawArea.Top));

            case LocationOverlap.LeftOnly:
                return(new Point(camera.Left - drawArea.Left, 0));

            case LocationOverlap.BottomOnly:
                return(new Point(0, drawArea.Bottom - camera.Bottom));

            case LocationOverlap.RightOnly:
                return(new Point(drawArea.Right - camera.Right, 0));

            default:
                return(Point.Zero);
            }
        }
Esempio n. 2
0
        public static Rectangle getTexurePart(Rectangle area, Rectangle camera, Point offset, LocationOverlap overlap, Rectangle sourceRectangle, float zoomFactor)
        {
            Rectangle result;
            Point     size = new Point((int)((area.Width - offset.X) * zoomFactor), (int)((area.Height - offset.Y) * zoomFactor));

            switch (overlap)
            {
            case LocationOverlap.TopLeft:
                result = new Rectangle((int)(offset.X * zoomFactor), (int)(offset.Y * zoomFactor), size.X, size.Y);
                break;

            case LocationOverlap.TopRight:
                result = new Rectangle(0, (int)(offset.Y * zoomFactor), size.X, size.Y);
                break;

            case LocationOverlap.BottomLeft:
                result = new Rectangle((int)(offset.X * zoomFactor), 0, size.X, size.Y);
                break;

            case LocationOverlap.BottomRight:
                result = new Rectangle(0, 0, size.X, size.Y);
                break;

            case LocationOverlap.TopOnly:
                result = new Rectangle(0, (int)(offset.Y * zoomFactor), size.X, size.Y);
                break;

            case LocationOverlap.LeftOnly:
                result = new Rectangle((int)(offset.X * zoomFactor), 0, size.X, size.Y);
                break;

            case LocationOverlap.BottomOnly:
                result = new Rectangle(0, 0, size.X, size.Y);
                break;

            case LocationOverlap.RightOnly:
                result = new Rectangle(0, 0, size.X, size.Y);
                break;

            default:
                result = new Rectangle(0, 0, size.X, size.Y);
                break;
            }
            //Apply the Texture offset if texture is multiframe
            result.Offset(sourceRectangle.Location);
            return(result);
        }
Esempio n. 3
0
 public static Rectangle getTexurePart(Rectangle area, Rectangle camera, Point offset, LocationOverlap overlap, float zoomFactor)
 {
     return(getTexurePart(area, camera, offset, overlap, new Rectangle(0, 0, area.Width, area.Height), zoomFactor));
 }