3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/renderer/game/DirectionalLightRenderData.h"
7#include "mc/client/renderer/game/LevelRendererCameraListeners.h"
8#include "mc/client/renderer/game/LevelRendererCameraType.h"
9#include "mc/client/renderer/game/PlayerRenderingParameters.h"
10#include "mc/client/renderer/scripting/ServerGraphicsOverrideManager.h"
11#include "mc/client/renderer/texture/TextureAtlasItem.h"
12#include "mc/client/sound/ListenerState.h"
13#include "mc/common/SubClientId.h"
14#include "mc/comprehensive/ParticleType.h"
15#include "mc/deps/core/container/slot_map_handle.h"
16#include "mc/deps/core/math/Color.h"
17#include "mc/deps/core/math/Vec3.h"
18#include "mc/deps/core/string/HashedString.h"
19#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
20#include "mc/deps/core/utility/NonOwnerPointer.h"
21#include "mc/deps/core/utility/pub_sub/Publisher.h"
22#include "mc/deps/core/utility/pub_sub/Subscription.h"
23#include "mc/deps/core_graphics/ImageBuffer.h"
24#include "mc/deps/ecs/WeakEntityRef.h"
25#include "mc/deps/minecraft_renderer/renderer/MaterialPtr.h"
26#include "mc/deps/shared_types/legacy/LevelEvent.h"
27#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
28#include "mc/world/level/BlockPos.h"
29#include "mc/world/level/FogDefinition.h"
71namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
73namespace mce {
class Camera; }
74namespace mce {
class Mesh; }
91 ::ll::TypedStorage<8, 48, ::HashedString> mEffect;
92 ::ll::TypedStorage<4, 16, ::mce::Color> mColor;
102 ::ll::TypedStorage<4, 16, ::mce::Color> mStartColor;
103 ::ll::TypedStorage<4, 16, ::mce::Color> mTargetColor;
104 ::ll::TypedStorage<4, 16, ::mce::Color> mCurrentColor;
105 ::ll::TypedStorage<4, 4, float> mTime;
109 using DeferredSoundList = ::std::vector<::DeferredSound>;
114 ::ll::TypedStorage<4, 4, float const> WATER_VISION_QUICK_TIME;
115 ::ll::TypedStorage<4, 4, float const> WATER_VISION_MAX_TIME;
116 ::ll::TypedStorage<4, 4, float const> WATER_VISION_QUICK_PERCENT;
117 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::cg::ImageBuffer>> mCloudsImage;
118 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::std::vector<::mce::Mesh>>> mCloudMeshes;
119 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::std::vector<::mce::Mesh>>> mCloudMeshesCurrentlyTessellating;
120 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Tessellator>> mCloudTessellator;
121 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TextureTessellator>> mCloudTextureTessellator;
122 ::ll::TypedStorage<1, 1, bool> mUpdatingClouds;
123 ::ll::TypedStorage<4, 12, ::Vec3> mLastCloudUpdatePosition;
124 ::ll::TypedStorage<1, 1, uchar> mLastCloudSide;
125 ::ll::TypedStorage<4, 4, int> mLastCloudMeshSize;
126 ::ll::TypedStorage<4, 4, int> mLastCloudGridSize;
127 ::ll::TypedStorage<4, 336, ::std::array<::DirectionalLightRenderData, 3>> mDirectionalLightRenderData;
128 ::ll::TypedStorage<8, 64, ::std::unordered_map<::BlockPos, ::ServerSoundHandle>> mRecordServerSoundMap;
129 ::ll::TypedStorage<8, 64, ::std::unordered_map<::BlockPos, ::BlockDestructInfo>> mDestroyingBlockList;
130 ::ll::TypedStorage<8, 8, double> mLastDestroyRenderTime;
131 ::ll::TypedStorage<4, 4, float> mFov;
132 ::ll::TypedStorage<4, 4, float> mOFov;
133 ::ll::TypedStorage<4, 280, ::PlayerRenderingParameters> mRenderingParameters;
134 ::ll::TypedStorage<4, 4, float> thirdDistance;
135 ::ll::TypedStorage<4, 4, float> thirdDistanceO;
136 ::ll::TypedStorage<4, 4, float> thirdRotation;
137 ::ll::TypedStorage<4, 4, float> thirdRotationO;
138 ::ll::TypedStorage<4, 4, float> thirdTilt;
139 ::ll::TypedStorage<4, 4, float> thirdTiltO;
140 ::ll::TypedStorage<4, 4, float> cameraRoll;
141 ::ll::TypedStorage<4, 4, float> cameraRollO;
142 ::ll::TypedStorage<4, 4, float> currentCameraDist;
143 ::ll::TypedStorage<4, 4, float> prevHeightOffset;
144 ::ll::TypedStorage<4, 4, float> mHeightOffsetAdjustment;
145 ::ll::TypedStorage<4, 4, float> mUnderwaterVisionTime;
146 ::ll::TypedStorage<4, 4, float> mUnderwaterVisionTimePrevious;
147 ::ll::TypedStorage<4, 4, float> mUnderwaterVisionClarity;
148 ::ll::TypedStorage<4, 4, float> mUnderwaterVisionScale;
149 ::ll::TypedStorage<4, 4, float> mUnderwaterLightLevel;
150 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> selectionBlockEntityOverlayMaterial;
151 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> selectionBlockEntityOverlayColorMaterial;
152 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> selectionOverlayMaterial;
153 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> selectionOpaqueMaterial;
154 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> selectionTwoSidedMaterial;
155 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> cracksOverlayMaterial;
156 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> cracksOverlayAlphaTestMaterial;
157 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> cracksOverlayBlockEntityMaterial;
158 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mOutlineSelectionMaterial;
159 ::ll::TypedStorage<8, 8, ::SoundMapping const&> mSounds;
160 ::ll::TypedStorage<8, 24, ::std::vector<::DeferredSound>> mDeferredSounds;
161 ::ll::TypedStorage<8, 72, ::TextureAtlasItem> uvBreakBlockItem;
162 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClientInstance;
163 ::ll::TypedStorage<8, 24, ::WeakEntityRef> mLocalUser;
164 ::ll::TypedStorage<8, 8, ::LevelRenderer&> mLevelRenderer;
165 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::SoundPlayerInterface>> mSoundPlayer;
166 ::ll::TypedStorage<8, 8, ::Level&> mLevel;
167 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AmbientSoundController>> mAmbientSoundController;
168 ::ll::TypedStorage<4, 48, ::ListenerState> mListenerState;
169 ::ll::TypedStorage<4, 12, ::Vec3> mCameraForward;
170 ::ll::TypedStorage<4, 12, ::Vec3> mCameraUp;
171 ::ll::TypedStorage<4, 12, ::Vec3> mLastListenerPos;
172 ::ll::TypedStorage<8, 8, double> mLastListenerUpdateTime;
176 ::std::unordered_map<
177 ::LevelRendererPlayer::BiomeParticleKey,
178 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>,
179 ::LevelRendererPlayer::BiomeParticleKeyHash,
180 ::std::equal_to<::LevelRendererPlayer::BiomeParticleKey>>>
181 mBiomeTintedParticleEffects;
182 ::ll::TypedStorage<4, 56, ::std::optional<::LevelRendererPlayer::SkyColorLerp>> mSkyColorLerp;
183 ::ll::TypedStorage<4, 4, int> mRainSoundTime;
184 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnLevelSoundEvent;
185 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnLevelSoundEventWithVolumeAndPitch;
186 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnStopLevelSoundEvent;
187 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnStopAllLevelSoundsEvent;
188 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnStopMusicEvent;
189 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnRecordStartedEvent;
190 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnRecordStoppedEvent;
191 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mSubtitlesOptionSubscription;
192 ::ll::TypedStorage<1, 1, bool> mSubtitlesEnabled;
193 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LevelAnimateTickHelper>> mLevelAnimateTickHelper;
197 ::Bedrock::PubSub::Publisher<
199 ::std::string
const&,
200 ::std::optional<::std::string>,
207 ::Bedrock::PubSub::ThreadModel::MultiThreaded,
210 ::ll::TypedStorage<8, 3360, ::ServerGraphicsOverrideManager> mScriptGraphicsOverrideManager;
215 LevelRendererPlayer& operator=(LevelRendererPlayer
const&);
216 LevelRendererPlayer(LevelRendererPlayer
const&);
217 LevelRendererPlayer();
222 virtual ~LevelRendererPlayer() =
default;
224 virtual ::LevelRendererCameraType getCameraType() const ;
226 virtual
void frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext) ;
228 virtual
void tickLevelRendererCamera() ;
230 virtual
void tickRain() ;
232 virtual
void onWillChangeDimension(::Player& player) ;
234 virtual
void onDimensionChanged(::Player& player) ;
236 virtual
void recalculateRenderDistance(
float const renderDistanceScalar) ;
238 virtual
void preRenderUpdate(
239 ::ScreenContext& screenContext,
240 ::LevelRenderPreRenderUpdateParameters& levelRenderPreRenderUpdateParameters
243 virtual
void renderBlockEntities(::BaseActorRenderContext& renderContext,
bool renderAlphaLayer) ;
246 updateViewArea(::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters) ;
248 virtual ::NameTagRenderObjectCollection extractNameTags(::ScreenContext& screenContext) const ;
251 callRenderNameTags(::ScreenContext& screenContext, ::ViewRenderObject const& renderObj, ::Font& font) ;
253 virtual ::CrackRenderObjectCollection extractCracks(::ScreenContext& screenContext) const ;
256 callRenderCracks(::BaseActorRenderContext& renderContext, ::ViewRenderObject const& renderObj) ;
258 virtual
bool getForceFog(::Actor const& cameraActor) const ;
260 virtual
void setupFog(::ScreenContext& screenContext,
float const skyIntensityOverride) ;
262 virtual
void levelEvent(::SharedTypes::Legacy::LevelEvent type, ::Vec3 const& pos,
int data) ;
264 virtual
void levelEvent(::SharedTypes::Legacy::LevelEvent type, ::CompoundTag const& data) ;
266 virtual
void addCameraListenerToRenderChunkCoordinator() ;
269 notifyGeoChangedForAffectedEntities(::RenderChunkShared& renderChunkShared, uchar version) ;
271 virtual
void addTerrainParticleEffect(
272 ::BlockPos const& pos,
273 ::Block const& block,
274 ::Vec3 const& emitterPosition,
276 float velocityScalar,
280 virtual
void addTerrainSlideEffect(
281 ::BlockPos const& pos,
282 ::Block const& block,
283 ::Vec3 const& emitterPosition,
285 float velocityScalar,
289 virtual
void addBreakingItemParticleEffect(
291 ::BreakingItemParticleData const& data,
292 ::ResolvedItemIconInfo const& textureInfo
295 virtual
void addBiomeTintedParticleEffect(
296 ::HashedString const& effect,
297 ::BlockPos const& pos,
298 ::Block const& block,
299 ::std::optional<::mce::Color> overrideColor
302 virtual
float getUnderwaterVisionClarity();
304 virtual ::FogDefinition::DistanceSettingType _getFogDistanceSettingType() const ;
306 virtual ::FogDefinition::DensitySettingType _getFogDensitySettingType() const ;
308 virtual
void _releaseRespectiveResources() ;
310 virtual
void queueRenderEntities(
311 ::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters
314 virtual
void renderEntityEffects(::BaseActorRenderContext& renderContext) ;
320 MCNAPI LevelRendererPlayer(
327 ::Bedrock::NotNullNonOwnerPtr<::
TextureAtlas const> const& terrainTexture,
334 ::
Block const& block,
335 ::
Vec3 const& emitterPosition,
337 float velocityScalar,
346 ::
Block const& block,
348 bool renderSecondPart,
354 ::
Block const& block,
367 MCAPI
void bobView(::
Matrix& mv,
float a);
372 ::
Block const& block,
374 float destroyProgress
383 MCAPI
float getFov(
float a,
bool enableVariableFOV) const;
388 ::
std::
string const& name,
398 MCAPI
void renderHitSelect(
405 MCAPI
void setupCamera(::mce::Camera& camera,
float);
416 ::SharedTypes::Legacy::LevelSoundEvent& eventType,
419 ::
std::
string const& blockType,
446 ::Bedrock::NotNullNonOwnerPtr<::
TextureAtlas const> const& terrainTexture,
462 MCAPI
void $onWillChangeDimension(::
Player& player);
468 MCAPI
void $preRenderUpdate(
487 MCAPI
void $setupFog(::
ScreenContext& screenContext,
float const skyIntensityOverride);
489 MCNAPI
void $levelEvent(::SharedTypes::Legacy::LevelEvent type, ::
Vec3 const& pos,
int data);
499 ::
Block const& block,
500 ::
Vec3 const& emitterPosition,
502 float velocityScalar,
508 ::
Block const& block,
509 ::
Vec3 const& emitterPosition,
511 float velocityScalar,
524 ::
Block const& block,
525 ::
std::optional<::mce::Color> overrideColor
Definition ActorSoundIdentifier.h:17
Definition AmbientSoundController.h:5
Definition BaseActorRenderContext.h:5
Definition EnableNonOwnerReferences.h:7
Definition BlockSource.h:72
Definition ClientFrameUpdateContext.h:5
Definition CompoundTag.h:18
Definition EntityContext.h:15
Definition HashedString.h:5
Definition IClientInstance.h:5
Definition LevelAnimateTickHelper.h:13
Definition LevelRendererCameraListeners.h:5
Definition LevelRendererPlayer.h:5
MCAPI void * $ctor(::IClientInstance &clientInstance, ::std::shared_ptr<::OptionRegistry > options, ::Level &level, ::LevelRenderer &levelRenderer, ::WeakEntityRef localUser, ::Bedrock::NotNullNonOwnerPtr<::SoundPlayerInterface > const &soundPlayer, ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const > const &terrainTexture, ::SoundMapping const &sounds)
MCAPI::LevelRendererCameraType $getCameraType() const
MCAPI void $levelEvent(::SharedTypes::Legacy::LevelEvent type, ::Vec3 const &pos, int data)
MCAPI void _renderHighlightSelection(::BaseActorRenderContext &renderContext, ::BlockSource ®ion, ::Block const &block, ::BlockPos const &pos, bool renderSecondPart, bool fancyGraphics) const
MCAPI void _spawnSmokeParticles(::ParticleType particleType, ::Vec3 const &pos, int data)
MCAPI void updateDestroyProgress()
MCAPI void $addCameraListenerToRenderChunkCoordinator()
MCAPI void $addBreakingItemParticleEffect(::Vec3 const &pos, ::BreakingItemParticleData const &data, ::ResolvedItemIconInfo const &textureInfo)
MCAPI void stopSound(::std::string const &name)
MCAPI void $callRenderNameTags(::ScreenContext &screenContext, ::ViewRenderObject const &renderObj, ::Font &font)
MCAPI void _addTerrainEffect(::HashedString const &effectName, ::BlockPos const &pos, ::Block const &block, ::Vec3 const &emitterPosition, float particleCount, float velocityScalar, float emitterRadius)
MCAPI::DirectionalLightRenderData getActiveDirectionalLight() const
MCAPI void updateListenerState(float alpha)
MCAPI::FogDefinition::DistanceSettingType $_getFogDistanceSettingType() const
MCAPI bool blockCanHaveCracksOverlay(::Block const &block) const
MCAPI bool $getForceFog(::Actor const &cameraActor) const
MCAPI void $recalculateRenderDistance(float const renderDistanceScalar)
MCAPI void $addBiomeTintedParticleEffect(::HashedString const &effect, ::BlockPos const &pos, ::Block const &block, ::std::optional<::mce::Color > overrideColor)
MCAPI void $callRenderCracks(::BaseActorRenderContext &renderContext, ::ViewRenderObject const &renderObj)
MCAPI void $frameUpdate(::ClientFrameUpdateContext &clientFrameUpdateContext)
MCAPI void $onDimensionChanged(::Player &player)
static MCAPI float getActorShadowOffset(::EntityContext const &entity)
MCAPI void $addTerrainParticleEffect(::BlockPos const &pos, ::Block const &block, ::Vec3 const &emitterPosition, float particleCount, float velocityScalar, float emitterRadius)
MCAPI void $tickLevelRendererCamera()
MCAPI::FogDefinition::DensitySettingType $_getFogDensitySettingType() const
MCAPI void tryReassignSoundEventToVariant(::SharedTypes::Legacy::LevelSoundEvent &eventType, ::Vec3 const &pos)
MCAPI void $_releaseRespectiveResources()
MCAPI::CrackRenderObjectCollection $extractCracks(::ScreenContext &screenContext) const
MCAPI void $addTerrainSlideEffect(::BlockPos const &pos, ::Block const &block, ::Vec3 const &emitterPosition, float particleCount, float velocityScalar, float emitterRadius)
MCAPI::CrackRenderObject createCrackRenderObject(::ScreenContext &screenContext, ::BlockSource ®ion, ::Block const &block, ::BlockPos const &h, float destroyProgress) const
MCAPI void $notifyGeoChangedForAffectedEntities(::RenderChunkShared &renderChunkShared, uchar version)
MCAPI void tryReassignSoundToFallback(::SharedTypes::Legacy::LevelSoundEvent &eventType, ::Sound &sound, ::ActorSoundIdentifier const &actorSoundIdentifier, ::std::string const &blockType, ::Random &random)
MCAPI void emitGrowthParticles(::Vec3 const &pos)
MCAPI void bobHurt(::Matrix &mv, float a)
MCAPI void playDeferredSound(::std::string const &name, ::Vec3 const &pos, float volume, float pitch)
MCAPI float $getUnderwaterVisionClarity()
MCAPI void _renderOutlineSelection(::BaseActorRenderContext &renderContext, ::Block const &block, ::BlockSource ®ion, ::BlockPos const &pos) const
MCAPI void playSound(::std::string const &name, ::Vec3 const &pos, float volume, float pitch, bool isLocalPlayer, ::std::optional<::ServerSoundHandle > serverSoundHandle) const
MCAPI::NameTagRenderObjectCollection $extractNameTags(::ScreenContext &screenContext) const
MCAPI void _crack(::BlockSource ®ion, ::Block const &block, ::BlockPos const &inPos, uchar face)
MCAPI bool blockCanHaveSelectionOverlay(::Block const &block) const
MCAPI void reinit(::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const > const &terrainTexture)
MCAPI void $updateViewArea(::LevelRenderPreRenderUpdateParameters const &levelRenderPreRenderUpdateParameters)
Definition LevelRenderer.h:5
Definition OptionRegistry.h:5
Definition ParticleEmitter.h:7
Definition RenderChunkShared.h:5
Definition ScreenContext.h:5
Definition ServerSoundHandle.h:5
Definition SoundMapping.h:5
Definition SoundPlayerInterface.h:24
Definition Tessellator.h:5
Definition TextureAtlas.h:5
Definition TextureTessellator.h:5
Definition WeakEntityRef.h:14
Definition MultiThreaded.h:7
Definition BlockDestructInfo.h:5
Definition BreakingItemParticleData.h:8
Definition CrackRenderObjectCollection.h:5
Definition CrackRenderObject.h:5
Definition DeferredSound.h:5
Definition DirectionalLightRenderData.h:5
Definition FogDefinition.h:5
Definition LevelRenderPreRenderUpdateParameters.h:5
Definition LevelRendererPlayer.h:17
Definition LevelRendererPlayer.h:15
Definition LevelRendererPlayer.h:19
Definition ResolvedItemIconInfo.h:8
Definition TextureUVCoordinateSet.h:5
Definition ViewRenderObject.h:5