コード例 #1
0
        public eCollisionDirection GetCollisionDirection(Sprite i_Sprite, Sprite i_OtherSprite)
        {
            eCollisionDirection collisionDirection = eCollisionDirection.Bottom;

            if (isCollidedFromTop(i_Sprite, i_OtherSprite))
            {
                collisionDirection = eCollisionDirection.Top;
            }

            return(collisionDirection);
        }
コード例 #2
0
        public void ClearPixelsInVerticalDirection(ref Sprite io_Sprite, List<Vector2> i_StartPixelPositions, eCollisionDirection i_Direction, int i_Length)
        {
            Color[] spritePixels = io_Sprite.Pixels;

            foreach (Vector2 position in i_StartPixelPositions)
            {
                int y = (int)position.Y, x = (int)position.X, index;
                switch (i_Direction)
                {
                    case eCollisionDirection.Top:
                        for (int i = 0; i < i_Length; i++, y++)
                        {
                            index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width);
                            if (index > -1 || !(index >= spritePixels.Length))
                            {
                                spritePixels[index].A = 0;
                            }
                            else
                            {
                                break;
                            }
                        }

                        break;

                    case eCollisionDirection.Bottom:
                        for (int i = 0; i < i_Length; i++, y--)
                        {
                            index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width);
                            if (index > -1 && !(index >= spritePixels.Length))
                            {
                                spritePixels[index].A = 0;
                            }
                            else
                            {
                                break;
                            }
                        }

                        break;
                }
            }

            io_Sprite.Pixels = spritePixels;
        }
コード例 #3
0
        public void ClearPixelsInVerticalDirection(ref Sprite io_Sprite, List <Vector2> i_StartPixelPositions, eCollisionDirection i_Direction, int i_Length)
        {
            Color[] spritePixels = io_Sprite.Pixels;

            foreach (Vector2 position in i_StartPixelPositions)
            {
                int y = (int)position.Y, x = (int)position.X, index;
                switch (i_Direction)
                {
                case eCollisionDirection.Top:
                    for (int i = 0; i < i_Length; i++, y++)
                    {
                        index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width);
                        if (index > -1 || !(index >= spritePixels.Length))
                        {
                            spritePixels[index].A = 0;
                        }
                        else
                        {
                            break;
                        }
                    }

                    break;

                case eCollisionDirection.Bottom:
                    for (int i = 0; i < i_Length; i++, y--)
                    {
                        index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width);
                        if (index > -1 && !(index >= spritePixels.Length))
                        {
                            spritePixels[index].A = 0;
                        }
                        else
                        {
                            break;
                        }
                    }

                    break;
                }
            }

            io_Sprite.Pixels = spritePixels;
        }