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 float _calculatePressure(
98 ::BlockPos worldPos,
99 float& barrierNoiseValue,
100 ::Aquifer::FluidSample const& fluidYClosest1,
101 ::Aquifer::FluidSample const& fluidYClosest2
102 ) const;
103
104 MCAPI ::Aquifer::FluidSample _computeAquifer(::BlockPos const& cellCenter) const;
105
106 MCAPI ::Aquifer::FluidSample _getOrComputeNewFluidSample(::BlockPos const& cellCenter);
107
108 MCAPI void computeAt(::BlockPos const& worldPos);
109 // NOLINTEND
110
111public:
112 // static variables
113 // NOLINTBEGIN
114 MCAPI static ::std::array<::std::pair<int, int>, 13> const& chunkOffset();
115 // NOLINTEND
116
117public:
118 // constructor thunks
119 // NOLINTBEGIN
120 MCAPI void* $ctor(
121 ::ChunkPos const& chunkPos,
122 ::AquiferNoises const& aquiferNoises,
123 ::OverworldNoises3d const& terrainNoises,
124 ::SurfaceLevelCache const& surfaceLevelCache,
125 int dimensionMinHeight,
126 int levelGenHeight,
127 int seaLevel
128 );
129 // NOLINTEND
130};
Definition AquiferNoises.h:10
Definition BlockPos.h:19
Definition Block.h:43
Definition ChunkPos.h:11
Definition SurfaceLevelCache.h:9
Definition Aquifer.h:26
Definition Aquifer.h:44
Definition OverworldNoises3d.h:19