3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/geometry_atlas/AtlasDimensions.h"
7#include "mc/client/gui/geometry_atlas/CommandDispatcherArgs.h"
8#include "mc/client/gui/geometry_atlas/IGeometryAtlas.h"
9#include "mc/client/gui/geometry_atlas/ItemData.h"
10#include "mc/client/gui/geometry_atlas/PaperDollData.h"
11#include "mc/client/gui/geometry_atlas/RenderableUpdateCommand.h"
12#include "mc/deps/core/threading/BasicLockbox.h"
13#include "mc/deps/core/utility/pub_sub/Connector.h"
14#include "mc/deps/core/utility/pub_sub/Publisher.h"
15#include "mc/external/render_dragon/atlas/AtlasTileDescription.h"
16#include "mc/external/render_dragon/atlas/AtlasTileHandle.h"
17#include "mc/platform/brstd/flat_map.h"
21namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
22namespace GeometryAtlas {
class IItemTile; }
31namespace GeometryAtlas {
33class AtlasImpl :
public ::GeometryAtlas::IGeometryAtlas {
46 enum class TileDirtyStatus : uchar {
48 SubmittedForRendering = 1,
55 enum class Status : uchar {
58 FailedInitialization = 2,
64 ::ll::TypedStorage<8, 72, ::std::variant<::GeometryAtlas::ItemData, ::GeometryAtlas::PaperDollData>> mData;
65 ::ll::TypedStorage<1, 1, bool> mIsAnimated;
66 ::ll::TypedStorage<4, 8, ::dragon::atlas::AtlasTileDescription const> mTileDescription;
67 ::ll::TypedStorage<1, 1, ::GeometryAtlas::AtlasImpl::TileEntry::Status> mStatus;
68 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::TileHandleSharedState>> mShared;
69 ::ll::TypedStorage<8, 32, ::dragon::atlas::AtlasTileHandle> mBackendID;
77 ::ll::TypedStorage<8, 8, ::GeometryAtlas::IRenderContext&> mContext;
81 ::std::_List_iterator<::std::_List_val<
82 ::std::_List_simple_types<::std::pair<uint const, ::GeometryAtlas::AtlasImpl::TileEntry>>>>>
84 ::ll::TypedStorage<8, 8, ::GeometryAtlas::AtlasImpl::TileEntry*> mEntry;
85 ::ll::TypedStorage<4, 4, uint> mTileID;
90 CommandArgs& operator=(CommandArgs
const&);
91 CommandArgs(CommandArgs
const&);
99 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::dragon::atlas::IAtlasHandle>> mHandle;
100 ::ll::TypedStorage<2, 4, ::GeometryAtlas::AtlasDimensions> mDimensions;
108 ::ll::TypedStorage<8, 24, ::std::vector<::GeometryAtlas::AtlasImpl::AtlasEntry>> mAtlases;
109 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::GeometryAtlas::AtlasImpl::TileEntry>> mTiles;
113 ::Bedrock::Threading::BasicLockbox<::std::deque<::GeometryAtlas::RenderableUpdateCommand>, ::std::mutex>>
115 ::ll::TypedStorage<8, 24, ::std::vector<::GeometryAtlas::RenderableUpdateCommand>> mFutureCommands;
121 ::GeometryAtlas::AtlasImpl::TileDirtyStatus,
124 ::std::vector<::GeometryAtlas::AtlasImpl::TileDirtyStatus>>>
126 ::ll::TypedStorage<8, 24, ::std::vector<uint>> mTileNotifications;
134 ::ll::TypedStorage<1, 1, ::GeometryAtlas::AtlasImpl::TileDirtyStatus> mNewStatus;
135 ::ll::TypedStorage<1, 1, bool> mSubmitTileRender;
136 ::ll::TypedStorage<1, 1, bool> mNotifyTileUpdated;
142 using CommandBuffer = ::std::deque<::GeometryAtlas::RenderableUpdateCommand>;
147 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::AtlasImpl::Data>> mData;
148 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GeometryAtlas::CommandDispatcherArgs::DispatchFunctions>>
mDispatcher;
154 mTileChangePublisher;
160 virtual ::std::shared_ptr<::GeometryAtlas::IItemTile>
163 virtual ::std::shared_ptr<::GeometryAtlas::IPaperDollTile>
168 virtual bool hasAnyUpdates() const ;
170 virtual ::Bedrock::PubSub::
Connector<
void(::
std::vector<uint> const&)>& getTileChangeConnector() ;
Definition Connector.h:19
Definition AtlasImpl.h:21
MCAPI void $trySubmitUpdates(::GeometryAtlas::IRenderContext &context)
MCAPI void _processCommand(::GeometryAtlas::AtlasImpl::CommandArgs &args, ::GeometryAtlas::AllocateAtlasPayload &&payload)
MCAPI ::std::shared_ptr<::GeometryAtlas::IItemTile > $createItem(::GeometryAtlas::TileDefinition const &definition)
MCAPI ::std::shared_ptr<::GeometryAtlas::IPaperDollTile > $createDoll(::GeometryAtlas::TileDefinition const &definition)
MCAPI bool $hasAnyUpdates() const
MCAPI ::Bedrock::PubSub::Connector< void(::std::vector< uint > const &)> & $getTileChangeConnector()
Definition IPaperDollTile.h:7
Definition IRenderContext.h:7
Definition IAtlasHandle.h:7
Definition MultiThreaded.h:7
Definition AllocateAtlasPayload.h:7
Definition AtlasImpl.h:29
Definition AtlasImpl.h:27
Definition AtlasImpl.h:31
Definition AtlasImpl.h:33
Definition AtlasImpl.h:140
Definition TileDefinition.h:7
Definition TileHandleSharedState.h:7