Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
PrefabDBService.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/game_refs/StackRefResult.h"
7#include "mc/deps/game_refs/WeakRef.h"
8#include "mc/deps/script_core/runtime/scripting/Result_deprecated.h"
9#include "mc/editor/PrefabSource.h"
10#include "mc/editor/services/IEditorService.h"
11#include "mc/editor/services/PayloadStoreHelper.h"
12#include "mc/server/editor/serviceproviders/PrefabDBServerPlayerServiceProvider.h"
13#include "mc/server/editor/serviceproviders/PrefabDBServiceProvider.h"
14#include "mc/util/Mirror.h"
15#include "mc/util/Rotation.h"
16
17// auto generated forward declare list
18// clang-format off
19class BlockPalette;
20class BlockSource;
21class BoundingBox;
22class ChunkPos;
23class Vec3;
24class WeakEntityRef;
25struct DimensionType;
26namespace Bedrock::PubSub { class Subscription; }
27namespace Editor { class EditorManager; }
28namespace Editor { class ServiceProviderCollection; }
29namespace Editor::Prefabs { class PrefabDBPrefabInstance; }
30namespace Editor::Prefabs { class PrefabDBTemplate; }
31namespace Editor::Prefabs { class VisiblePrefabInstance; }
32namespace Editor::Prefabs { struct PrefabDBInstanceChangeEvent; }
33namespace Editor::Prefabs { struct PrefabDBTemplateChangeEvent; }
34namespace Editor::Prefabs::PrefabDBInstanceLoader::v1 { struct InstanceData; }
35namespace mce { class UUID; }
36// clang-format on
37
38namespace Editor::Services {
39
40class PrefabDBService : public ::Editor::Services::IEditorService,
44public:
45 // PrefabDBService inner types declare
46 // clang-format off
48 // clang-format on
49
50 // PrefabDBService inner types define
51 struct CachedPrefabInstanceBounds {
52 public:
53 // member variables
54 // NOLINTBEGIN
57 // NOLINTEND
58
59 public:
60 // prevent constructor by default
61 CachedPrefabInstanceBounds& operator=(CachedPrefabInstanceBounds const&);
62 CachedPrefabInstanceBounds(CachedPrefabInstanceBounds const&);
63 CachedPrefabInstanceBounds();
64 };
65
66public:
67 // member variables
68 // NOLINTBEGIN
79 // NOLINTEND
80
81public:
82 // prevent constructor by default
83 PrefabDBService& operator=(PrefabDBService const&);
84 PrefabDBService(PrefabDBService const&);
85 PrefabDBService();
86
87public:
88 // virtual functions
89 // NOLINTBEGIN
90 virtual ~PrefabDBService() /*override*/ = default;
91
92 virtual ::Scripting::Result_deprecated<void> init() /*override*/;
93
94 virtual ::Scripting::Result_deprecated<void> ready() /*override*/;
95
96 virtual ::Scripting::Result_deprecated<void> quit() /*override*/;
97
98 virtual ::std::string_view getServiceName() const /*override*/;
99
100 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
101 getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const /*override*/;
102
103 virtual ::BoundingBox getPrefabInstanceBounds(::Editor::Prefabs::PrefabDBPrefabInstance const& instance) const
104 /*override*/;
105
106 virtual ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> generateVisibleInstanceDataFromPrefabInstance(
107 ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance const> instanceRef
108 ) const /*override*/;
109
110 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> getTemplate(::mce::UUID const& templateId) const
111 /*override*/;
112
113 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::mce::UUID const& templateId) /*override*/;
114
115 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::std::string_view name) /*override*/;
116
117 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> createPrefabTemplate(
118 ::std::string const& name,
119 ::std::string const& displayName,
120 ::std::string const& description,
121 ::std::string const& notes,
122 ::std::vector<::std::string> const& tags
123 ) /*override*/;
124
125 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> getTemplates() const /*override*/;
126
127 virtual bool deleteTemplate(::mce::UUID const& templateId) /*override*/;
128
129 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> cloneTemplate(
130 ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> templateToCopyRef,
131 ::std::string const& newName,
132 ::std::optional<::std::string> const& optNewDisplayName
133 ) /*override*/;
134
135 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> createPrefabInstance(
136 ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> prefabTemplateRef,
137 ::DimensionType const& dimension,
138 ::Vec3 const& position,
139 ::Mirror mirror,
140 ::Rotation rotation
141 ) /*override*/;
142
143 virtual void deletePrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef) /*override*/;
144
145 virtual ::Bedrock::PubSub::Subscription subscribeToInstanceChanges(
146 ::std::function<void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const&)> callback
147 ) /*override*/;
148
149 virtual ::Bedrock::PubSub::Subscription subscribeToTemplateChanges(
150 ::std::function<void(::Editor::Prefabs::PrefabDBTemplateChangeEvent const&)> callback
151 ) /*override*/;
152
153 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
154 getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId) /*override*/;
155
156 virtual ::Scripting::Result_deprecated<void>
157 applyInstanceSnapshot(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const& data) /*override*/;
158
159 virtual ::Scripting::Result_deprecated<void> deleteInstanceById(::mce::UUID const& instanceId) /*override*/;
160
161 virtual ::std::optional<::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData>
162 getInstanceSnapshot(::mce::UUID const& instanceId) /*override*/;
163
164 virtual void findInstancesOfTemplate(
165 ::mce::UUID const& templateId,
166 ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>& outInstances
167 ) /*override*/;
168
169 virtual void bakePrefabInstanceToWorld(
170 ::BlockSource& region,
171 ::BlockPalette const& globalBlockPalette,
172 ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef,
173 ::std::optional<::std::string_view> optionalCapturePath,
174 bool& outSuccess
175 ) /*override*/;
176
177 virtual void bake(
178 ::WeakEntityRef weakPlayerRef,
179 ::std::function<void(bool)> completionCallback,
180 ::std::function<void(::std::string_view)> logger,
181 bool deleteInstancesAfterBake
182 ) /*override*/;
183
184 virtual void unbake(
185 ::WeakEntityRef weakPlayerRef,
186 ::std::function<void(bool)> completionCallback,
187 ::std::function<void(::std::string_view)> logger
188 ) /*override*/;
189 // NOLINTEND
190
191public:
192 // member functions
193 // NOLINTBEGIN
194 MCNAPI explicit PrefabDBService(::Editor::ServiceProviderCollection& serviceProviders);
195
196 MCNAPI bool _buildManifests();
197
198 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBPrefabInstance>
199 _createPrefabInstanceFromData(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const& data);
200
201 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBTemplate> _createPrefabTemplate(
202 ::std::string const& name,
203 ::std::string const& displayName,
204 ::std::string const& description,
205 ::std::string const& notes,
206 ::std::vector<::std::string> const& tags,
207 ::Editor::Prefabs::PrefabSource const& source
208 );
209
210 MCNAPI void _onTickEvent(::Editor::EditorManager&);
211 // NOLINTEND
212
213public:
214 // constructor thunks
215 // NOLINTBEGIN
216 MCNAPI void* $ctor(::Editor::ServiceProviderCollection& serviceProviders);
217 // NOLINTEND
218
219public:
220 // virtual function thunks
221 // NOLINTBEGIN
222 MCNAPI ::Scripting::Result_deprecated<void> $init();
223
224 MCNAPI ::Scripting::Result_deprecated<void> $ready();
225
226 MCNAPI ::Scripting::Result_deprecated<void> $quit();
227
228 MCNAPI ::std::string_view $getServiceName() const;
229
230 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
231 $getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const;
232
233 MCNAPI ::BoundingBox $getPrefabInstanceBounds(::Editor::Prefabs::PrefabDBPrefabInstance const& instance) const;
234
235 MCNAPI ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> $generateVisibleInstanceDataFromPrefabInstance(
236 ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance const> instanceRef
237 ) const;
238
239 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> $getTemplate(::mce::UUID const& templateId) const;
240
241 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::mce::UUID const& templateId);
242
243 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::std::string_view name);
244
245 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $createPrefabTemplate(
246 ::std::string const& name,
247 ::std::string const& displayName,
248 ::std::string const& description,
249 ::std::string const& notes,
250 ::std::vector<::std::string> const& tags
251 );
252
253 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> $getTemplates() const;
254
255 MCNAPI bool $deleteTemplate(::mce::UUID const& templateId);
256
257 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $cloneTemplate(
258 ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> templateToCopyRef,
259 ::std::string const& newName,
260 ::std::optional<::std::string> const& optNewDisplayName
261 );
262
263 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> $createPrefabInstance(
264 ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> prefabTemplateRef,
265 ::DimensionType const& dimension,
266 ::Vec3 const& position,
267 ::Mirror mirror,
268 ::Rotation rotation
269 );
270
271 MCNAPI void $deletePrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef);
272
273 MCNAPI ::Bedrock::PubSub::Subscription
274 $subscribeToInstanceChanges(::std::function<void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const&)> callback);
275
276 MCNAPI ::Bedrock::PubSub::Subscription
277 $subscribeToTemplateChanges(::std::function<void(::Editor::Prefabs::PrefabDBTemplateChangeEvent const&)> callback);
278
279 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
280 $getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId);
281
282 MCNAPI ::Scripting::Result_deprecated<void>
283 $applyInstanceSnapshot(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const& data);
284
285 MCNAPI ::Scripting::Result_deprecated<void> $deleteInstanceById(::mce::UUID const& instanceId);
286
287 MCNAPI ::std::optional<::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData>
288 $getInstanceSnapshot(::mce::UUID const& instanceId);
289
291 ::mce::UUID const& templateId,
292 ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>& outInstances
293 );
294
296 ::BlockSource& region,
297 ::BlockPalette const& globalBlockPalette,
298 ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef,
299 ::std::optional<::std::string_view> optionalCapturePath,
300 bool& outSuccess
301 );
302
303 MCNAPI void $bake(
304 ::WeakEntityRef weakPlayerRef,
305 ::std::function<void(bool)> completionCallback,
306 ::std::function<void(::std::string_view)> logger,
307 bool deleteInstancesAfterBake
308 );
309
310 MCNAPI void $unbake(
311 ::WeakEntityRef weakPlayerRef,
312 ::std::function<void(bool)> completionCallback,
313 ::std::function<void(::std::string_view)> logger
314 );
315
316
317 // NOLINTEND
318};
319
320} // namespace Editor::Services
Definition Subscription.h:10
Definition BlockPalette.h:18
Definition BlockSource.h:72
Definition BoundingBox.h:13
Definition ChunkPos.h:13
Definition EditorManager.h:31
Definition PrefabDBPrefabInstance.h:24
Definition PrefabDBServerPlayerServiceProvider.h:32
Definition PrefabDBServiceProvider.h:17
Definition PrefabDBTemplate.h:24
Definition VisiblePrefabInstance.h:12
Definition ServiceProviderCollection.h:7
Definition IEditorService.h:11
Definition PayloadStoreHelper.h:7
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate > $createPrefabTemplate(::std::string const &name, ::std::string const &displayName, ::std::string const &description, ::std::string const &notes, ::std::vector<::std::string > const &tags)
MCAPI ::Scripting::Result_deprecated< void > $applyInstanceSnapshot(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const &data)
MCAPI ::Scripting::Result_deprecated< void > $quit()
MCAPI void $bake(::WeakEntityRef weakPlayerRef, ::std::function< void(bool)> completionCallback, ::std::function< void(::std::string_view)> logger, bool deleteInstancesAfterBake)
MCAPI::Bedrock::PubSub::Subscription $subscribeToInstanceChanges(::std::function< void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const &)> callback)
MCAPI ::std::optional<::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData > $getInstanceSnapshot(::mce::UUID const &instanceId)
MCAPI ::std::optional<::Editor::Prefabs::VisiblePrefabInstance > $generateVisibleInstanceDataFromPrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance const > instanceRef) const
MCAPI ::StackRefResult<::Editor::Prefabs::PrefabDBPrefabInstance > _createPrefabInstanceFromData(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const &data)
MCAPI ::Scripting::Result_deprecated< void > $ready()
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > $getInstance(::DimensionType const &dimension, ::mce::UUID const &instanceId)
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const > $getTemplate(::mce::UUID const &templateId) const
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate > $cloneTemplate(::WeakRef<::Editor::Prefabs::PrefabDBTemplate const > templateToCopyRef, ::std::string const &newName, ::std::optional<::std::string > const &optNewDisplayName)
MCAPI bool $deleteTemplate(::mce::UUID const &templateId)
MCAPI void $unbake(::WeakEntityRef weakPlayerRef, ::std::function< void(bool)> completionCallback, ::std::function< void(::std::string_view)> logger)
MCAPI void _onTickEvent(::Editor::EditorManager &)
MCAPI::std::string_view $getServiceName() const
MCAPI ::Scripting::Result_deprecated< void > $init()
MCAPI ::Scripting::Result_deprecated< void > $deleteInstanceById(::mce::UUID const &instanceId)
MCAPI ::StackRefResult<::Editor::Prefabs::PrefabDBTemplate > _createPrefabTemplate(::std::string const &name, ::std::string const &displayName, ::std::string const &description, ::std::string const &notes, ::std::vector<::std::string > const &tags, ::Editor::Prefabs::PrefabSource const &source)
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > $createPrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBTemplate > prefabTemplateRef, ::DimensionType const &dimension, ::Vec3 const &position, ::Mirror mirror, ::Rotation rotation)
MCAPI::Bedrock::PubSub::Subscription $subscribeToTemplateChanges(::std::function< void(::Editor::Prefabs::PrefabDBTemplateChangeEvent const &)> callback)
MCAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const > > $getTemplates() const
MCAPI::BoundingBox $getPrefabInstanceBounds(::Editor::Prefabs::PrefabDBPrefabInstance const &instance) const
MCAPI void $deletePrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > instanceRef)
MCAPI void $bakePrefabInstanceToWorld(::BlockSource &region, ::BlockPalette const &globalBlockPalette, ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > instanceRef, ::std::optional<::std::string_view > optionalCapturePath, bool &outSuccess)
MCAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > > $getInstancesInChunk(::DimensionType const &dimension, ::ChunkPos const &chunkPos) const
MCAPI void * $ctor(::Editor::ServiceProviderCollection &serviceProviders)
MCAPI void $findInstancesOfTemplate(::mce::UUID const &templateId, ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > > &outInstances)
Definition StackRefResult.h:7
Definition Vec3.h:10
Definition WeakEntityRef.h:14
Definition WeakRef.h:8
Definition UUID.h:8
STL namespace.
Definition DimensionType.h:5
Definition PrefabDBInstanceChangeEvent.h:7
Definition PrefabDBTemplateChangeEvent.h:7
Definition Alias.h:14