Beispiel #1
0
        public static void Transform(BoundingBox2 value, Matrix matrix, Vector2[] corners)
        {
            value.GetCorners(corners);

            for (int i = 0; i < 4; i++)
                corners[i] = Vector2.Transform(corners[i], matrix);
        }
Beispiel #2
0
        public bool Intersects(BoundingBox2 value, out Vector2?corner)
        {
            corner = null;

            if (Center.X < value.Min.X && Center.Y < value.Min.Y)
            {
                corner = value.Min;
            }

            if (Center.X > value.Max.X && Center.Y < value.Min.Y)
            {
                corner = new Vector2(value.Max.X, value.Min.Y);
            }

            if (Center.X < value.Min.X && Center.Y > value.Max.Y)
            {
                corner = new Vector2(value.Min.X, value.Max.Y);
            }

            if (Center.X > value.Max.X && Center.Y > value.Max.Y)
            {
                corner = value.Max;
            }

            if (corner != null)
            {
                return(Contains(corner.Value));
            }

            return(value.Intersects(BoundingBox()));
        }
Beispiel #3
0
        public static void Transform(BoundingBox2 value, Matrix matrix, Vector2[] corners)
        {
            value.GetCorners(corners);

            for (int i = 0; i < 4; i++)
            {
                corners[i] = Vector2.Transform(corners[i], matrix);
            }
        }
Beispiel #4
0
        public bool Intersects(BoundingBox2 value)
        {
            if (Center.X < value.Min.X && Center.Y < value.Min.Y)
                return Contains(value.Min);

            if (Center.X > value.Max.X && Center.Y < value.Min.Y)
                return Contains(new Vector2(value.Max.X, value.Min.Y));

            if (Center.X < value.Min.X && Center.Y > value.Max.Y)
                return Contains(new Vector2(value.Min.X, value.Max.Y));

            if (Center.X > value.Max.X && Center.Y > value.Max.Y)
                return Contains(value.Max);

            return value.Intersects(BoundingBox());
        }
Beispiel #5
0
        public Viewport GetDisplayViewport(Viewport virtualViewport)
        {
            BoundingBox2 virtualBox = new BoundingBox2(0, 0, _virtualWidth, _virtualHeight);

            BoundingBox2 box = virtualBox.Intersection(new BoundingBox2(virtualViewport.Bounds));

            box.Min = Vector2.Transform(box.Min, _transformMatrix);
            box.Max = Vector2.Transform(box.Max, _transformMatrix);

            Viewport displayViewport = new Viewport(box.ToRectangle());

            displayViewport.X += _displayViewport.X;
            displayViewport.Y += _displayViewport.Y;

            return(displayViewport);
        }
Beispiel #6
0
        public BoundingBox2 Intersection(BoundingBox2 value)
        {
            if (Min.X > value.Min.X)
            {
                value.Min.X = Min.X;
            }
            if (Max.X < value.Max.X)
            {
                value.Max.X = Max.X;
            }
            if (Min.Y > value.Min.Y)
            {
                value.Min.Y = Min.Y;
            }
            if (Max.Y < value.Max.Y)
            {
                value.Max.Y = Max.Y;
            }

            return(value);
        }
Beispiel #7
0
        public bool Intersects(BoundingBox2 value, out Vector2? corner)
        {
            corner = null;

            if (Center.X < value.Min.X && Center.Y < value.Min.Y)
                corner = value.Min;

            if (Center.X > value.Max.X && Center.Y < value.Min.Y)
                corner = new Vector2(value.Max.X, value.Min.Y);

            if (Center.X < value.Min.X && Center.Y > value.Max.Y)
                corner = new Vector2(value.Min.X, value.Max.Y);

            if (Center.X > value.Max.X && Center.Y > value.Max.Y)
                corner = value.Max;

            if (corner != null)
                return Contains(corner.Value);

            return value.Intersects(BoundingBox());
        }
