/// <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);
        }
Пример #2
0
 public IEnumerable <Direction> GetValidDirs(IntVector3 p)
 {
     return(EnvironmentExtensions.GetDirectionsFrom(m_env, p));
 }