Bricklayer.Client.Entities.Player.HandleCollisions C# (CSharp) Method

HandleCollisions() private method

Handles collisions for a given block
private HandleCollisions ( GameTime gameTime, CollisionDirection direction, BlockCollision collision, Rectangle tileBounds, Vector2 depth, bool intersects, int x, int y ) : bool
gameTime Microsoft.Xna.Framework.GameTime
direction CollisionDirection
collision BlockCollision
tileBounds Microsoft.Xna.Framework.Rectangle
depth Vector2
intersects bool
x int
y int
return bool
        private bool HandleCollisions(GameTime gameTime, CollisionDirection direction, BlockCollision collision, Rectangle tileBounds, Vector2 depth, bool intersects, int x, int y)
        {
            if (collision != BlockCollision.Passable && intersects)
            {
                // If we crossed the top of a tile, we are on the ground.
                if (PreviousState.Bounds.Bottom <= tileBounds.Top)
                {
                    if (collision == BlockCollision.Platform)
                    {
                        IsOnGround = true;
                    }
                }
                if (collision == BlockCollision.Gravity)
                {
                    Tile tile = Map.Tiles[x, y, 1];
                    if (tile.Block == BlockType.UpArrow)
                        GravityDirection = GravityDirection.Up;
                    else if (tile.Block == BlockType.DownArrow)
                        GravityDirection = GravityDirection.Down;
                    else if (tile.Block == BlockType.RightArrow)
                        GravityDirection = GravityDirection.Right;
                    else if (tile.Block == BlockType.LeftArrow)
                        GravityDirection = GravityDirection.Left;
                    return true;
                }
                if (collision == BlockCollision.Impassable || IsOnGround)
                {
                    //Now that we know we hit something, resolve the collison
                    if (direction == CollisionDirection.Horizontal)
                    {
                        SimulationState.Position.X += depth.X;
                        IsOnGround = true;
                    }
                    if (direction == CollisionDirection.Vertical)
                    {
                        //Cancel jump if hit something (Ie, when you jump and hit the roof)
                        IsJumping = false;
                        JumpTime = 0;
                        //Obviously hit ground or roof
                        IsOnGround = true;

                        SimulationState.Position.Y += depth.Y;
                    }
                }
            }
            return false;
        }

Same methods

Player::HandleCollisions ( CollisionDirection direction, GameTime gameTime ) : void