3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/core/utility/pub_sub/Subscription.h"
8#include "mc/platform/UUID.h"
9#include "mc/util/Bounds.h"
10#include "mc/world/level/dimension/DimensionType.h"
11#include "mc/world/level/ticking/AddTickingAreaStatus.h"
12#include "mc/world/level/ticking/TickingAreaLimitPolicy.h"
13#include "mc/world/level/ticking/TickingAreaLoadMode.h"
29class TickingAreasManager {
37 enum class AreaLimitCheck :
int {
40 ActiveAndPendingStandalone = 2,
47 ::ll::TypedStorage<8, 16, ::mce::UUID> mUuid;
48 ::ll::TypedStorage<8, 32, ::std::string> mName;
49 ::ll::TypedStorage<4, 48, ::Bounds> mBounds;
50 ::ll::TypedStorage<1, 1, bool> mFinishedLoading;
51 ::ll::TypedStorage<1, 1, bool> mIsActive;
67 using ActivePerDimension = ::std::map<::DimensionType, ::std::shared_ptr<::TickingAreaList>>;
69 using PendingPerDimension = ::std::unordered_map<::DimensionType, ::std::vector<::PendingArea>>;
74 ::ll::TypedStorage<8, 16, ::std::map<::DimensionType, ::std::shared_ptr<::TickingAreaList>>> mActiveAreas;
75 ::ll::TypedStorage<8, 64, ::std::unordered_map<::DimensionType, ::std::vector<::PendingArea>>> mPendingAreas;
76 ::ll::TypedStorage<1, 1, bool> mIsPreloadDone;
77 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::LevelStorage>
const> mLevelStorage;
78 ::ll::TypedStorage<4, 24, ::TickingAreaLimitPolicy const> mLimitPolicy;
79 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPostReloadActorAdded;
80 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnCanStartGameSaveTimerCheckSubscription;
85 TickingAreasManager();
95 ::std::string
const& name,
98 ::TickingAreasManager::AreaLimitCheck limitCheck,
100 ::TickingAreaLoadMode loadMode,
118 float maxDistToPlayers,
124 ::std::shared_ptr<::TickingAreaList>
const& tickingAreaList
129 ::std::string
const& name,
141 MCNAPI ::std::vector<::TickingAreaDescription>
144 MCNAPI ::std::vector<::TickingAreaDescription>
151 ::std::string
const& name,
152 ::TickingAreaLoadMode loadMode,
159 ::TickingAreaLoadMode loadMode,
Definition NonOwnerPointer.h:9
Definition IActorManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition LevelStorage.h:26
Definition TickingAreaList.h:15
MCAPI ::std::vector<::TickingAreaDescription > removePendingAreaByPosition(::DimensionType dimensionId, ::BlockPos const &position, ::LevelStorage &levelStorage)
static MCAPI void _deletePendingArea(::LevelStorage &levelStorage, ::PendingArea const &pendingArea)
MCAPI TickingAreasManager(::Bedrock::NonOwnerPointer<::LevelStorage > levelStorage, ::TickingAreaLimitPolicy limitPolicy)
MCAPI void addEntityArea(::DimensionType dimensionId, ::Actor const &actor, ::LevelStorage &levelStorage)
MCAPI::TickingAreasManager::ScopedContext addTransientScopedArea(::DimensionType dimensionId, ::std::string const &name, uint64 scopeKey, ::mce::UUID uuid, ::Bounds const &bounds)
MCAPI void _postReloadActorAdded(::Actor &actor)
MCAPI void update(::Level &level, ::LevelStorage &levelStorage)
MCAPI void addTickingAreaListForDimension(::DimensionType dimensionId, ::std::shared_ptr<::TickingAreaList > const &tickingAreaList)
MCAPI void registerForActorManagerEvents(::IActorManagerConnector &actorManagerConnector)
static MCAPI void _savePendingArea(::LevelStorage &levelStorage, ::DimensionType dimensionId, ::PendingArea const &pendingArea)
MCAPI void registerForLevelStorageManagerEvents(::ILevelStorageManagerConnector &levelStorageManagerConnector)
static MCAPI ::TickingAreasManager::AreaLimitCheck getLimitCheck(::Level const &level, bool enforce)
MCAPI ::std::vector<::TickingAreaDescription > removePendingAreaByName(::DimensionType dimensionId, ::std::string const &name, ::LevelStorage &levelStorage)
MCAPI ::std::vector<::TickingAreaDescription > setPendingAreaLoadModeByPosition(::DimensionType dimensionId, ::BlockPos const &position, ::TickingAreaLoadMode loadMode, ::LevelStorage &levelStorage)
MCAPI ::std::vector<::TickingAreaDescription > setPendingAreaLoadModeByName(::DimensionType dimensionId, ::std::string const &name, ::TickingAreaLoadMode loadMode, ::LevelStorage &levelStorage)
MCAPI::AddTickingAreaStatus _addArea(::DimensionType dimensionId, ::std::string const &name, ::Bounds const &bounds, bool isCircle, ::TickingAreasManager::AreaLimitCheck limitCheck, bool isPersistent, ::TickingAreaLoadMode loadMode, ::LevelStorage &levelStorage)
MCAPI uint countStandaloneTickingAreas() const
MCAPI void * $ctor(::Bedrock::NonOwnerPointer<::LevelStorage > levelStorage, ::TickingAreaLimitPolicy limitPolicy)
MCAPI ::std::vector<::TickingAreaDescription > _getPendingAreaDescriptionsFiltered(::DimensionType dimensionId, ::std::function< bool(::PendingArea const &)> includeInList) const
MCAPI void removeScopedAreas(::std::vector<::mce::UUID > const &uuids)
MCAPI void addEntityArea(::DimensionType dimensionId, ::ActorUniqueID const &entityId, ::Bounds bounds, bool alwaysActive, float maxDistToPlayers, ::LevelStorage &levelStorage)
Definition ActorUniqueID.h:5
Definition DimensionType.h:5
Definition PendingArea.h:16
Definition TickingAreaDescription.h:9
Definition TickingAreaLimitPolicy.h:9
Definition TickingAreasManager.h:43