LeviLamina
Loading...
Searching...
No Matches
DensityFunctionWorldGenerator.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/Random.h"
8#include "mc/util/random/XoroshiroRandom.h"
9#include "mc/world/level/DividedPos2d.h"
10#include "mc/world/level/levelgen/WorldGenerator.h"
11#include "mc/world/level/levelgen/density/DensityCalculators.h"
12#include "mc/world/level/levelgen/synth/PerlinSimplexNoise.h"
13
14// auto generated forward declare list
15// clang-format off
16class Biome;
17class BiomeArea;
18class BiomeSource;
19class Block;
20class BlockPos;
21class BlockSource;
22class BlockVolume;
24class BoundingBox;
25class ChunkPos;
26class ChunkViewSource;
27class LevelChunk;
28// clang-format on
29
30class DensityFunctionWorldGenerator : public ::WorldGenerator {
31public:
32 // DensityFunctionWorldGenerator inner types declare
33 // clang-format off
34 struct ThreadData;
35 // clang-format on
36
37 // DensityFunctionWorldGenerator inner types define
38 struct ThreadData {
39 public:
40 // member variables
41 // NOLINTBEGIN
42 ::ll::TypedStorage<8, 2560, ::Random> random;
43 ::ll::TypedStorage<8, 24, ::std::vector<::Block const*>> blockResults;
44 ::ll::TypedStorage<1, 1, bool> blockResultsInUse;
45 // NOLINTEND
46 };
47
48public:
49 // member variables
50 // NOLINTBEGIN
51 ::ll::TypedStorage<
52 8,
53 168,
56 ::std::allocator<::DensityFunctionWorldGenerator::ThreadData>>>
57 generatorHelpersPool;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BiomeSource>> mBiomeSource;
59 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mCalculatorMutex;
60 ::ll::TypedStorage<8, 32, ::DensityCalculators> mDensityCalculators;
61 ::ll::TypedStorage<8, 8, ::gsl::not_null<::Block const*>> mFillBlock;
62 ::ll::TypedStorage<8, 40, ::PerlinSimplexNoise> mMaterialAdjNoise;
63 ::ll::TypedStorage<8, 40, ::XoroshiroRandom> mSurfaceRandom;
64 ::ll::TypedStorage<8, 40, ::PerlinSimplexNoise> mSurfaceNoise;
65 // NOLINTEND
66
67public:
68 // virtual functions
69 // NOLINTBEGIN
70 virtual ~DensityFunctionWorldGenerator() /*override*/ = default;
71
72 virtual void loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad) /*override*/;
73
74 virtual bool structurePostProcessChunk(::ChunkViewSource&) /*override*/;
75
76 virtual bool decorationPostProcessChunk(::ChunkViewSource&) /*override*/;
77
78 virtual void prepareHeights(::BlockVolume&, ::ChunkPos const&, ::std::vector<short>*, bool) /*override*/;
79
80 virtual ::BiomeArea getBiomeArea(::BoundingBox const&, uint) const /*override*/;
81
82 virtual ::BiomeSource const& getBiomeSource() const /*override*/;
83
84 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions() const /*override*/;
85
86 virtual ::BlockPos findSpawnPosition() const /*override*/;
87
88 virtual ::std::optional<short> getPreliminarySurfaceLevel(::DividedPos2d<4>) const /*override*/;
89
90 virtual void
91 decorateWorldGenLoadChunk(::Biome const&, ::LevelChunk&, ::BlockVolumeTarget&, ::Random&, ::ChunkPos const&) const
92 /*override*/;
93
94 virtual void decorateWorldGenPostProcess(::Biome const&, ::LevelChunk&, ::BlockSource&, ::Random&) const
95 /*override*/;
96 // NOLINTEND
97};
Definition InstancedThreadLocal.h:8
Definition BiomeArea.h:10
Definition BiomeSource.h:23
Definition Biome.h:23
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition BlockVolumeTarget.h:28
Definition BlockVolume.h:14
Definition Block.h:41
Definition BoundingBox.h:13
Definition ChunkPos.h:13
Definition ChunkViewSource.h:22
Definition DensityFunctionWorldGenerator.h:30
Definition DividedPos2d.h:7
Definition LevelChunk.h:77
Definition Random.h:10
STL namespace.
Definition DensityFunctionWorldGenerator.h:38
Definition WorldGenerator.h:43