Пример #1
0
        static IntVector3? GetLocNearEntry(EnvironmentObject env)
        {
            foreach (var p in IntVector2.SquareSpiral(env.StartLocation.ToIntVector2(), env.Width / 2))
            {
                if (env.Size.Plane.Contains(p) == false)
                    continue;

                var p3 = env.GetSurfaceLocation(p);

                if (env.CanEnter(p3))
                    return p3;
            }

            return null;
        }
Пример #2
0
        static IntVector3?GetLocNearEntry(EnvironmentObject env)
        {
            foreach (var p in IntVector2.SquareSpiral(env.StartLocation.ToIntVector2(), env.Width / 2))
            {
                if (env.Size.Plane.Contains(p) == false)
                {
                    continue;
                }

                var p3 = env.GetSurfaceLocation(p);

                if (env.CanEnter(p3))
                {
                    return(p3);
                }
            }

            return(null);
        }
Пример #3
0
        static IntVector3?GetRandomRoomLoc(EnvironmentObject env, ref IntGrid2Z grid)
        {
            int x = grid.X + Helpers.GetRandomInt(grid.Columns);
            int y = grid.Y + Helpers.GetRandomInt(grid.Rows);

            foreach (var p in IntVector2.SquareSpiral(new IntVector2(x, y), Math.Max(grid.Columns, grid.Rows)))
            {
                if (env.Size.Plane.Contains(p) == false)
                {
                    continue;
                }

                var p3 = new IntVector3(p, grid.Z);

                if (env.CanEnter(p3) == false)
                {
                    continue;
                }

                return(p3);
            }

            return(null);
        }
Пример #4
0
        static IntVector3? GetRandomRoomLoc(EnvironmentObject env, ref IntGrid2Z grid)
        {
            int x = grid.X + Helpers.GetRandomInt(grid.Columns);
            int y = grid.Y + Helpers.GetRandomInt(grid.Rows);

            foreach (var p in IntVector2.SquareSpiral(new IntVector2(x, y), Math.Max(grid.Columns, grid.Rows)))
            {
                if (env.Size.Plane.Contains(p) == false)
                    continue;

                var p3 = new IntVector3(p, grid.Z);

                if (env.CanEnter(p3) == false)
                    continue;

                return p3;
            }

            return null;
        }