Dwarrowdelf.EnvironmentExtensions.CanMoveFromTo C# (CSharp) Method

CanMoveFromTo() public static method

Determine if a living can move from srcLoc to dir
public static CanMoveFromTo ( this env, IntVector3 srcLoc, Direction dir ) : bool
env this
srcLoc IntVector3
dir Direction
return bool
        public static bool CanMoveFromTo(this IEnvironmentObject env, IntVector3 srcLoc, Direction dir)
        {
            var dstLoc = srcLoc + dir;
            return CanMoveFrom(env, srcLoc, dir) && CanMoveTo(env, dstLoc, dir);
        }

Usage Example

        /// <summary>
        /// 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)
        /// </summary>
        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);
        }