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/client/gui/geometry_atlas/PaperDollData.h"
10#include "mc/client/gui/geometry_atlas/RenderableUpdateCommand.h"
11#include "mc/deps/core/threading/BasicLockbox.h"
12#include "mc/deps/core/utility/pub_sub/Connector.h"
13#include "mc/deps/core/utility/pub_sub/Publisher.h"
14#include "mc/external/render_dragon/atlas/AtlasTileDescription.h"
15#include "mc/external/render_dragon/atlas/AtlasTileHandle.h"
16#include "mc/platform/brstd/flat_map.h"
20namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
21namespace GeometryAtlas {
class IItemTile; }
30namespace GeometryAtlas {
32class AtlasImpl :
public ::GeometryAtlas::IGeometryAtlas {
44 enum class TileDirtyStatus : uchar {
46 SubmittedForRendering = 1,
53 enum class Status : uchar {
56 FailedInitialization = 2,
62 ::ll::TypedStorage<8, 40, ::std::variant<::GeometryAtlas::ItemData, ::GeometryAtlas::PaperDollData>> mData;
63 ::ll::TypedStorage<1, 1, bool> mIsAnimated;
64 ::ll::TypedStorage<4, 8, ::dragon::atlas::AtlasTileDescription const> mTileDescription;
65 ::ll::TypedStorage<1, 1, ::GeometryAtlas::AtlasImpl::TileEntry::Status> mStatus;
66 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::TileHandleSharedState>> mShared;
67 ::ll::TypedStorage<8, 32, ::dragon::atlas::AtlasTileHandle> mBackendID;
75 ::ll::TypedStorage<8, 8, ::GeometryAtlas::IRenderContext&> mContext;
79 ::std::_List_iterator<::std::_List_val<
80 ::std::_List_simple_types<::std::pair<uint const, ::GeometryAtlas::AtlasImpl::TileEntry>>>>>
82 ::ll::TypedStorage<8, 8, ::GeometryAtlas::AtlasImpl::TileEntry*> mEntry;
83 ::ll::TypedStorage<4, 4, uint> mTileID;
88 CommandArgs& operator=(CommandArgs
const&);
89 CommandArgs(CommandArgs
const&);
97 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::dragon::atlas::IAtlasHandle>>> mAtlases;
98 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::GeometryAtlas::AtlasImpl::TileEntry>> mTiles;
102 ::Bedrock::Threading::BasicLockbox<::std::deque<::GeometryAtlas::RenderableUpdateCommand>, ::std::mutex>>
104 ::ll::TypedStorage<8, 24, ::std::vector<::GeometryAtlas::RenderableUpdateCommand>> mFutureCommands;
110 ::GeometryAtlas::AtlasImpl::TileDirtyStatus,
113 ::std::vector<::GeometryAtlas::AtlasImpl::TileDirtyStatus>>>
115 ::ll::TypedStorage<8, 24, ::std::vector<uint>> mTileNotifications;
123 ::ll::TypedStorage<1, 1, ::GeometryAtlas::AtlasImpl::TileDirtyStatus> mNewStatus;
124 ::ll::TypedStorage<1, 1, bool> mSubmitTileRender;
125 ::ll::TypedStorage<1, 1, bool> mNotifyTileUpdated;
131 using CommandBuffer = ::std::deque<::GeometryAtlas::RenderableUpdateCommand>;
136 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::AtlasImpl::Data>> mData;
137 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::CommandDispatcherArgs::DispatchFunctions>>
mDispatcher;
143 mTileChangePublisher;
149 virtual ::std::shared_ptr<::GeometryAtlas::IItemTile>
152 virtual ::std::shared_ptr<::GeometryAtlas::IPaperDollTile>
157 virtual bool hasAnyUpdates() const ;
159 virtual ::Bedrock::PubSub::
Connector<
void(::
std::vector<uint> const&)>& getTileChangeConnector() ;
187 MCAPI
bool $hasAnyUpdates() const;
189 MCFOLD ::Bedrock::PubSub::
Connector<
void(::
std::vector<uint> const&)>& $getTileChangeConnector();
Definition Connector.h:18
Definition AtlasImpl.h:20
Definition IPaperDollTile.h:7
Definition IRenderContext.h:7
Definition IAtlasHandle.h:7
Definition MultiThreaded.h:7
Definition AllocateAtlasPayload.h:7
Definition AtlasImpl.h:26
Definition AtlasImpl.h:28
Definition AtlasImpl.h:30
Definition AtlasImpl.h:129
Definition TileDefinition.h:7
Definition TileHandleSharedState.h:7