Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
TickingAreasManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
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"
14
15// auto generated forward declare list
16// clang-format off
17class Actor;
18class BlockPos;
21class Level;
22class LevelStorage;
23class TickingAreaList;
24struct ActorUniqueID;
25struct PendingArea;
27// clang-format on
28
29class TickingAreasManager {
30public:
31 // TickingAreasManager inner types declare
32 // clang-format off
33 struct ScopedContext;
34 // clang-format on
35
36 // TickingAreasManager inner types define
37 enum class AreaLimitCheck : int {
38 None = 0,
39 ActiveStandalone = 1,
40 ActiveAndPendingStandalone = 2,
41 };
42
44 public:
45 // member variables
46 // NOLINTBEGIN
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;
52 // NOLINTEND
53
54 public:
55 // member functions
56 // NOLINTBEGIN
58 // NOLINTEND
59
60 public:
61 // destructor thunk
62 // NOLINTBEGIN
63 MCNAPI void $dtor();
64 // NOLINTEND
65 };
66
67 using ActivePerDimension = ::std::map<::DimensionType, ::std::shared_ptr<::TickingAreaList>>;
68
69 using PendingPerDimension = ::std::unordered_map<::DimensionType, ::std::vector<::PendingArea>>;
70
71public:
72 // member variables
73 // NOLINTBEGIN
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;
81 // NOLINTEND
82
83public:
84 // prevent constructor by default
85 TickingAreasManager();
86
87public:
88 // member functions
89 // NOLINTBEGIN
90 MCNAPI
92
93 MCNAPI ::AddTickingAreaStatus _addArea(
94 ::DimensionType dimensionId,
95 ::std::string const& name,
96 ::Bounds const& bounds,
97 bool isCircle,
98 ::TickingAreasManager::AreaLimitCheck limitCheck,
99 bool isPersistent,
100 ::TickingAreaLoadMode loadMode,
101 ::LevelStorage& levelStorage
102 );
103
104 MCNAPI ::std::vector<::TickingAreaDescription> _getPendingAreaDescriptionsFiltered(
105 ::DimensionType dimensionId,
106 ::std::function<bool(::PendingArea const&)> includeInList
107 ) const;
108
109 MCNAPI void _postReloadActorAdded(::Actor& actor);
110
111 MCNAPI void addEntityArea(::DimensionType dimensionId, ::Actor const& actor, ::LevelStorage& levelStorage);
112
113 MCNAPI void addEntityArea(
114 ::DimensionType dimensionId,
115 ::ActorUniqueID const& entityId,
116 ::Bounds bounds,
117 bool alwaysActive,
118 float maxDistToPlayers,
119 ::LevelStorage& levelStorage
120 );
121
123 ::DimensionType dimensionId,
124 ::std::shared_ptr<::TickingAreaList> const& tickingAreaList
125 );
126
127 MCNAPI ::TickingAreasManager::ScopedContext addTransientScopedArea(
128 ::DimensionType dimensionId,
129 ::std::string const& name,
130 uint64 scopeKey,
131 ::mce::UUID uuid,
132 ::Bounds const& bounds
133 );
134
135 MCNAPI uint countStandaloneTickingAreas() const;
136
137 MCNAPI void registerForActorManagerEvents(::IActorManagerConnector& actorManagerConnector);
138
140
141 MCNAPI ::std::vector<::TickingAreaDescription>
142 removePendingAreaByName(::DimensionType dimensionId, ::std::string const& name, ::LevelStorage& levelStorage);
143
144 MCNAPI ::std::vector<::TickingAreaDescription>
145 removePendingAreaByPosition(::DimensionType dimensionId, ::BlockPos const& position, ::LevelStorage& levelStorage);
146
147 MCNAPI void removeScopedAreas(::std::vector<::mce::UUID> const& uuids);
148
149 MCNAPI ::std::vector<::TickingAreaDescription> setPendingAreaLoadModeByName(
150 ::DimensionType dimensionId,
151 ::std::string const& name,
152 ::TickingAreaLoadMode loadMode,
153 ::LevelStorage& levelStorage
154 );
155
156 MCNAPI ::std::vector<::TickingAreaDescription> setPendingAreaLoadModeByPosition(
157 ::DimensionType dimensionId,
158 ::BlockPos const& position,
159 ::TickingAreaLoadMode loadMode,
160 ::LevelStorage& levelStorage
161 );
162
163 MCNAPI void update(::Level& level, ::LevelStorage& levelStorage);
164 // NOLINTEND
165
166public:
167 // static functions
168 // NOLINTBEGIN
169 MCNAPI static void _deletePendingArea(::LevelStorage& levelStorage, ::PendingArea const& pendingArea);
170
171 MCNAPI static void
172 _savePendingArea(::LevelStorage& levelStorage, ::DimensionType dimensionId, ::PendingArea const& pendingArea);
173
174 MCNAPI static ::TickingAreasManager::AreaLimitCheck getLimitCheck(::Level const& level, bool enforce);
175 // NOLINTEND
176
177public:
178 // constructor thunks
179 // NOLINTBEGIN
181 // NOLINTEND
182};
Definition Actor.h:116
Definition NonOwnerPointer.h:9
Definition BlockPos.h:14
Definition IActorManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition LevelStorage.h:26
Definition Level.h:255
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 UUID.h:8
Definition ActorUniqueID.h:5
Definition Bounds.h:8
Definition DimensionType.h:5
Definition PendingArea.h:16
Definition TickingAreaDescription.h:9
Definition TickingAreaLimitPolicy.h:9
Definition TickingAreasManager.h:43