/// <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); }
public IEnumerable <Direction> GetValidDirs(IntVector3 p) { return(EnvironmentExtensions.GetDirectionsFrom(m_env, p)); }