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/AutomaticID.h"
7#include "mc/deps/core/utility/NonOwnerPointer.h"
8#include "mc/deps/core/utility/pub_sub/Subscription.h"
9#include "mc/platform/UUID.h"
10#include "mc/util/Bounds.h"
11#include "mc/world/level/ticking/AddTickingAreaStatus.h"
12#include "mc/world/level/ticking/TickingAreaLoadMode.h"
13
14// auto generated forward declare list
15// clang-format off
16class Actor;
17class BlockPos;
18class Dimension;
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
57 MCAPI ~ScopedContext();
58 // NOLINTEND
59
60 public:
61 // destructor thunk
62 // NOLINTBEGIN
63 MCFOLD 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<8, 16, ::Bedrock::PubSub::Subscription> mPostReloadActorAdded;
79 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnCanStartGameSaveTimerCheckSubscription;
80 // NOLINTEND
81
82public:
83 // prevent constructor by default
84 TickingAreasManager();
85
86public:
87 // member functions
88 // NOLINTBEGIN
89 MCAPI explicit TickingAreasManager(::Bedrock::NonOwnerPointer<::LevelStorage> levelStorage);
90
91 MCAPI ::AddTickingAreaStatus _addArea(
92 ::DimensionType dimensionId,
93 ::std::string const& name,
94 ::Bounds const& bounds,
95 bool isCircle,
96 ::TickingAreasManager::AreaLimitCheck limitCheck,
97 bool isPersistent,
98 ::TickingAreaLoadMode loadMode,
99 ::LevelStorage& levelStorage
100 );
101
102 MCAPI void _deletePendingArea(::LevelStorage& levelStorage, ::PendingArea const& pendingArea);
103
104 MCAPI ::std::string _findUsableDefaultName(
105 ::TickingAreaList const& tickingAreaList,
106 ::std::vector<::PendingArea> const& pendingAreas
107 ) const;
108
109 MCAPI ::std::vector<::TickingAreaDescription> _getPendingAreaDescriptionsFiltered(
110 ::DimensionType dimensionId,
111 ::std::function<bool(::PendingArea const&)> includeInList
112 ) const;
113
114 MCAPI bool
115 _hasPendingTickingAreaNamed(::std::string const& name, ::std::vector<::PendingArea> const& dimensionAreas) const;
116
117 MCAPI void _postReloadActorAdded(::Actor& actor);
118
119 MCAPI void _processAdds(::Level& level);
120
121 MCAPI void
122 _processRemoves(::DimensionType dimensionId, ::TickingAreaList& list, ::Level& level, ::LevelStorage& levelStorage);
123
124 MCAPI void
125 _savePendingArea(::LevelStorage& levelStorage, ::DimensionType dimensionId, ::PendingArea const& pendingArea);
126
127 MCAPI void addEntityArea(::DimensionType dimensionId, ::Actor const& actor, ::LevelStorage& levelStorage);
128
129 MCAPI void addEntityArea(
130 ::DimensionType dimensionId,
131 ::ActorUniqueID const& entityId,
132 ::Bounds const& bounds,
133 bool alwaysActive,
134 float maxDistToPlayers,
135 ::LevelStorage& levelStorage
136 );
137
138 MCAPI ::TickingAreasManager::ScopedContext addTransientScopedArea(
139 ::DimensionType dimensionId,
140 ::std::string const& name,
141 uint64 scopeKey,
142 ::mce::UUID uuid,
143 ::Bounds const& bounds
144 );
145
146 MCAPI uint countActiveStandaloneTickingAreas() const;
147
148 MCAPI uint countStandaloneTickingAreas() const;
149
150 MCAPI void onTickingEntityAdded(::DimensionType dimensionId, ::Actor& actor, ::LevelStorage& levelStorage);
151
152 MCAPI void registerForActorManagerEvents(::IActorManagerConnector& actorManagerConnector);
153
154 MCAPI void registerForLevelStorageManagerEvents(::ILevelStorageManagerConnector& levelStorageManagerConnector);
155
156 MCAPI ::std::vector<::TickingAreaDescription>
157 removePendingAreaByName(::DimensionType dimensionId, ::std::string const& name, ::LevelStorage& levelStorage);
158
159 MCAPI ::std::vector<::TickingAreaDescription>
160 removePendingAreaByPosition(::DimensionType dimensionId, ::BlockPos const& position, ::LevelStorage& levelStorage);
161
162 MCAPI void removeScopedAreas(::std::vector<::mce::UUID> const& uuids);
163
164 MCAPI ::std::vector<::TickingAreaDescription> setPendingAreaLoadModeByName(
165 ::DimensionType dimensionId,
166 ::std::string const& name,
167 ::TickingAreaLoadMode loadMode,
168 ::LevelStorage& levelStorage
169 );
170
171 MCAPI ::std::vector<::TickingAreaDescription> setPendingAreaLoadModeByPosition(
172 ::DimensionType dimensionId,
173 ::BlockPos const& position,
174 ::TickingAreaLoadMode loadMode,
175 ::LevelStorage& levelStorage
176 );
177
178 MCAPI void update(::Level& level, ::LevelStorage& levelStorage);
179 // NOLINTEND
180
181public:
182 // static functions
183 // NOLINTBEGIN
184 MCAPI static ::TickingAreasManager::AreaLimitCheck getLimitCheck(::Level const& level, bool enforce);
185 // NOLINTEND
186
187public:
188 // constructor thunks
189 // NOLINTBEGIN
190 MCAPI void* $ctor(::Bedrock::NonOwnerPointer<::LevelStorage> levelStorage);
191 // NOLINTEND
192};
Definition Actor.h:105
Definition NonOwnerPointer.h:9
Definition BlockPos.h:19
Definition Dimension.h:85
Definition IActorManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition LevelStorage.h:25
Definition Level.h:249
Definition TickingAreaList.h:15
Definition UUID.h:7
Definition ActorUniqueID.h:5
Definition Bounds.h:8
Definition PendingArea.h:19
Definition TickingAreaDescription.h:9
Definition TickingAreasManager.h:43