Exemple #1
0
        public MovementDirectionEnum ImageRectangleHitSideBoundaries(ImageObjectShapeModel rectangleShape1, ImageObjectShapeModel rectangleShape2)
        {
            //Castle Limits
            var objA_x  = rectangleShape1.LocationX;
            var objA_y  = rectangleShape1.LocationY;
            var objA_x1 = objA_x + rectangleShape1.Width;
            var objA_y1 = objA_y + rectangleShape1.Height;


            var objB_x  = rectangleShape2.LocationX;
            var objB_y  = rectangleShape2.LocationY;
            var objB_x1 = objB_x + rectangleShape2.Width;
            var objB_y1 = objB_y + rectangleShape2.Height;

            var limitHit = MovementDirectionEnum.MovementClear_NoBoundariesReached;

            //Image hitting RIGHT Limit
            if (
                objA_x < objB_x && objB_x < objB_x1 && objB_x1 >= objA_x1
                &&
                objA_y < objB_y && objB_y < objB_y1 && objB_y1 < objA_y1
                )
            {
                limitHit = MovementDirectionEnum.MovingRight;
            }

            //Image hitting TOP Limit
            if (
                objA_x < objB_x && objB_x < objB_x1 && objB_x1 < objA_x1
                &&
                objA_y >= objB_y && objB_y < objB_y1 && objB_y1 < objA_y1
                )
            {
                limitHit = MovementDirectionEnum.MovingUp;
            }

            //Image hitting LEFT Limit
            if (
                objA_x >= objB_x && objB_x < objB_x1 && objB_x1 < objA_x1
                &&
                objA_y < objB_y && objB_y < objB_y1 && objB_y1 < objA_y1
                )
            {
                limitHit = MovementDirectionEnum.MovingLeft;
            }

            //Image hitting BOTTOM Limit
            if (
                objA_x < objB_x && objB_x < objB_x1 && objB_x1 < objA_x1
                &&
                objA_y < objB_y && objB_y < objB_y1 && objB_y1 >= objA_y1
                )
            {
                limitHit = MovementDirectionEnum.MovingDown;
            }
            return(limitHit);
        }
Exemple #2
0
        public ImageObjectShapeModel GetCanvasLocationAndDimensionsOuterLimits()
        {
            ImageObjectShapeModel imageObjectShape = new ImageObjectShapeModel()
            {
                LocationX = 30,
                LocationY = 20,
                Width     = 1260,
                Height    = 510,
            };

            return(imageObjectShape);
        }
Exemple #3
0
        public ImageObjectShapeModel GetCanvasLocationAndDimensionsInnerLimits()
        {
            ImageObjectShapeModel imageObjectShape = new ImageObjectShapeModel()
            {
                LocationX = -195,
                LocationY = -70,
                Width     = 995,
                Height    = 340,
            };

            return(imageObjectShape);
        }
Exemple #4
0
        public bool ImagesRectangleShapeCollisionDetected(ImageObjectShapeModel image1RectangleShape, ImageObjectShapeModel image2RectangleShape)
        {
            var objA_x  = image1RectangleShape.LocationX;
            var objA_y  = image1RectangleShape.LocationY;
            var objA_x1 = objA_x + image1RectangleShape.Width;
            var objA_y1 = objA_y - image1RectangleShape.Height;

            var objB_x  = image2RectangleShape.LocationX;
            var objB_y  = image2RectangleShape.LocationY;
            var objB_x1 = objB_x + image2RectangleShape.Width;
            var objB_y1 = objB_y - image2RectangleShape.Height;

            var ManualComparissonCase1 = false;
            var ManualComparissonCase2 = false;
            var ManualComparissonCase3 = false;
            var ManualComparissonCase4 = false;

            if (
                ((objA_x <= objB_x && objB_x <= objA_x1 && objA_x1 <= objB_x1) && (objB_y >= objA_y && objA_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objA_x1 && objA_x1 <= objB_x1) && (objA_y >= objB_y && objB_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objB_x1 && objB_x1 <= objA_x1) && (objB_y >= objA_y && objA_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objA_x1 && objA_x1 <= objB_x1) && (objB_y >= objA_y && objA_y >= objB_y1 && objB_y1 >= objA_y1))
                )
            {
                ManualComparissonCase1 = true;
            }

            if (
                ((objA_x <= objB_x && objB_x <= objA_x1 && objA_x1 <= objB_x1) && (objA_y >= objB_y && objB_y >= objB_y1 && objB_y1 >= objA_y1))
                ||
                ((objA_x <= objB_x && objB_x <= objB_x1 && objB_x1 <= objA_x1) && (objA_y >= objB_y && objB_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objB_x1 && objB_x1 <= objA_x1) && (objA_y >= objB_y && objB_y >= objB_y1 && objB_y1 >= objA_y1))
                ||
                ((objA_x <= objB_x && objB_x <= objB_x1 && objB_x1 <= objA_x1) && (objB_y >= objA_y && objA_y >= objB_y1 && objB_y1 >= objA_y1))

                )
            {
                ManualComparissonCase2 = true;
            }

            if (
                ((objB_x <= objA_x && objA_x <= objA_x1 && objA_x1 <= objB_x1) && (objB_y >= objA_y && objA_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objA_x <= objB_x && objB_x <= objB_x1 && objB_x1 <= objA_x1) && (objA_y >= objB_y && objB_y >= objB_y1 && objB_y1 >= objA_y1))
                )
            {
                ManualComparissonCase3 = true;
            }

            if (
                ((objA_x <= objB_x && objB_x <= objA_x1 && objA_x1 <= objB_x1) && (objB_y >= objA_y && objA_y >= objB_y1 && objB_y1 >= objA_y1))
                ||
                ((objA_x <= objB_x && objB_x <= objA_x1 && objA_x1 <= objB_x1) && (objA_y >= objB_y && objB_y >= objA_y1 && objA_y1 >= objB_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objB_x1 && objB_x1 <= objA_x1) && (objB_y >= objA_y && objA_y >= objB_y1 && objB_y1 >= objA_y1))
                ||
                ((objB_x <= objA_x && objA_x <= objB_x1 && objB_x1 <= objA_x1) && (objA_y >= objB_y && objB_y >= objA_y1 && objA_y1 >= objB_y1))
                )
            {
                ManualComparissonCase4 = true;
            }

            var rectangle1 = new Rect(image1RectangleShape.LocationX, image1RectangleShape.LocationY, image1RectangleShape.Width, image1RectangleShape.Height);
            var rectangle2 = new Rect(image2RectangleShape.LocationX, image2RectangleShape.LocationY, image2RectangleShape.Width, image2RectangleShape.Height);

            rectangle1.Intersect(rectangle2);
            var syntheticComparisson = false;

            if (rectangle1 != Rect.Empty)
            {
                syntheticComparisson = true;
            }
            if (
                ManualComparissonCase1 == true || ManualComparissonCase2 == true ||
                ManualComparissonCase3 == true || ManualComparissonCase4 == true
                ||
                syntheticComparisson == true
                )
            {
                return(true);
            }
            return(false);
        }