/// <summary>
        /// Get possible positioning to perform mining to given location
        /// </summary>
        public static DirectionSet GetPossibleMiningPositioning(this IEnvironmentObject env, IntVector3 p,
                                                                MineActionType mineActionType)
        {
            DirectionSet ds;

            switch (mineActionType)
            {
            case MineActionType.Mine:
                ds = DirectionSet.Planar;

                if (env.GetTileData(p.Up).IsClear)
                {
                    ds |= DirectionSet.DownNorth |
                          DirectionSet.DownEast |
                          DirectionSet.DownSouth |
                          DirectionSet.DownWest;
                }

                break;

            case MineActionType.Stairs:
                ds = DirectionSet.Planar | DirectionSet.Down;

                if (env.CanMoveFrom(p.Down, Direction.Up))
                {
                    ds |= DirectionSet.Up;
                }

                break;

            default:
                throw new Exception();
            }

            return(ds);
        }