LeviLamina
Loading...
Searching...
No Matches
OverworldGenerator.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/threading/InstancedThreadLocal.h"
7#include "mc/util/MultidimensionalArray.h"
8#include "mc/util/Random.h"
9#include "mc/world/level/levelgen/WorldGenerator.h"
10#include "mc/world/level/levelgen/feature/CanyonFeature.h"
11#include "mc/world/level/levelgen/feature/MonsterRoomFeature.h"
12#include "mc/world/level/levelgen/feature/UnderwaterCanyonFeature.h"
13
14// auto generated forward declare list
15// clang-format off
16class Aquifer;
17class Biome;
18class BiomeArea;
19class Block;
20class BlockPos;
21class BlockSource;
23class BlockVolume;
25class BoundingBox;
27class ChunkPos;
28class ChunkViewSource;
29class Dimension;
30class LevelChunk;
34// clang-format on
35
37public:
38 // OverworldGenerator inner types declare
39 // clang-format off
40 struct ThreadData;
41 // clang-format on
42
43 // OverworldGenerator inner types define
45
46 struct ThreadData {
47 public:
48 // member variables
49 // NOLINTBEGIN
50 ::ll::TypedStorage<4, 4096, ::std::array<float, 1024>> buffer;
51 ::ll::TypedStorage<4, 1024, ::std::array<float, 256>> depthBuffer;
52 ::ll::TypedStorage<4, 1024, ::std::array<float, 256>> dataBuffer;
53 ::ll::TypedStorage<8, 655360, ::std::array<::Block const*, 81920>> blockBuffer;
54 ::ll::TypedStorage<8, 8, float*> fi;
55 ::ll::TypedStorage<8, 8, float*> fis;
56 ::ll::TypedStorage<8, 2576, ::Random> random;
57 // NOLINTEND
58 };
59
60public:
61 // member variables
62 // NOLINTBEGIN
63 ::ll::TypedStorage<4, 36, float[9]> mBiomeBlendKernel;
64 ::ll::TypedStorage<1, 1, bool const> mIsLegacyWorld;
65 ::ll::TypedStorage<
66 8,
67 168,
68 ::Bedrock::Threading::
69 InstancedThreadLocal<::OverworldGenerator::ThreadData, ::std::allocator<::OverworldGenerator::ThreadData>>>
70 generatorHelpersPool;
71 ::ll::TypedStorage<8, 32, ::MonsterRoomFeature> monsterRoomFeature;
72 ::ll::TypedStorage<2, 16, ::CanyonFeature> canyonFeature;
73 ::ll::TypedStorage<2, 16, ::UnderwaterCanyonFeature> underwaterCanyonFeature;
74 // NOLINTEND
75
76public:
77 // prevent constructor by default
79
80public:
81 // virtual functions
82 // NOLINTBEGIN
83 // vIndex: 0
84 virtual ~OverworldGenerator() /*override*/;
85
86 // vIndex: 14
87 virtual void loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad) /*override*/;
88
89 // vIndex: 9
90 virtual bool structurePostProcessChunk(::ChunkViewSource& neighborhoodIn) /*override*/;
91
92 // vIndex: 10
93 virtual bool decorationPostProcessChunk(::ChunkViewSource& neighborhoodIn) /*override*/;
94
95 // vIndex: 51
96 virtual ::Util::MultidimensionalArray<float, 5, 5, 41>
97 generateDensityCellsForChunk(::ChunkPos const& chunkPos) const = 0;
98
99 // vIndex: 45
100 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions() const /*override*/;
101
102 // vIndex: 42
103 virtual void prepareHeights(
104 ::BlockVolume& box,
105 ::ChunkPos const& chunkPos,
106 ::std::vector<short>* ZXheights,
107 bool factorInBeardsAndShavers
108 ) /*override*/;
109
110 // vIndex: 43
111 virtual ::BiomeArea getBiomeArea(::BoundingBox const& area, uint scale) const /*override*/;
112
113 // vIndex: 52
114 virtual int getLevelGenHeight() const = 0;
115
116 // vIndex: 53
117 virtual ::std::optional<::XoroshiroPositionalRandomFactory> getXoroshiroPositionalRandomFactory() const = 0;
118
119 // vIndex: 54
120 virtual ::std::unique_ptr<::Aquifer>
121 tryMakeAquifer(::ChunkPos const&, ::SurfaceLevelCache const&, short, short, short) const;
122
123 // vIndex: 49
124 virtual void decorateWorldGenLoadChunk(
125 ::Biome const& biome,
126 ::LevelChunk& lc,
127 ::BlockVolumeTarget& target,
128 ::Random& random,
129 ::ChunkPos const& pos
130 ) const /*override*/;
131
132 // vIndex: 55
133 virtual ::ChunkLocalNoiseCache createNoiseCache(::ChunkPos) const;
134
135 // vIndex: 56
136 virtual ::PerlinSimplexNoise const& getSurfaceNoise() = 0;
137
138 // vIndex: 57
139 virtual ::std::unique_ptr<::PerlinSimplexNoise> const& getMaterialAdjNoise() const = 0;
140
141 // vIndex: 58
142 virtual void _prepareHeights(
143 ::BlockVolume&,
144 ::ChunkPos const&,
145 ::ChunkLocalNoiseCache const&,
146 ::Aquifer*,
147 ::std::function<void(::BlockPos const&, ::Block const&, int)>&&,
148 bool,
149 ::std::vector<short>*
150 ) = 0;
151 // NOLINTEND
152
153public:
154 // member functions
155 // NOLINTBEGIN
156 MCAPI OverworldGenerator(::Dimension& dimension, bool isLegacyWorld);
157
158 MCAPI void buildSurfaces(
160 ::BlockVolume& blocks,
161 ::LevelChunk& levelChunk,
162 ::ChunkPos const& chunkPos,
163 ::SurfaceLevelCache const& surfaceLevelCache
164 );
165
166 MCAPI ::SurfaceLevelCache createSurfaceLevelCache(::ChunkPos chunkPos) const;
167 // NOLINTEND
168
169public:
170 // static functions
171 // NOLINTBEGIN
172 MCAPI static void
173 _fixWaterAlongEdges(::LevelChunk const& lc, ::BlockSource& source, ::BlockTickingQueue& instaTickQueue);
174 // NOLINTEND
175
176public:
177 // constructor thunks
178 // NOLINTBEGIN
179 MCAPI void* $ctor(::Dimension& dimension, bool isLegacyWorld);
180 // NOLINTEND
181
182public:
183 // destructor thunk
184 // NOLINTBEGIN
185 MCAPI void $dtor();
186 // NOLINTEND
187
188public:
189 // virtual function thunks
190 // NOLINTBEGIN
191 MCAPI void $loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad);
192
193 MCAPI bool $structurePostProcessChunk(::ChunkViewSource& neighborhoodIn);
194
195 MCAPI bool $decorationPostProcessChunk(::ChunkViewSource& neighborhoodIn);
196
197 MCAPI ::WorldGenerator::BlockVolumeDimensions $getBlockVolumeDimensions() const;
198
199 MCAPI void $prepareHeights(
200 ::BlockVolume& box,
201 ::ChunkPos const& chunkPos,
202 ::std::vector<short>* ZXheights,
203 bool factorInBeardsAndShavers
204 );
205
206 MCAPI ::BiomeArea $getBiomeArea(::BoundingBox const& area, uint scale) const;
207
208 MCFOLD ::std::unique_ptr<::Aquifer>
209 $tryMakeAquifer(::ChunkPos const&, ::SurfaceLevelCache const&, short, short, short) const;
210
211 MCFOLD void $decorateWorldGenLoadChunk(
212 ::Biome const& biome,
213 ::LevelChunk& lc,
214 ::BlockVolumeTarget& target,
215 ::Random& random,
216 ::ChunkPos const& pos
217 ) const;
218
219 MCAPI ::ChunkLocalNoiseCache $createNoiseCache(::ChunkPos) const;
220 // NOLINTEND
221
222public:
223 // vftables
224 // NOLINTBEGIN
225 MCNAPI static void** $vftableForChunkSource();
226
228 // NOLINTEND
229};
Definition Aquifer.h:17
Definition BiomeArea.h:11
Definition Biome.h:23
Definition BlockPos.h:17
Definition BlockSource.h:66
Definition BlockTickingQueue.h:24
Definition BlockVolumeTarget.h:29
Definition BlockVolume.h:13
Definition Block.h:38
Definition BoundingBox.h:13
Definition ChunkLocalNoiseCache.h:8
Definition ChunkPos.h:11
Definition ChunkViewSource.h:22
Definition Dimension.h:83
Definition LevelChunk.h:78
Definition OverworldGenerator.h:36
static MCAPI void ** $vftableForIPreliminarySurfaceProvider()
static MCAPI void ** $vftableForChunkSource()
Definition PerlinSimplexNoise.h:13
Definition Random.h:10
Definition SurfaceLevelCache.h:9
Definition MultidimensionalArray.h:12
Definition WorldGenerator.h:31
Definition XoroshiroPositionalRandomFactory.h:16
STL namespace.
Definition OverworldGenerator.h:46
Definition WorldGenerator.h:39
Definition buffer.h:5