Esempio n. 1
0
 private void clearCollisionData(CollidableSprite i_Target, CollidableSprite i_Sender)
 {
     i_Target.LastCollisionPixelsIndex.Clear();
     i_Target.LastCollisionPixelsPositions.Clear();
     i_Sender.LastCollisionPixelsIndex.Clear();
     i_Sender.LastCollisionPixelsPositions.Clear();
 }
Esempio n. 2
0
    public override void Init()
    {
        animTest = AnimationFactory.GenerateAnimation("Images//Ness2.png", 128, 128, 5, 0.15);
        sprite   = new CollidableSprite();
        sprite.AddAnimation(animTest);

        Physics.Add(gravity);
        Physics.Add(ground);
        Physics.Add(sprite);
    }
Esempio n. 3
0
        private int getHittenSpritesRowInPixelsArray(CollidableSprite i_HittenSprite, CollidableSprite i_Sender)
        {
            int wallColomn = (int)(i_HittenSprite as CollidableSprite).LastCollisionPixelsIndex[0].Y;

            if (i_Sender.Velocity.Y < 0)
            {
                wallColomn -= (int)(SpaceInvadersConfig.k_sizeOfBulletHitEffect * i_Sender.Texture.Height);
            }

            return(wallColomn);
        }
Esempio n. 4
0
        private void deletePixelsInVerticalDirection(CollidableSprite i_Target, CollidableSprite i_Sender)
        {
            int targetStartColomn = this.getHittenSpritesColomnInPixelsArray(i_Target, i_Sender);
            int targetRow = this.getHittenSpritesRowInPixelsArray(i_Target, i_Sender);
            int senderMinY, senderMaxY;

            if (i_Sender.Velocity.Y < 0)
            {
                senderMinY = 0;
                senderMaxY = (int)(SpaceInvadersConfig.k_sizeOfBulletHitEffect * i_Sender.Texture.Height) + 1;
            }
            else
            {
                senderMinY = (int)((1 - SpaceInvadersConfig.k_sizeOfBulletHitEffect) * i_Sender.Texture.Height);
                senderMaxY = i_Sender.Texture.Height;
            }

            int targetColomn = targetStartColomn;

            /// delete pixels
            for (int senderRow = senderMinY; senderRow < senderMaxY; senderRow++)
            {
                targetColomn = targetStartColomn;
                for (int senderColomn = 0; senderColomn < i_Sender.Texture.Width; senderColomn++)
                {
                    if (i_Sender.Pixels[senderColomn + (senderRow * i_Sender.Texture.Width)].A != 0 &&
                        (targetColomn + (targetRow * i_Target.Texture.Width)) < i_Target.Pixels.Length &&
                        targetColomn + (targetRow * i_Target.Texture.Width) > 0)
                    {
                        i_Target.Pixels[targetColomn + (targetRow * i_Target.Texture.Width)] = new Color(0, 0, 0, 0);
                    }

                    targetColomn++;
                    if (targetColomn > i_Target.Texture.Width)
                    {
                        break;
                    }
                }

                targetRow++;
                if (targetRow > i_Target.Height)
                {
                    break;
                }
            }

            i_Target.CurrTexture.SetData(i_Target.Pixels);
            this.clearCollisionData(i_Target, i_Sender);
        }
Esempio n. 5
0
 private int getHittenSpritesColomnInPixelsArray(CollidableSprite i_HittenSprite, CollidableSprite i_Sender)
 {
     return(MathHelper.Clamp((int)i_HittenSprite.LastCollisionPixelsIndex[0].X + (int)((i_Sender.Texture.Width / 2) - i_Sender.LastCollisionPixelsIndex[0].X) - (i_Sender.Texture.Width / 2), 0, i_HittenSprite.Texture.Width));
 }