LeviLamina
Loading...
Searching...
No Matches
RenderChunkCoordinator.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/game_refs/OwnerPtr.h"
7#include "mc/world/level/BlockChangedEventTarget.h"
8#include "mc/world/level/LevelListener.h"
9#include "mc/world/level/SubChunkPos.h"
10#include "mc/world/level/dimension/DimensionType.h"
11
12// auto generated forward declare list
13// clang-format off
14class Actor;
15class Block;
16class BlockPos;
17class BlockSource;
18class ChunkSource;
20class Level;
21class LevelChunk;
22class LevelRenderer;
29// clang-format on
30
32public:
33 // RenderChunkCoordinator inner types declare
34 // clang-format off
35 struct DirtyChunkData;
36 // clang-format on
37
38 // RenderChunkCoordinator inner types define
39 struct DirtyChunkData {};
40
41 using RenderChunkMapType = ::std::unordered_map<::SubChunkPos, ::std::weak_ptr<::RenderChunkShared>>;
42
43public:
44 // member variables
45 // NOLINTBEGIN
46 ::ll::TypedStorage<4, 4, float> mSweepAndPruneRatio;
47 ::ll::TypedStorage<
48 8,
49 8,
50 ::std::_List_const_iterator<::std::_List_val<
51 ::std::_List_simple_types<::std::pair<::SubChunkPos const, ::std::weak_ptr<::RenderChunkShared>>>>>>
52 mSweepAndPruneIterator;
53 ::ll::TypedStorage<8, 64, ::std::unordered_map<::SubChunkPos, ::std::weak_ptr<::RenderChunkShared>>>
54 mRenderChunkSharedMap;
55 ::ll::TypedStorage<8, 8, ::Level&> mLevel;
56 ::ll::TypedStorage<8, 8, ::LevelRenderer&> mLevelRenderer;
57 ::ll::TypedStorage<8, 24, ::std::vector<::LevelRendererCamera*>> mLevelRendererCameraListenerList;
58 ::ll::TypedStorage<4, 4, ::DimensionType> mDimensionId;
59 ::ll::TypedStorage<8, 64, ::std::unordered_map<::SubChunkPos, ::RenderChunkCoordinator::DirtyChunkData>>
60 mVisibilityDirtyRenderChunkMap;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<::SubChunkPos, ::std::vector<::ActorBlockSyncMessage>>>
62 mRenderChunkChangedEntityNotificationMap;
63 ::ll::TypedStorage<8, 64, ::std::unordered_map<::SubChunkPos, ::std::vector<::BlockActorBlockSyncMessage>>>
64 mRenderChunkChangedBlockEntityNotificationMap;
65 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::RenderChunkCoordinatorProxy>> mProxy;
66 ::ll::TypedStorage<8, 16, ::OwnerPtr<::RenderChunkPerformanceData>> mRenderChunkPerformanceRegistry;
67 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IRenderChunkGarbage>> mGarbage;
68 // NOLINTEND
69
70public:
71 // prevent constructor by default
72 RenderChunkCoordinator& operator=(RenderChunkCoordinator const&);
73 RenderChunkCoordinator(RenderChunkCoordinator const&);
74 RenderChunkCoordinator();
75
76public:
77 // virtual functions
78 // NOLINTBEGIN
79 virtual ~RenderChunkCoordinator() /*override*/;
80
81 virtual void onChunkLoaded(::ChunkSource& lc, ::LevelChunk&) /*override*/;
82
83 virtual void onSubChunkLoaded(
84 ::ChunkSource& lc,
85 ::LevelChunk& absoluteSubChunkIndex,
86 short subChunkVisibilityChanged,
87 bool
88 ) /*override*/;
89
90 virtual void onBrightnessChanged(::BlockSource& source, ::BlockPos const& pos) /*override*/;
91
92 virtual void onAreaChanged(::BlockSource& source, ::BlockPos const& min, ::BlockPos const& max) /*override*/;
93
94 virtual void onBlockChanged(
95 ::BlockSource& source,
96 ::BlockPos const& pos,
97 uint layer,
98 ::Block const& block,
99 ::Block const& oldBlock,
100 int updateFlags,
101 ::ActorBlockSyncMessage const* syncMsg,
102 ::BlockChangedEventTarget eventTarget,
103 ::Actor* blockChangeSource
104 ) /*override*/;
105 // NOLINTEND
106
107public:
108 // member functions
109 // NOLINTBEGIN
110 MCAPI RenderChunkCoordinator(::Level& level, ::LevelRenderer& levelRenderer, ::DimensionType dimensionID);
111
112 MCAPI void _handleVisibilityUpdates();
113
114 MCAPI void _launchVisibilityRebuild(::std::shared_ptr<::RenderChunkShared>& renderChunkShared);
115
116 MCAPI void _setAllDirty(bool immediate, bool changesVisibility);
117
118 MCAPI void
119 _setDirty(::BlockPos const& min, ::BlockPos const& max, bool immediate, bool changesVisibility, bool canInterlock);
120
121 MCAPI void addLevelRendererCameraListener(::LevelRendererCamera* levelRendererCamera);
122
123 MCAPI ::std::shared_ptr<::RenderChunkShared> getOrCreateChunkAtPos(::SubChunkPos const& pos);
124
125 MCFOLD ::RenderChunkCoordinatorProxy* getProxy();
126
127 MCAPI uint64 getRenderChunkGeometryFaceMetadataMemoryUsed() const;
128
129 MCAPI void preRenderTick();
130
131 MCAPI void rebuildAllRenderChunkGeometry();
132
133 MCAPI void relightAllRenderChunkGeometry();
134
135 MCAPI void removeLevelRendererCameraListener(::LevelRendererCamera* levelRendererCamera);
136
137 MCAPI void tick();
138 // NOLINTEND
139
140public:
141 // static functions
142 // NOLINTBEGIN
143 MCAPI static bool shouldSetBlockAsDirty(
144 ::BlockPos const& pos,
145 ::Block const& block,
146 ::Block const& oldBlock,
147 ::BlockPos& min,
148 ::BlockPos& max,
149 bool& changesVisibility
150 );
151 // NOLINTEND
152
153public:
154 // constructor thunks
155 // NOLINTBEGIN
156 MCAPI void* $ctor(::Level& level, ::LevelRenderer& levelRenderer, ::DimensionType dimensionID);
157 // NOLINTEND
158
159public:
160 // destructor thunk
161 // NOLINTBEGIN
162 MCAPI void $dtor();
163 // NOLINTEND
164
165public:
166 // virtual function thunks
167 // NOLINTBEGIN
168 MCAPI void $onChunkLoaded(::ChunkSource& lc, ::LevelChunk&);
169
170 MCAPI void
171 $onSubChunkLoaded(::ChunkSource& lc, ::LevelChunk& absoluteSubChunkIndex, short subChunkVisibilityChanged, bool);
172
173 MCAPI void $onBrightnessChanged(::BlockSource& source, ::BlockPos const& pos);
174
175 MCAPI void $onAreaChanged(::BlockSource& source, ::BlockPos const& min, ::BlockPos const& max);
176
177 MCAPI void $onBlockChanged(
178 ::BlockSource& source,
179 ::BlockPos const& pos,
180 uint layer,
181 ::Block const& block,
182 ::Block const& oldBlock,
183 int updateFlags,
184 ::ActorBlockSyncMessage const* syncMsg,
185 ::BlockChangedEventTarget eventTarget,
186 ::Actor* blockChangeSource
187 );
188 // NOLINTEND
189
190public:
191 // vftables
192 // NOLINTBEGIN
193 MCNAPI static void** $vftable();
194 // NOLINTEND
195};
Definition Actor.h:125
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition Block.h:69
Definition ChunkSource.h:37
Definition IRenderChunkGarbage.h:5
Definition LevelChunk.h:87
Definition LevelListener.h:28
Definition LevelRendererCamera.h:5
Definition LevelRenderer.h:5
Definition Level.h:255
Definition RenderChunkCoordinatorProxy.h:5
Definition RenderChunkCoordinator.h:5
static MCAPI void ** $vftable()
Definition RenderChunkPerformanceData.h:5
Definition RenderChunkShared.h:5
Definition ActorBlockSyncMessage.h:8
Definition BlockActorBlockSyncMessage.h:5
Definition RenderChunkCoordinator.h:13