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