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/common/editor/PrefabSource.h"
7#include "mc/deps/game_refs/StackRefResult.h"
8#include "mc/deps/game_refs/WeakRef.h"
9#include "mc/deps/script_core/runtime/scripting/Result_deprecated.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 ChunkPos;
22class Vec3;
23class WeakEntityRef;
24struct DimensionType;
25namespace Bedrock::PubSub { class Subscription; }
26namespace Editor { class EditorManager; }
27namespace Editor { class ServiceProviderCollection; }
28namespace Editor::Prefabs { class PrefabDBPrefabInstance; }
29namespace Editor::Prefabs { class PrefabDBTemplate; }
30namespace Editor::Prefabs { class VisiblePrefabInstance; }
31namespace Editor::Prefabs { struct PrefabDBInstanceChangeEvent; }
32namespace Editor::Prefabs { struct PrefabDBTemplateChangeEvent; }
33namespace Editor::Prefabs::PrefabDBInstanceLoader::v1 { struct InstanceData; }
34namespace mce { class UUID; }
35// clang-format on
36
37namespace Editor::Services {
38
39class PrefabDBService : public ::Editor::Services::IEditorService,
43public:
44 // member variables
45 // NOLINTBEGIN
54 // NOLINTEND
55
56public:
57 // prevent constructor by default
58 PrefabDBService& operator=(PrefabDBService const&);
59 PrefabDBService(PrefabDBService const&);
60 PrefabDBService();
61
62public:
63 // virtual functions
64 // NOLINTBEGIN
65 virtual ~PrefabDBService() /*override*/ = default;
66
67 virtual ::Scripting::Result_deprecated<void> init() /*override*/;
68
69 virtual ::Scripting::Result_deprecated<void> ready() /*override*/;
70
71 virtual ::Scripting::Result_deprecated<void> quit() /*override*/;
72
73 virtual ::std::string_view getServiceName() const /*override*/;
74
75 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
76 getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const /*override*/;
77
78 virtual ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> generateVisibleInstanceDataFromPrefabInstance(
80 ) const /*override*/;
81
82 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> getTemplate(::mce::UUID const& templateId) const
83 /*override*/;
84
85 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::mce::UUID const& templateId) /*override*/;
86
87 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::std::string_view name) /*override*/;
88
89 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> createPrefabTemplate(
90 ::std::string const& name,
91 ::std::string const& displayName,
92 ::std::string const& description,
93 ::std::string const& notes,
94 ::std::vector<::std::string> const& tags
95 ) /*override*/;
96
97 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> getTemplates() const /*override*/;
98
99 virtual bool deleteTemplate(::mce::UUID const& templateId) /*override*/;
100
101 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> cloneTemplate(
103 ::std::string const& newName,
104 ::std::optional<::std::string> const& optNewDisplayName
105 ) /*override*/;
106
107 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> createPrefabInstance(
109 ::DimensionType const& dimension,
110 ::Vec3 const& position,
111 ::Mirror mirror,
112 ::Rotation rotation
113 ) /*override*/;
114
115 virtual void deletePrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef) /*override*/;
116
117 virtual ::Bedrock::PubSub::Subscription subscribeToInstanceChanges(
118 ::std::function<void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const&)> callback
119 ) /*override*/;
120
121 virtual ::Bedrock::PubSub::Subscription subscribeToTemplateChanges(
122 ::std::function<void(::Editor::Prefabs::PrefabDBTemplateChangeEvent const&)> callback
123 ) /*override*/;
124
125 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
126 getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId) /*override*/;
127
128 virtual ::Scripting::Result_deprecated<void>
129 applyInstanceSnapshot(::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData const& data) /*override*/;
130
131 virtual ::Scripting::Result_deprecated<void> deleteInstanceById(::mce::UUID const& instanceId) /*override*/;
132
133 virtual ::std::optional<::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData>
134 getInstanceSnapshot(::mce::UUID const& instanceId) /*override*/;
135
136 virtual void findInstancesOfTemplate(
137 ::mce::UUID const& templateId,
139 ) /*override*/;
140
141 virtual void bakePrefabInstanceToWorld(
142 ::BlockSource& region,
143 ::BlockPalette const& globalBlockPalette,
145 ::std::optional<::std::string_view> optionalCapturePath,
146 bool& outSuccess
147 ) /*override*/;
148
149 virtual void bake(
150 ::WeakEntityRef weakPlayerRef,
151 ::std::function<void(bool)> completionCallback,
152 ::std::function<void(::std::string_view)> logger,
153 bool deleteInstancesAfterBake
154 ) /*override*/;
155
156 virtual void unbake(
157 ::WeakEntityRef weakPlayerRef,
158 ::std::function<void(bool)> completionCallback,
159 ::std::function<void(::std::string_view)> logger
160 ) /*override*/;
161 // NOLINTEND
162
163public:
164 // member functions
165 // NOLINTBEGIN
166 MCNAPI explicit PrefabDBService(::Editor::ServiceProviderCollection& serviceProviders);
167
168 MCNAPI bool _buildManifests();
169
170 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBPrefabInstance>
172
173 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBTemplate> _createPrefabTemplate(
174 ::std::string const& name,
175 ::std::string const& displayName,
176 ::std::string const& description,
177 ::std::string const& notes,
178 ::std::vector<::std::string> const& tags,
179 ::Editor::Prefabs::PrefabSource const& source
180 );
181
183 // NOLINTEND
184
185public:
186 // constructor thunks
187 // NOLINTBEGIN
188 MCNAPI void* $ctor(::Editor::ServiceProviderCollection& serviceProviders);
189 // NOLINTEND
190
191public:
192 // virtual function thunks
193 // NOLINTBEGIN
194 MCNAPI ::Scripting::Result_deprecated<void> $init();
195
196 MCNAPI ::Scripting::Result_deprecated<void> $ready();
197
198 MCNAPI ::Scripting::Result_deprecated<void> $quit();
199
200 MCNAPI ::std::string_view $getServiceName() const;
201
202 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
203 $getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const;
204
205 MCNAPI ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> $generateVisibleInstanceDataFromPrefabInstance(
207 ) const;
208
209 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> $getTemplate(::mce::UUID const& templateId) const;
210
211 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::mce::UUID const& templateId);
212
213 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::std::string_view name);
214
215 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $createPrefabTemplate(
216 ::std::string const& name,
217 ::std::string const& displayName,
218 ::std::string const& description,
219 ::std::string const& notes,
220 ::std::vector<::std::string> const& tags
221 );
222
223 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> $getTemplates() const;
224
225 MCNAPI bool $deleteTemplate(::mce::UUID const& templateId);
226
227 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $cloneTemplate(
229 ::std::string const& newName,
230 ::std::optional<::std::string> const& optNewDisplayName
231 );
232
233 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> $createPrefabInstance(
235 ::DimensionType const& dimension,
236 ::Vec3 const& position,
237 ::Mirror mirror,
238 ::Rotation rotation
239 );
240
242
243 MCNAPI ::Bedrock::PubSub::Subscription
245
246 MCNAPI ::Bedrock::PubSub::Subscription
248
249 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
250 $getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId);
251
252 MCNAPI ::Scripting::Result_deprecated<void>
254
255 MCNAPI ::Scripting::Result_deprecated<void> $deleteInstanceById(::mce::UUID const& instanceId);
256
257 MCNAPI ::std::optional<::Editor::Prefabs::PrefabDBInstanceLoader::v1::InstanceData>
259
261 ::mce::UUID const& templateId,
263 );
264
266 ::BlockSource& region,
267 ::BlockPalette const& globalBlockPalette,
269 ::std::optional<::std::string_view> optionalCapturePath,
270 bool& outSuccess
271 );
272
273 MCNAPI void $bake(
274 ::WeakEntityRef weakPlayerRef,
275 ::std::function<void(bool)> completionCallback,
276 ::std::function<void(::std::string_view)> logger,
277 bool deleteInstancesAfterBake
278 );
279
280 MCNAPI void $unbake(
281 ::WeakEntityRef weakPlayerRef,
282 ::std::function<void(bool)> completionCallback,
283 ::std::function<void(::std::string_view)> logger
284 );
285
286
287 // NOLINTEND
288
289public:
290 // vftables
291 // NOLINTBEGIN
293
295
296 MCNAPI static void** $vftableForIEditorService();
297 // NOLINTEND
298};
299
300} // namespace Editor::Services
Definition Subscription.h:10
Definition BlockPalette.h:18
Definition BlockSource.h:71
Definition ChunkPos.h:13
Definition EditorManager.h:31
Definition PrefabDBPrefabInstance.h:24
Definition PrefabDBServerPlayerServiceProvider.h:31
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 PrefabDBService(::Editor::ServiceProviderCollection &serviceProviders)
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)
static MCAPI void ** $vftableForPrefabDBServerPlayerServiceProvider()
static MCAPI void ** $vftableForIEditorService()
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 ::WeakRef<::Editor::Prefabs::PrefabDBTemplate > $getTemplate(::mce::UUID const &templateId)
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)
static MCAPI void ** $vftableForPrefabDBServiceProvider()
MCAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate > $getTemplate(::std::string_view name)
MCAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const > > $getTemplates() 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 Vec3.h:10
Definition WeakEntityRef.h:14
Definition WeakRef.h:8
Definition UUID.h:8
Definition DimensionType.h:5
Definition PrefabDBInstanceChangeEvent.h:7
Definition PrefabDBTemplateChangeEvent.h:7
Definition Alias.h:14