LeviLamina
Loading...
Searching...
No Matches
Aquifer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/level/BlockPos.h"
7
8// auto generated forward declare list
9// clang-format off
10class AquiferNoises;
11class Block;
12class ChunkPos;
15// clang-format on
16
17class Aquifer {
18public:
19 // Aquifer inner types declare
20 // clang-format off
21 struct FluidSample;
22 struct LocalRegistry;
23 // clang-format on
24
25 // Aquifer inner types define
26 struct FluidSample {
27 public:
28 // FluidSample inner types define
29 enum class FluidType : schar {
30 Water = 0,
31 Lava = 1,
32 None = 2,
33 };
34
35 public:
36 // member variables
37 // NOLINTBEGIN
38 ::ll::TypedStorage<4, 12, ::BlockPos> pos;
39 ::ll::TypedStorage<4, 4, int> blockLevel;
40 ::ll::TypedStorage<1, 1, ::Aquifer::FluidSample::FluidType> fluidType;
41 // NOLINTEND
42 };
43
44 struct LocalRegistry {
45 public:
46 // member variables
47 // NOLINTBEGIN
48 ::ll::TypedStorage<8, 8, ::Block const&> mWater;
49 ::ll::TypedStorage<8, 8, ::Block const&> mLava;
50 // NOLINTEND
51
52 public:
53 // prevent constructor by default
54 LocalRegistry& operator=(LocalRegistry const&);
55 LocalRegistry(LocalRegistry const&);
56 LocalRegistry();
57 };
58
59 using AquifierGridPos = ::BlockPos;
60
61public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<8, 8, ::AquiferNoises const&> mAquiferNoises;
65 ::ll::TypedStorage<8, 8, ::OverworldNoises3d const&> mTerrainNoises;
66 ::ll::TypedStorage<8, 8, ::SurfaceLevelCache const&> mSurfaceLevelCache;
67 ::ll::TypedStorage<4, 4, int> mSeaLevel;
68 ::ll::TypedStorage<4, 4, int> mLastFluidLevel;
69 ::ll::TypedStorage<4, 4, float> mLastBarrierDensity;
70 ::ll::TypedStorage<1, 1, ::Aquifer::FluidSample::FluidType> mLastFluidType;
71 ::ll::TypedStorage<1, 1, bool> mShouldScheduleFluidUpdate;
72 ::ll::TypedStorage<4, 12, ::BlockPos> mMinGrid;
73 ::ll::TypedStorage<4, 12, ::BlockPos> mGridSize;
74 ::ll::TypedStorage<8, 24, ::std::vector<::Aquifer::FluidSample>> mFluidLevelCache;
75 ::ll::TypedStorage<8, 16, ::Aquifer::LocalRegistry> mLocalRegistry;
76 // NOLINTEND
77
78public:
79 // prevent constructor by default
80 Aquifer& operator=(Aquifer const&);
81 Aquifer(Aquifer const&);
82 Aquifer();
83
84public:
85 // member functions
86 // NOLINTBEGIN
87 MCAPI Aquifer(
88 ::ChunkPos const& chunkPos,
89 ::AquiferNoises const& aquiferNoises,
90 ::OverworldNoises3d const& terrainNoises,
91 ::SurfaceLevelCache const& surfaceLevelCache,
92 int dimensionMinHeight,
93 int levelGenHeight,
94 int seaLevel
95 );
96
97 MCAPI ::Aquifer::FluidSample _computeAquifer(::BlockPos const& cellCenter) const;
98
99 MCAPI void computeAt(::BlockPos const& worldPos);
100
101 MCFOLD float getLastBarrier() const;
102
103 MCAPI ::Block const* getLastFluidBlockType() const;
104
105 MCFOLD int getLastFluidLevel() const;
106
107 MCFOLD bool shouldScheduleFluidUpdate() const;
108 // NOLINTEND
109
110public:
111 // static variables
112 // NOLINTBEGIN
113 MCAPI static ::std::array<::std::pair<int, int>, 13> const& chunkOffset();
114 // NOLINTEND
115
116public:
117 // constructor thunks
118 // NOLINTBEGIN
119 MCAPI void* $ctor(
120 ::ChunkPos const& chunkPos,
121 ::AquiferNoises const& aquiferNoises,
122 ::OverworldNoises3d const& terrainNoises,
123 ::SurfaceLevelCache const& surfaceLevelCache,
124 int dimensionMinHeight,
125 int levelGenHeight,
126 int seaLevel
127 );
128 // NOLINTEND
129};
Definition AquiferNoises.h:10
Definition BlockPos.h:21
Definition Block.h:69
Definition ChunkPos.h:11
Definition SurfaceLevelCache.h:9
Definition Aquifer.h:26
Definition Aquifer.h:44
Definition OverworldNoises3d.h:18