3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/geometry_atlas/CommandDispatcherArgs.h"
7#include "mc/client/gui/geometry_atlas/IGeometryAtlas.h"
8#include "mc/client/gui/geometry_atlas/ItemData.h"
9#include "mc/deps/core/threading/BasicLockbox.h"
10#include "mc/deps/core/utility/pub_sub/Connector.h"
11#include "mc/deps/core/utility/pub_sub/Publisher.h"
12#include "mc/external/render_dragon/atlas/AtlasTileDescription.h"
13#include "mc/external/render_dragon/atlas/AtlasTileHandle.h"
14#include "mc/platform/brstd/flat_set.h"
18namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
19namespace Bedrock::Threading {
class Mutex; }
20namespace GeometryAtlas {
class IItemTile; }
30namespace GeometryAtlas {
32class AtlasImpl :
public ::GeometryAtlas::IGeometryAtlas {
46 using Variant = ::std::variant<::GeometryAtlas::ItemData>;
51 ::ll::TypedStorage<8, 56, ::std::variant<::GeometryAtlas::ItemData>> mData;
52 ::ll::TypedStorage<8, 24, ::dragon::atlas::AtlasTileHandle> mBackendID;
53 ::ll::TypedStorage<4, 8, ::dragon::atlas::AtlasTileDescription> mTileDescription;
54 ::ll::TypedStorage<1, 1, bool> mIsAnimated;
62 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::dragon::atlas::IAtlasHandle>> mAtlas;
63 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::GeometryAtlas::AtlasImpl::TileEntry>> mTiles;
67 ::Bedrock::Threading::
68 BasicLockbox<::std::deque<::GeometryAtlas::RenderableUpdateCommand>, ::Bedrock::Threading::Mutex>>
70 ::ll::TypedStorage<8, 24, ::std::vector<::GeometryAtlas::RenderableUpdateCommand>> mFutureCommands;
71 ::ll::TypedStorage<8, 24, ::brstd::flat_set<uint, ::std::less<uint>, ::std::vector<uint>>> mDirtyTiles;
72 ::ll::TypedStorage<8, 24, ::std::vector<uint>> mTileNotifications;
92 ::ll::TypedStorage<8, 8, ::GeometryAtlas::IRenderContext&> mContext;
96 ::std::_List_iterator<::std::_List_val<
97 ::std::_List_simple_types<::std::pair<uint const, ::GeometryAtlas::AtlasImpl::TileEntry>>>>>
99 ::ll::TypedStorage<8, 8, ::GeometryAtlas::AtlasImpl::TileEntry*> mEntry;
100 ::ll::TypedStorage<4, 4, uint> mTileID;
105 CommandArgs& operator=(CommandArgs
const&);
106 CommandArgs(CommandArgs
const&);
112 using CommandBuffer = ::std::deque<::GeometryAtlas::RenderableUpdateCommand>;
117 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::AtlasImpl::Data>> mData;
118 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::CommandDispatcherArgs::DispatchFunctions>>
mDispatcher;
124 mTileChangePublisher;
130 virtual ::std::shared_ptr<::GeometryAtlas::IItemTile>
135 virtual ::Bedrock::PubSub::Connector<void(::std::vector<uint>
const&)>& getTileChangeConnector() ;
167 MCFOLD ::Bedrock::PubSub::Connector<void(::std::vector<uint>
const&)>& $getTileChangeConnector();
static MCAPI void ** $vftable()
Definition IRenderContext.h:7
Definition IAtlasHandle.h:7
Definition MultiThreaded.h:7
Definition AllocateAtlasPayload.h:7
Definition AllocateBackendPayload.h:7
Definition AtlasImpl.h:21
Definition AtlasImpl.h:19
Definition AtlasImpl.h:17
Definition AtlasImpl.h:110
Definition RenderableUpdateCommand.h:7
Definition TileDefinition.h:7
Definition UIItemPayload.h:7