LeviLamina
Loading...
Searching...
No Matches
LevelRenderer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/renderer/debug/DebugRenderer.h"
7#include "mc/client/renderer/game/LevelBuilder.h"
8#include "mc/client/renderer/game/ShadowCascadeState.h"
9#include "mc/client/renderer/scripting/Renderer.h"
10#include "mc/deps/application/AppPlatformListener.h"
11#include "mc/deps/application/LowMemorySeverity.h"
12#include "mc/deps/core/math/Color.h"
13#include "mc/deps/core/utility/AutomaticID.h"
14#include "mc/deps/core/utility/NonOwnerPointer.h"
15#include "mc/deps/core/utility/pub_sub/Subscription.h"
16#include "mc/deps/ecs/WeakEntityRef.h"
17#include "mc/deps/game_refs/OwnerPtr.h"
18#include "mc/deps/game_refs/StackRefResult.h"
19#include "mc/deps/minecraft_renderer/renderer/TexturePtr.h"
20#include "mc/world/level/BlockChangedEventTarget.h"
21#include "mc/world/level/LevelListener.h"
22#include "mc/world/level/Tick.h"
23
24// auto generated forward declare list
25// clang-format off
26class Actor;
28class Block;
30class BlockPos;
31class BlockSource;
35class Dimension;
36class GameRenderer;
38class GeometryGroup;
39class IClientInstance;
40class LevelChunk;
45class Options;
46class ParticleEngine;
51class ScreenContext;
52class SoundMapping;
54class TaskGroup;
55class Tessellator;
56class TextureAtlas;
62namespace LightPropagation { class LightVolumeManager; }
63namespace PointLighting { class PointLightCoordinator; }
64namespace PointLighting { class PointLightShadowProbeManager; }
65namespace cg { class ImageBuffer; }
66namespace mce { class Mesh; }
67namespace mce { class TextureGroup; }
68// clang-format on
69
71public:
72 // member variables
73 // NOLINTBEGIN
74 ::ll::TypedStorage<8, 64, ::std::unordered_map<::DimensionType, ::OwnerPtr<::RenderChunkCoordinator>>>
75 mRenderChunkCoordinators;
76 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PointLighting::PointLightCoordinator>> mPointLightCoordinator;
77 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::PointLighting::PointLightShadowProbeManager>>
78 mPointLightShadowProbeManager;
79 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPointLightLODOptionSubscription;
80 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPointLightShadowOptionSubscription;
81 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LightPropagation::LightVolumeManager>> mLightVolumeManager;
82 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::TextureGroup>> mTextureGroup;
83 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mShadowCylinder;
84 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mShadowOverlayCube;
85 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mShadowDisc;
86 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mSkyMesh;
87 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mStarsMesh;
88 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mEndSkyMesh;
89 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mSunMesh;
90 ::ll::TypedStorage<8, 128, ::std::shared_ptr<::mce::Mesh>[8]> mMoonMesh;
91 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::Mesh>> mNameplateBackgroundMesh;
92 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mAtlasTexture;
93 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mBrightnessTex;
94 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mSunTex;
95 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mSunTexVibrantVisuals;
96 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mMoonTex;
97 ::ll::TypedStorage<8, 32, ::mce::TexturePtr> mEndSkyTex;
98 ::ll::TypedStorage<8, 24, ::std::vector<::mce::TexturePtr>> mCrackFrames;
99 ::ll::TypedStorage<1, 1, ::DebugRenderer> mDebugRenderer;
100 ::ll::TypedStorage<8, 192, ::Scripting::RenderHelper::Renderer> mScriptDebugRenderer;
101 ::ll::TypedStorage<8, 8, ::Tick> mTicks;
102 ::ll::TypedStorage<8, 8, ::BlockActorRenderDispatcher&> mBlockEntityRenderDispatcher;
103 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockTessellator>> mLocalRenderer;
104 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ParticleEngine>> mParticleEngine;
105 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ParticleSystemEngine>> mParticleSystemEngine;
106 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryEditorGui>> mGeometryEditorGui;
107 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mTaskGroup;
108 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mSyncTaskGroup;
109 ::ll::TypedStorage<8, 8, ::GameRenderer&> mGameRenderer;
110 ::ll::TypedStorage<8, 8, ::MultiPlayerLevel&> mLevel;
111 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Options>> mOptions;
112 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClientInstance;
113 ::ll::TypedStorage<8, 24, ::WeakEntityRef> mLocalUser;
114 ::ll::TypedStorage<8, 64, ::std::function<void()>> mReleaseParticleSystemInterfaceProxyCallback;
115 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LevelRendererPlayer>> mLevelRendererPlayer;
116 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LevelRendererShadowCamera>> mLevelRendererShadowCamera;
117 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LevelRendererShadowCamera>> mLevelRendererCloudShadowCamera;
118 ::ll::TypedStorage<4, 4, ::ShadowCascadeState> mShadowCascadeState;
119 ::ll::TypedStorage<1, 1, bool> mTextureShiftsEnabled;
120 ::ll::TypedStorage<8, 1456, ::LevelBuilder> mLevelBuilder;
121 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LevelRendererProxy>> mProxy;
122 ::ll::TypedStorage<4, 16, ::mce::Color> mClearBufferColor;
123 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::PlayerRenderView>> mPlayerView;
124 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DataDrivenRendererV2RequiredData>> mDataDrivenRendererV2RequiredData;
125 // NOLINTEND
126
127public:
128 // prevent constructor by default
129 LevelRenderer& operator=(LevelRenderer const&);
130 LevelRenderer(LevelRenderer const&);
131 LevelRenderer();
132
133public:
134 // virtual functions
135 // NOLINTBEGIN
136 virtual ~LevelRenderer() /*override*/;
137
138 virtual void onAppSuspended() /*override*/;
139
140 virtual void onAppResumed() /*override*/;
141
142 virtual void onDeviceLost() /*override*/;
143
144 virtual void onLowMemory(::LowMemorySeverity) /*override*/;
145
146 virtual void onBlockChanged(
147 ::BlockSource& source,
148 ::BlockPos const& blockPosition,
149 uint layer,
150 ::Block const& block,
151 ::Block const& oldBlock,
152 int updateFlags,
153 ::ActorBlockSyncMessage const* syncMsg,
154 ::BlockChangedEventTarget eventTarget,
155 ::Actor* blockChangeSource
156 ) /*override*/;
157
158 virtual void onChunkUnloaded(::LevelChunk& levelChunk) /*override*/;
159
160 virtual void takePicture(
161 ::cg::ImageBuffer& outImage,
162 ::Actor* camera,
163 ::Actor* target,
164 ::ScreenshotOptions& screenshotOptions,
165 ::std::function<void(::cg::ImageBuffer&, ::ScreenshotOptions&)> completedScreenshotCallback
166 ) /*override*/;
167 // NOLINTEND
168
169public:
170 // member functions
171 // NOLINTBEGIN
172 MCAPI LevelRenderer(
173 ::IClientInstance& clientInstance,
174 ::MultiPlayerLevel& level,
175 ::std::shared_ptr<::Options> options,
176 ::std::shared_ptr<::mce::TextureGroup> textureGroup,
177 ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const> const& terrainTexture,
178 ::WeakEntityRef localUser,
179 ::GameRenderer& gameRenderer,
180 ::Bedrock::NotNullNonOwnerPtr<::SoundPlayerInterface> const& soundPlayer,
181 ::Bedrock::NotNullNonOwnerPtr<::GeometryGroup> const& geometryGroup,
182 ::SoundMapping const& sounds,
183 ::Bedrock::NotNullNonOwnerPtr<::ActorResourceDefinitionGroup const> const& actorResourceDefinitionGroup,
184 ::Bedrock::NotNullNonOwnerPtr<::TextureShiftManager const>& textureShiftManager
185 );
186
187 MCAPI void _createMeshes(::Tessellator& tessellator);
188
189 MCAPI void _createParticleEngines();
190
191 MCAPI void _debugDrawClientSideChunkGenBlockDifferences();
192
193 MCAPI void _initPipelineTessellatorResources(
194 ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const> textureAtlas,
195 ::Bedrock::NotNullNonOwnerPtr<::TextureShiftManager const> textureShiftManager
196 );
197
198 MCAPI void _initResources();
199
200 MCAPI void _resetMeshes();
201
202 MCAPI void _setLevelRendererCameras();
203
204 MCAPI void frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext);
205
206 MCAPI ::BlockTessellator& getBlockRenderer();
207
208 MCAPI ::StackRefResult<::RenderChunkCoordinator> getRenderChunkCoordinator(::DimensionType dimID);
209
210 MCAPI void onDimensionChanged();
211
212 MCAPI void onOptionsChanged();
213
214 MCAPI void preRenderUpdate(
215 ::ScreenContext& screenContext,
216 ::LevelRenderPreRenderUpdateParameters& levelRenderPreRenderUpdateParameters
217 );
218
219 MCAPI void rebuildAllDDRv2Geometry();
220
221 MCAPI void reinit(
222 ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const> const& terrainTexture,
223 ::Bedrock::NotNullNonOwnerPtr<::GeometryGroup> const& geometryGroup,
224 ::Bedrock::NotNullNonOwnerPtr<::ActorResourceDefinitionGroup const> const& actorResourceDefinitionGroup
225 );
226
227 MCAPI void renderLevel(::ScreenContext& screenContext, ::FrameRenderObject const& renderObj);
228
229 MCAPI void resetLightVolumeManager(::std::weak_ptr<::RuntimeLocalLightingConfig const> runtimeLocalLightingConfig);
230
231 MCAPI void resetLightingConfig(::std::weak_ptr<::RuntimeLocalLightingConfig const> runtimeLocalLightingConfig);
232
233 MCAPI void resetPointLighting();
234
235 MCAPI void tickLevelRenderer();
236 // NOLINTEND
237
238public:
239 // constructor thunks
240 // NOLINTBEGIN
241 MCAPI void* $ctor(
242 ::IClientInstance& clientInstance,
243 ::MultiPlayerLevel& level,
244 ::std::shared_ptr<::Options> options,
245 ::std::shared_ptr<::mce::TextureGroup> textureGroup,
246 ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const> const& terrainTexture,
247 ::WeakEntityRef localUser,
248 ::GameRenderer& gameRenderer,
249 ::Bedrock::NotNullNonOwnerPtr<::SoundPlayerInterface> const& soundPlayer,
250 ::Bedrock::NotNullNonOwnerPtr<::GeometryGroup> const& geometryGroup,
251 ::SoundMapping const& sounds,
252 ::Bedrock::NotNullNonOwnerPtr<::ActorResourceDefinitionGroup const> const& actorResourceDefinitionGroup,
253 ::Bedrock::NotNullNonOwnerPtr<::TextureShiftManager const>& textureShiftManager
254 );
255 // NOLINTEND
256
257public:
258 // destructor thunk
259 // NOLINTBEGIN
260 MCAPI void $dtor();
261 // NOLINTEND
262
263public:
264 // virtual function thunks
265 // NOLINTBEGIN
266 MCAPI void $onAppSuspended();
267
268 MCAPI void $onAppResumed();
269
270 MCAPI void $onDeviceLost();
271
272 MCAPI void $onLowMemory(::LowMemorySeverity);
273
274 MCAPI void $onBlockChanged(
275 ::BlockSource& source,
276 ::BlockPos const& blockPosition,
277 uint layer,
278 ::Block const& block,
279 ::Block const& oldBlock,
280 int updateFlags,
281 ::ActorBlockSyncMessage const* syncMsg,
282 ::BlockChangedEventTarget eventTarget,
283 ::Actor* blockChangeSource
284 );
285
286 MCAPI void $onChunkUnloaded(::LevelChunk& levelChunk);
287
288 MCAPI void $takePicture(
289 ::cg::ImageBuffer& outImage,
290 ::Actor* camera,
291 ::Actor* target,
292 ::ScreenshotOptions& screenshotOptions,
293 ::std::function<void(::cg::ImageBuffer&, ::ScreenshotOptions&)> completedScreenshotCallback
294 );
295 // NOLINTEND
296
297public:
298 // vftables
299 // NOLINTBEGIN
300 MCNAPI static void** $vftableForLevelListener();
301
302 MCNAPI static void** $vftableForAppPlatformListener();
303 // NOLINTEND
304};
Definition ActorResourceDefinitionGroup.h:5
Definition Actor.h:106
Definition AppPlatformListener.h:15
Definition BlockActorRenderDispatcher.h:5
Definition BlockPos.h:19
Definition BlockSource.h:71
Definition BlockTessellator.h:5
Definition Block.h:43
Definition ClientFrameUpdateContext.h:5
Definition DataDrivenRendererV2RequiredData.h:5
Definition Dimension.h:86
Definition GameRenderer.h:5
Definition GeometryEditorGui.h:5
Definition GeometryGroup.h:5
Definition IClientInstance.h:5
Definition LevelChunk.h:79
Definition LevelListener.h:28
Definition LevelRendererPlayer.h:5
Definition LevelRendererProxy.h:5
Definition LevelRendererShadowCamera.h:5
Definition LevelRenderer.h:5
static MCAPI void ** $vftableForLevelListener()
static MCAPI void ** $vftableForAppPlatformListener()
Definition LightVolumeManager.h:7
Definition MultiPlayerLevel.h:5
Definition Options.h:5
Definition ParticleEngine.h:5
Definition ParticleSystemEngine.h:5
Definition PlayerRenderView.h:5
Definition PointLightCoordinator.h:7
Definition PointLightShadowProbeManager.h:7
Definition RenderChunkCoordinator.h:5
Definition RuntimeLocalLightingConfig.h:5
Definition ScreenContext.h:5
Definition SoundMapping.h:5
Definition SoundPlayerInterface.h:21
Definition TaskGroup.h:57
Definition Tessellator.h:5
Definition TextureAtlas.h:5
Definition TextureShiftManager.h:5
Definition ImageBuffer.h:16
Definition Mesh.h:7
Definition TextureGroup.h:7
Definition ActorBlockSyncMessage.h:8
Definition FrameRenderObject.h:5
Definition LevelRenderPreRenderUpdateParameters.h:5
Definition ScreenshotOptions.h:9