3#include "mc/_HeaderOutputPredefine.h"
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"
41 using RenderChunkMapType = ::std::unordered_map<::SubChunkPos, ::std::weak_ptr<::RenderChunkShared>>;
46 ::ll::TypedStorage<4, 4, float> mSweepAndPruneRatio;
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;
72 RenderChunkCoordinator& operator=(RenderChunkCoordinator
const&);
73 RenderChunkCoordinator(RenderChunkCoordinator
const&);
74 RenderChunkCoordinator();
79 virtual ~RenderChunkCoordinator() ;
81 virtual void onChunkLoaded(::ChunkSource& lc, ::LevelChunk&) ;
83 virtual void onSubChunkLoaded(
85 ::LevelChunk& absoluteSubChunkIndex,
86 short subChunkVisibilityChanged,
90 virtual void onBrightnessChanged(::BlockSource& source, ::BlockPos
const& pos) ;
92 virtual void onAreaChanged(::BlockSource& source, ::BlockPos
const& min, ::BlockPos
const& max) ;
94 virtual void onBlockChanged(
95 ::BlockSource& source,
96 ::BlockPos
const& pos,
99 ::Block
const& oldBlock,
101 ::ActorBlockSyncMessage
const* syncMsg,
102 ::BlockChangedEventTarget eventTarget,
103 ::Actor* blockChangeSource
110 MCAPI RenderChunkCoordinator(::Level& level, ::LevelRenderer& levelRenderer, ::DimensionType dimensionID);
112 MCAPI
void _handleVisibilityUpdates();
114 MCAPI
void _launchVisibilityRebuild(::std::shared_ptr<::RenderChunkShared>& renderChunkShared);
116 MCAPI
void _setAllDirty(
bool immediate,
bool changesVisibility);
119 _setDirty(::BlockPos
const& min, ::BlockPos
const& max,
bool immediate,
bool changesVisibility,
bool canInterlock);
121 MCAPI
void addLevelRendererCameraListener(::LevelRendererCamera* levelRendererCamera);
123 MCAPI ::std::shared_ptr<::RenderChunkShared> getOrCreateChunkAtPos(::SubChunkPos
const& pos);
125 MCFOLD ::RenderChunkCoordinatorProxy* getProxy();
127 MCAPI uint64 getRenderChunkGeometryFaceMetadataMemoryUsed()
const;
129 MCAPI
void preRenderTick();
131 MCAPI
void rebuildAllRenderChunkGeometry();
133 MCAPI
void relightAllRenderChunkGeometry();
135 MCAPI
void removeLevelRendererCameraListener(::LevelRendererCamera* levelRendererCamera);
143 MCAPI
static bool shouldSetBlockAsDirty(
144 ::BlockPos
const& pos,
145 ::Block
const& block,
146 ::Block
const& oldBlock,
149 bool& changesVisibility
156 MCAPI
void* $ctor(::Level& level, ::LevelRenderer& levelRenderer, ::DimensionType dimensionID);
168 MCAPI
void $onChunkLoaded(::ChunkSource& lc, ::LevelChunk&);
171 $onSubChunkLoaded(::ChunkSource& lc, ::LevelChunk& absoluteSubChunkIndex,
short subChunkVisibilityChanged,
bool);
173 MCAPI
void $onBrightnessChanged(::BlockSource& source, ::BlockPos
const& pos);
175 MCAPI
void $onAreaChanged(::BlockSource& source, ::BlockPos
const& min, ::BlockPos
const& max);
177 MCAPI
void $onBlockChanged(
178 ::BlockSource& source,
179 ::BlockPos
const& pos,
181 ::Block
const& block,
182 ::Block
const& oldBlock,
184 ::ActorBlockSyncMessage
const* syncMsg,
185 ::BlockChangedEventTarget eventTarget,
186 ::Actor* blockChangeSource
Definition BlockSource.h:73
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 RenderChunkCoordinatorProxy.h:5
Definition RenderChunkCoordinator.h:5
static MCAPI void ** $vftable()
Definition RenderChunkShared.h:5
Definition ActorBlockSyncMessage.h:8
Definition BlockActorBlockSyncMessage.h:5
Definition RenderChunkCoordinator.h:13