47 ::ll::TypedStorage<4, 4, uint> mWidth;
48 ::ll::TypedStorage<4, 4, uint> mDepth;
49 ::ll::TypedStorage<4, 4, uint> mHeight;
56 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::StructureFeatureRegistry>> mStructureFeatureRegistry;
57 ::ll::TypedStorage<8, 80, ::std::mutex> mCreateStructuresAndVisitedPositionsMutex;
58 ::ll::TypedStorage<8, 72, ::std::condition_variable> mStructureInstanceWaitVar;
59 ::ll::TypedStorage<4, 4, ::std::atomic<int>> mActiveStructureInstanceCreateCount;
60 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ChunkPos>> mVisitedPositions;
61 ::ll::TypedStorage<4, 4, ::Bedrock::Threading::InstancedThreadLocalValue<::br::worldgen::ChunkAccessor*>>
62 mThreadLocalHeightmapProvider;
72 virtual ~WorldGenerator() ;
74 virtual ::HashedString findStructureFeatureTypeAt(
::BlockPos const& pos);
78 virtual bool findNearestStructureFeature(
82 bool mustBeInNewChunks,
83 ::std::optional<::HashedString> biomeTag
86 virtual ::StructureFeature* getStructureFeatureOfType(
::HashedString type)
const;
90 virtual void prepareHeights(
93 ::std::vector<short>* ZXheights,
94 bool factorInBeardsAndShavers
97 virtual ::BiomeArea getBiomeArea(
::BoundingBox const& area, uint scale)
const = 0;
99 virtual ::BiomeSource
const& getBiomeSource()
const = 0;
101 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions()
const = 0;
103 virtual ::BlockPos findSpawnPosition()
const = 0;
106 postProcessMobsAt(
::BlockSource& region,
int chunkWestBlock,
int chunkNorthBlock,
::Random& random) ;
110 virtual ::std::optional<short> getPreliminarySurfaceLevel(
::DividedPos2d<4> worldQuartPos)
const ;
112 virtual void debugRender();
114 virtual void propagateCombinedChunkSource(::ChunkSource* chunkSource);
116 virtual void decorateWorldGenLoadChunk(
124 virtual void decorateWorldGenPostProcess(
131 virtual ::std::shared_ptr<::br::worldgen::StructureInstance>
138 MCAPI
explicit WorldGenerator(
::Dimension& dimension);
141 WorldGenerator(
::Dimension& dimension, ::std::unique_ptr<::StructureFeatureRegistry> structureFeatureRegistry);
143 MCAPI
bool _tryGenerateStructure(
151 MCAPI ::std::vector<short> computeChunkHeightMap(
::ChunkPos const& pos);
153 MCAPI
void postProcessStructureFeatures(
::BlockSource& region,
::Random& random, uint seed,
int chunkX,
int chunkZ);
159 MCAPI
void prepareStructureFeatureBlueprints(
170 MCAPI
void waitForStructures();
178 MCAPI
void* $ctor(
::Dimension& dimension, ::std::unique_ptr<::StructureFeatureRegistry> structureFeatureRegistry);
190 MCAPI ::HashedString $findStructureFeatureTypeAt(
::BlockPos const& pos);
194 MCAPI
bool $findNearestStructureFeature(
198 bool mustBeInNewChunks,
199 ::std::optional<::HashedString> biomeTag
202 MCAPI ::StructureFeature* $getStructureFeatureOfType(
::HashedString type)
const;
206 MCAPI
void $postProcessMobsAt(
::BlockSource& region,
int chunkWestBlock,
int chunkNorthBlock,
::Random& random);
210 MCAPI ::std::optional<short> $getPreliminarySurfaceLevel(
::DividedPos2d<4> worldQuartPos)
const;
212 MCFOLD
void $debugRender();
214 MCFOLD
void $propagateCombinedChunkSource(::ChunkSource* chunkSource);
216 MCAPI ::std::shared_ptr<::br::worldgen::StructureInstance>