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/core/file/PathBuffer.h"
8#include "mc/deps/core/utility/AutomaticID.h"
9#include "mc/deps/game_refs/StackRefResult.h"
10#include "mc/deps/game_refs/WeakRef.h"
11#include "mc/deps/scripting/runtime/Result_deprecated.h"
12#include "mc/editor/services/IEditorService.h"
13#include "mc/editor/services/PayloadStoreHelper.h"
14#include "mc/server/editor/serviceproviders/PrefabDBServerPlayerServiceProvider.h"
15#include "mc/server/editor/serviceproviders/PrefabDBServiceProvider.h"
16#include "mc/util/Mirror.h"
17#include "mc/util/Rotation.h"
18
19// auto generated forward declare list
20// clang-format off
21class BlockPalette;
22class BlockSource;
23class ChunkPos;
24class Dimension;
25class Vec3;
26class WeakEntityRef;
27namespace Bedrock::PubSub { class Subscription; }
28namespace Editor { class EditorManagerServer; }
29namespace Editor { class ServiceProviderCollection; }
30namespace Editor::Prefabs { class PrefabDBPrefabInstance; }
31namespace Editor::Prefabs { class PrefabDBTemplate; }
32namespace Editor::Prefabs { class VisiblePrefabInstance; }
33namespace Editor::Prefabs { struct PrefabDBInstanceChangeEvent; }
34namespace Editor::Prefabs { struct PrefabDBTemplateChangeEvent; }
35namespace mce { class UUID; }
36// clang-format on
37
38namespace Editor::Services {
39
40class PrefabDBService : public ::Editor::Services::IEditorService,
44public:
45 // member variables
46 // NOLINTBEGIN
55 // NOLINTEND
56
57public:
58 // prevent constructor by default
59 PrefabDBService& operator=(PrefabDBService const&);
60 PrefabDBService(PrefabDBService const&);
61 PrefabDBService();
62
63public:
64 // virtual functions
65 // NOLINTBEGIN
66 virtual ~PrefabDBService() /*override*/;
67
68 virtual ::Scripting::Result_deprecated<void> init() /*override*/;
69
70 virtual ::Scripting::Result_deprecated<void> ready() /*override*/;
71
72 virtual ::Scripting::Result_deprecated<void> quit() /*override*/;
73
74 virtual ::std::string_view getServiceName() const /*override*/;
75
76 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
77 getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const /*override*/;
78
79 virtual ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> generateVisibleInstanceDataFromPrefabInstance(
81 ) const /*override*/;
82
83 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> getTemplate(::mce::UUID const& templateId) const
84 /*override*/;
85
86 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::mce::UUID const& templateId) /*override*/;
87
88 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> getTemplate(::std::string_view name) /*override*/;
89
90 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> createPrefabTemplate(
91 ::std::string const& name,
92 ::std::string const& displayName,
93 ::std::string const& description,
94 ::std::string const& notes,
95 ::std::vector<::std::string> const& tags
96 ) /*override*/;
97
98 virtual ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> getTemplates() const /*override*/;
99
100 virtual bool deleteTemplate(::mce::UUID const& templateId) /*override*/;
101
102 virtual ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> cloneTemplate(
104 ::std::string const& newName,
105 ::std::optional<::std::string> const& optNewDisplayName
106 ) /*override*/;
107
108 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> createPrefabInstance(
110 ::DimensionType const& dimension,
111 ::Vec3 const& position,
112 ::Mirror mirror,
113 ::Rotation rotation
114 ) /*override*/;
115
116 virtual void deletePrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> instanceRef) /*override*/;
117
118 virtual ::Bedrock::PubSub::Subscription subscribeToInstanceChanges(
119 ::std::function<void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const&)> callback
120 ) /*override*/;
121
122 virtual ::Bedrock::PubSub::Subscription subscribeToTemplateChanges(
123 ::std::function<void(::Editor::Prefabs::PrefabDBTemplateChangeEvent const&)> callback
124 ) /*override*/;
125
126 virtual ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
127 getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId) /*override*/;
128
129 virtual void bakePrefabInstanceToWorld(
130 ::BlockSource& region,
131 ::BlockPalette const& globalBlockPalette,
133 ::std::optional<::std::string_view> optionalCapturePath
134 ) /*override*/;
135
136 virtual void bake(
137 ::WeakEntityRef weakPlayerRef,
138 ::std::function<void(bool)> completionCallback,
139 ::std::function<void(::std::string_view)> logger
140 ) /*override*/;
141
142 virtual void unbake(
143 ::WeakEntityRef weakPlayerRef,
144 ::std::function<void(bool)> completionCallback,
145 ::std::function<void(::std::string_view)> logger
146 ) /*override*/;
147 // NOLINTEND
148
149public:
150 // member functions
151 // NOLINTBEGIN
152 MCNAPI explicit PrefabDBService(::Editor::ServiceProviderCollection& serviceProviders);
153
154 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBPrefabInstance> _createPrefabInstance(
156 ::DimensionType const& dimension,
157 ::Vec3 const& position,
158 ::Mirror mirror,
159 ::Rotation rotation
160 );
161
162 MCNAPI ::StackRefResult<::Editor::Prefabs::PrefabDBTemplate> _createPrefabTemplate(
163 ::std::string const& name,
164 ::std::string const& displayName,
165 ::std::string const& description,
166 ::std::string const& notes,
167 ::std::vector<::std::string> const& tags,
168 ::Editor::Prefabs::PrefabSource const& source
169 );
170
171 MCNAPI bool
172 _loadPrefabDBInstances(::Core::PathBuffer<::std::string> const& dbPath, ::std::vector<::std::string>& errorLog);
173
175 ::Editor::Prefabs::PrefabSource source,
177 ::std::vector<::std::string>& errorLog
178 );
179
181
182 MCNAPI void
184
185 MCNAPI void _validateDatabase(::std::vector<::std::string>& outErrors);
186
189 ::Editor::Prefabs::PrefabDBPrefabInstance const& prefabInstance,
190 ::std::vector<::std::string>& outErrors
191 );
192
195 ::Editor::Prefabs::PrefabDBTemplate const& prefabTemplate,
196 ::std::vector<::std::string>& outErrors
197 );
198 // NOLINTEND
199
200public:
201 // constructor thunks
202 // NOLINTBEGIN
203 MCNAPI void* $ctor(::Editor::ServiceProviderCollection& serviceProviders);
204 // NOLINTEND
205
206public:
207 // destructor thunk
208 // NOLINTBEGIN
209 MCNAPI void $dtor();
210 // NOLINTEND
211
212public:
213 // virtual function thunks
214 // NOLINTBEGIN
215 MCNAPI ::Scripting::Result_deprecated<void> $init();
216
217 MCNAPI ::Scripting::Result_deprecated<void> $ready();
218
219 MCNAPI ::Scripting::Result_deprecated<void> $quit();
220
221 MCNAPI ::std::string_view $getServiceName() const;
222
223 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>>
224 $getInstancesInChunk(::DimensionType const& dimension, ::ChunkPos const& chunkPos) const;
225
226 MCNAPI ::std::optional<::Editor::Prefabs::VisiblePrefabInstance> $generateVisibleInstanceDataFromPrefabInstance(
228 ) const;
229
230 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate const> $getTemplate(::mce::UUID const& templateId) const;
231
232 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::mce::UUID const& templateId);
233
234 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $getTemplate(::std::string_view name);
235
236 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $createPrefabTemplate(
237 ::std::string const& name,
238 ::std::string const& displayName,
239 ::std::string const& description,
240 ::std::string const& notes,
241 ::std::vector<::std::string> const& tags
242 );
243
244 MCNAPI ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBTemplate const>> $getTemplates() const;
245
246 MCNAPI bool $deleteTemplate(::mce::UUID const& templateId);
247
248 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBTemplate> $cloneTemplate(
250 ::std::string const& newName,
251 ::std::optional<::std::string> const& optNewDisplayName
252 );
253
254 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance> $createPrefabInstance(
256 ::DimensionType const& dimension,
257 ::Vec3 const& position,
258 ::Mirror mirror,
259 ::Rotation rotation
260 );
261
263
264 MCNAPI ::Bedrock::PubSub::Subscription
266
267 MCNAPI ::Bedrock::PubSub::Subscription
269
270 MCNAPI ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance>
271 $getInstance(::DimensionType const& dimension, ::mce::UUID const& instanceId);
272
274 ::BlockSource& region,
275 ::BlockPalette const& globalBlockPalette,
277 ::std::optional<::std::string_view> optionalCapturePath
278 );
279
280 MCNAPI void $bake(
281 ::WeakEntityRef weakPlayerRef,
282 ::std::function<void(bool)> completionCallback,
283 ::std::function<void(::std::string_view)> logger
284 );
285
286 MCNAPI void $unbake(
287 ::WeakEntityRef weakPlayerRef,
288 ::std::function<void(bool)> completionCallback,
289 ::std::function<void(::std::string_view)> logger
290 );
291
292
293 // NOLINTEND
294
295public:
296 // vftables
297 // NOLINTBEGIN
299
301
302 MCNAPI static void** $vftableForIEditorService();
303 // NOLINTEND
304};
305
306} // namespace Editor::Services
Definition Subscription.h:10
Definition BlockPalette.h:19
Definition BlockSource.h:68
Definition ChunkPos.h:11
Definition PathBuffer.h:8
Definition Dimension.h:85
Definition EditorManagerServer.h:39
Definition PrefabDBPrefabInstance.h:25
Definition PrefabDBServerPlayerServiceProvider.h:30
Definition PrefabDBServiceProvider.h:17
Definition PrefabDBTemplate.h:24
Definition VisiblePrefabInstance.h:7
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 ::StackRefResult<::Editor::Prefabs::PrefabDBPrefabInstance > _createPrefabInstance(::WeakRef<::Editor::Prefabs::PrefabDBTemplate > prefabTemplateRef, ::DimensionType const &dimension, ::Vec3 const &position, ::Mirror mirror, ::Rotation rotation)
MCAPI void $bakePrefabInstanceToWorld(::BlockSource &region, ::BlockPalette const &globalBlockPalette, ::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > instanceRef, ::std::optional<::std::string_view > optionalCapturePath)
MCAPI void _writePrefabTemplateToStorage(::Core::PathBuffer<::std::string > const &dbPath, ::Editor::Prefabs::PrefabDBTemplate const &prefabTemplate, ::std::vector<::std::string > &outErrors)
static MCAPI void ** $vftableForPrefabDBServerPlayerServiceProvider()
static MCAPI void ** $vftableForIEditorService()
MCAPI ::Scripting::Result_deprecated< void > $quit()
MCAPI void _onTickEvent(::Editor::EditorManagerServer &)
MCAPI::Bedrock::PubSub::Subscription $subscribeToInstanceChanges(::std::function< void(::Editor::Prefabs::PrefabDBInstanceChangeEvent const &)> callback)
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 ::Scripting::Result_deprecated< void > $ready()
MCAPI void _validateDatabase(::std::vector<::std::string > &outErrors)
MCAPI void $bake(::WeakEntityRef weakPlayerRef, ::std::function< void(bool)> completionCallback, ::std::function< void(::std::string_view)> logger)
MCAPI void _writePrefabInstanceToStorage(::Core::PathBuffer<::std::string > const &dbPath, ::Editor::Prefabs::PrefabDBPrefabInstance const &prefabInstance, ::std::vector<::std::string > &outErrors)
MCAPI void _propagateDirtyTemplateChangesToInstances(::WeakRef<::Editor::Prefabs::PrefabDBTemplate > templateWeakRef)
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 bool _loadPrefabDBInstances(::Core::PathBuffer<::std::string > const &dbPath, ::std::vector<::std::string > &errorLog)
MCAPI::std::string_view $getServiceName() const
MCAPI ::Scripting::Result_deprecated< void > $init()
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 ::std::vector<::WeakRef<::Editor::Prefabs::PrefabDBPrefabInstance > > $getInstancesInChunk(::DimensionType const &dimension, ::ChunkPos const &chunkPos) const
MCAPI void * $ctor(::Editor::ServiceProviderCollection &serviceProviders)
MCAPI bool _loadPrefabDBTemplates(::Editor::Prefabs::PrefabSource source, ::Core::PathBuffer<::std::string > const &dbPath, ::std::vector<::std::string > &errorLog)
Definition Vec3.h:10
Definition WeakEntityRef.h:14
Definition WeakRef.h:8
Definition UUID.h:7
Definition PrefabDBInstanceChangeEvent.h:7
Definition PrefabDBTemplateChangeEvent.h:7
Definition Alias.h:14