public bool IntersectsY(VectorSprite a, VectorSprite b)
        {
            var deltaY1 = a.Position.Y + a.Sprite.Height - b.Position.Y;
            var deltaY2 = b.Position.Y + b.Sprite.Height - a.Position.Y;

            if (deltaY1 > 0 && deltaY1 <= 1)
                return true;

            if (deltaY2 > 0 && deltaY2 <= 1)
                return true;

            return false;
        }
        public bool IntersectsX(VectorSprite a, VectorSprite b)
        {
            var deltaX1 = a.Position.X + a.Sprite.Width - b.Position.X;
            var deltaX2 = b.Position.X + b.Sprite.Width - a.Position.X;

            if (deltaX1 > 0 && deltaX1 <= 1)
                return true;

            if (deltaX2 > 0 && deltaX2 <= 1)
                return true;

            return false;
        }
Ejemplo n.º 3
0
        //Creates a copy of a sprite, adds it to the list of sprites and returns the index of the new sprite.
        public int copySprite(int index)
        {
            VectorSprite vectorSprite = new VectorSprite(vectorSprites[index].name + " - Copy");

            vectorSprite.width     = vectorSprites[index].width;
            vectorSprite.height    = vectorSprites[index].height;
            vectorSprite.antialias = vectorSprites[index].antialias;
            vectorSprite.shapeGroupsScrollPosition = vectorSprites[index].shapeGroupsScrollPosition;
            vectorSprite.spriteRectangleTransform  = vectorSprites[index].spriteRectangleTransform;
            vectorSprite.spriteSheet   = vectorSprites[index].spriteSheet;
            vectorSprite.shapeGroupIDs = new List <int>();
            for (int i = 0; i < vectorSprites[index].shapeGroupIDs.Count; i++)
            {
                vectorSprite.shapeGroupIDs.Add(vectorSprites[index].shapeGroupIDs[i]);
            }
            vectorSprite.shapeIDs = new List <int>();
            for (int i = 0; i < vectorSprites[index].shapeIDs.Count; i++)
            {
                vectorSprite.shapeIDs.Add(vectorSprites[index].shapeIDs[i]);
            }
            vectorSprites.Add(vectorSprite);
            return(vectorSprites.Count - 1);
        }
        void UpdateSprite(GameTime gameTime, VectorSprite sprite)
        {
            sprite.UpdatePosition(gameTime);

            var maxX = Graphics.GraphicsDevice.Viewport.Width - sprite.Width;
            const int minX = 0;
            var maxY = Graphics.GraphicsDevice.Viewport.Height - sprite.Height;
            const int minY = 0;

            // Check for bounce.
            //if (sprite.Position.X + sprite.Position.X > maxX)
            //{
            //    sprite.Speed.X *= -1;
            //    sprite.Position.X = maxX - sprite.Position.X;
            //}
            //else if (sprite.Position.X < minX)
            //{
            //    sprite.Speed.X *= -1;
            //    sprite.Position.X = minX;
            //}
            //if (sprite.Position.Y + sprite.Position.Y > maxY)
            //{
            //    sprite.Speed.Y *= -1;
            //    sprite.Position.Y = maxY - sprite.Position.Y;
            //}
            //else if (sprite.Position.Y < minY)
            //{
            //    sprite.Speed.Y *= -1;
            //    sprite.Position.Y = minY;
            //}

            // Check for bounce.
            if (sprite.Position.X > maxX)
            {
                sprite.Speed.X *= -1;
                sprite.Position.X = maxX;
            }

            else if (sprite.Position.X < minX)
            {
                sprite.Speed.X *= -1;
                sprite.Position.X = minX;
            }

            if (sprite.Position.Y > maxY)
            {
                sprite.Speed.Y *= -1;
                sprite.Position.Y = maxY;
            }

            else if (sprite.Position.Y < minY)
            {
                sprite.Speed.Y *= -1;
                sprite.Position.Y = minY;
            }
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            SpriteBatch = new SpriteBatch(GraphicsDevice);

            var mageTexture = Content.Load<Texture2D>("BlackMage");
            var terraTexture = Content.Load<Texture2D>("Terra");

            mage = new VectorSprite(mageTexture, new Vector2(200, 200), new Vector2(80,-90));
            terra = new VectorSprite(terraTexture, Vector2.Zero, new Vector2(-110, 80));
        }