Dwarrowdelf.EnvironmentExtensions.AdjustMoveDir C# (CSharp) Method

AdjustMoveDir() public static method

For PlanarUpDown directions, return Direction.None if the direction cannot be entered, or the direction, adjusted by slopes (i.e. or'ed with Up or Down)
public static AdjustMoveDir ( this env, IntVector3 location, Direction dir ) : Direction
env this
location IntVector3
dir Direction
return Direction
        public static Direction AdjustMoveDir(this IEnvironmentObject env, IntVector3 location, Direction dir)
        {
            Debug.Assert(dir.IsValid());
            Debug.Assert(dir != Direction.None);
            Debug.Assert(dir.IsPlanarUpDown());

            if (EnvironmentExtensions.CanMoveFromTo(env, location, dir))
                return dir;

            if (dir == Direction.Up || dir == Direction.Down)
                return Direction.None;

            if (EnvironmentExtensions.CanMoveFromTo(env, location, dir | Direction.Up))
                return dir | Direction.Up;

            if (EnvironmentExtensions.CanMoveFromTo(env, location, dir | Direction.Down))
                return dir | Direction.Down;

            return Direction.None;
        }