Beispiel #8
0
        public bool Intersects(BoundingBox2 value)
        {
            if (Center.X < value.Min.X && Center.Y < value.Min.Y)
            {
                return(Contains(value.Min));
            }

            if (Center.X > value.Max.X && Center.Y < value.Min.Y)
            {
                return(Contains(new Vector2(value.Max.X, value.Min.Y)));
            }

            if (Center.X < value.Min.X && Center.Y > value.Max.Y)
            {
                return(Contains(new Vector2(value.Min.X, value.Max.Y)));
            }

            if (Center.X > value.Max.X && Center.Y > value.Max.Y)
            {
                return(Contains(value.Max));
            }

            return(value.Intersects(BoundingBox()));
        }
Beispiel #9
0
 public static Vector2[] Transform(BoundingBox2 value, Matrix matrix)
 {
     Vector2[] corners = new Vector2[4];
     Transform(value, matrix, corners);
     return(corners);
 }
Beispiel #10
0
 public void Intersects(ref BoundingBox2 box, out float?result)
 {
     throw new NotImplementedException();
 }
Beispiel #11
0
 public float?Intersects(BoundingBox2 box)
 {
     throw new NotImplementedException();
 }
Beispiel #12
0
 public static bool Intersects(BoundingBox2 value1, BoundingBox2 value2)
 {
     return(value1.Max.Y > value2.Min.Y && value1.Min.Y < value2.Max.Y && value1.Max.X > value2.Min.X && value1.Min.X < value2.Max.X);
 }
Beispiel #13
0
 public void Intersects(ref BoundingBox2 value, out bool result)
 {
     result = value.Max.Y > Min.Y && value.Min.Y <Max.Y && value.Max.X> Min.X && value.Min.X < Max.X;
 }
Beispiel #14
0
 public bool Intersects(BoundingBox2 value)
 {
     return(value.Max.Y > Min.Y && value.Min.Y < Max.Y && value.Max.X > Min.X && value.Min.X < Max.X);
 }
Beispiel #15
0
 public bool Intersects(BoundingBox2 value)
 {
     return value.Max.Y > Min.Y && value.Min.Y < Max.Y && value.Max.X > Min.X && value.Min.X < Max.X;
 }
Beispiel #16
0
        public Viewport GetDisplayViewport(Viewport virtualViewport)
        {
            BoundingBox2 virtualBox = new BoundingBox2(0, 0, _virtualWidth, _virtualHeight);

            BoundingBox2 box = virtualBox.Intersection(new BoundingBox2(virtualViewport.Bounds));

            box.Min = Vector2.Transform(box.Min, _transformMatrix);
            box.Max = Vector2.Transform(box.Max, _transformMatrix);

            Viewport displayViewport = new Viewport(box.ToRectangle());
            displayViewport.X += _displayViewport.X;
            displayViewport.Y += _displayViewport.Y;

            return displayViewport;
        }
Beispiel #17
0
 public void Intersects(ref BoundingBox2 value, out bool result)
 {
     result = value.Max.Y > Min.Y && value.Min.Y < Max.Y && value.Max.X > Min.X && value.Min.X < Max.X;
 }
Beispiel #18
0
 public static Vector2[] Transform(BoundingBox2 value, Matrix matrix)
 {
     Vector2[] corners = new Vector2[4];
     Transform(value, matrix, corners);
     return corners;
 }
Beispiel #19
0
 public static bool Intersects(BoundingBox2 value1, BoundingBox2 value2)
 {
     return value1.Max.Y > value2.Min.Y && value1.Min.Y < value2.Max.Y && value1.Max.X > value2.Min.X && value1.Min.X < value2.Max.X;
 }
Beispiel #20
0
        public BoundingBox2 Union(BoundingBox2 value)
        {
            if (Min.X < value.Min.X) value.Min.X = Min.X;
            if (Max.X > value.Max.X) value.Max.X = Max.X;
            if (Min.Y < value.Min.Y) value.Min.Y = Min.Y;
            if (Max.Y > value.Max.Y) value.Max.Y = Max.Y;

            return value;
        }