UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ISMPartitionInstanceManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "UObject/Interface.h"
9#include "ISMPartitionInstanceManager.generated.h"
10
11enum class ETypedElementWorldType : uint8;
12
18UINTERFACE(MinimalAPI)
24{
26
27public:
32 {
33 return FText();
34 }
35
40 {
41 return FText();
42 }
43
48 virtual bool CanEditISMPartitionInstance(const FISMClientInstanceId& InstanceId) const = 0;
49
54 virtual bool CanMoveISMPartitionInstance(const FISMClientInstanceId& InstanceId, const ETypedElementWorldType WorldType) const = 0;
55
61 virtual bool GetISMPartitionInstanceTransform(const FISMClientInstanceId& InstanceId, FTransform& OutInstanceTransform, bool bWorldSpace = false) const = 0;
62
68 virtual bool SetISMPartitionInstanceTransform(const FISMClientInstanceId& InstanceId, const FTransform& InstanceTransform, bool bWorldSpace = false, bool bTeleport = false) = 0;
69
75
81
87
92 virtual void NotifyISMPartitionInstanceSelectionChanged(const FISMClientInstanceId& InstanceId, const bool bIsSelected) = 0;
93
98 virtual bool CanDeleteISMPartitionInstance(const FISMClientInstanceId& InstanceId) const
99 {
100 return CanEditISMPartitionInstance(InstanceId);
101 }
102
108
113 virtual bool CanDuplicateISMPartitionInstance(const FISMClientInstanceId& InstanceId) const
114 {
115 return CanEditISMPartitionInstance(InstanceId);
116 }
117
123};
124
129UINTERFACE(MinimalAPI)
145
150{
151public:
153
159
160 explicit operator bool() const
161 {
162 return InstanceId
163 && InstanceManager;
164 }
165
167 {
168 return InstanceId == InRHS.InstanceId
169 && InstanceManager == InRHS.InstanceManager;
170 }
171
173 {
174 return !(*this == InRHS);
175 }
176
178 {
179 return GetTypeHash(InId.InstanceId);
180 }
181
182 const FISMClientInstanceId& GetInstanceId() const { return InstanceId; }
183 IISMPartitionInstanceManager* GetInstanceManager() const { return InstanceManager; }
184
185 //~ IISMPartitionInstanceManager interface
186 FText GetISMPartitionInstanceDisplayName() const { return InstanceManager->GetISMPartitionInstanceDisplayName(InstanceId); }
187 FText GetISMPartitionInstanceTooltip() const { return InstanceManager->GetISMPartitionInstanceTooltip(InstanceId); }
188 bool CanEditISMPartitionInstance() const { return InstanceManager->CanEditISMPartitionInstance(InstanceId); }
189 bool CanMoveISMPartitionInstance(const ETypedElementWorldType WorldType) const { return InstanceManager->CanMoveISMPartitionInstance(InstanceId, WorldType); }
190 bool GetISMPartitionInstanceTransform(FTransform& OutInstanceTransform, bool bWorldSpace = false) const { return InstanceManager->GetISMPartitionInstanceTransform(InstanceId, OutInstanceTransform, bWorldSpace); }
191 bool SetISMPartitionInstanceTransform(const FTransform& InstanceTransform, bool bWorldSpace = false, bool bTeleport = false) const { return InstanceManager->SetISMPartitionInstanceTransform(InstanceId, InstanceTransform, bWorldSpace, bTeleport); }
194 void NotifyISMPartitionInstanceMovementEnded() const { return InstanceManager->NotifyISMPartitionInstanceMovementEnded(InstanceId); }
195 void NotifyISMPartitionInstanceSelectionChanged(const bool bIsSelected) const { return InstanceManager->NotifyISMPartitionInstanceSelectionChanged(InstanceId, bIsSelected); }
196 bool CanDeleteISMPartitionInstance() const { return InstanceManager->CanDeleteISMPartitionInstance(InstanceId); }
197 bool DeleteISMPartitionInstance() const { return InstanceManager->DeleteISMPartitionInstances(MakeArrayView(&InstanceId, 1)); }
198 bool CanDuplicateISMPartitionInstance() const { return InstanceManager->CanDuplicateISMPartitionInstance(InstanceId); }
200 {
202 if (InstanceManager->DuplicateISMPartitionInstances(MakeArrayView(&InstanceId, 1), NewInstanceIds))
203 {
205 return true;
206 }
207 return false;
208 }
209
210private:
211 FISMClientInstanceId InstanceId;
212 IISMPartitionInstanceManager* InstanceManager = nullptr;
213};
214
215USTRUCT()
217{
219
220public:
222 {
223 SerializePtr(Ar, Manager);
224 SerializePtr(Ar, ManagerProvider);
225 return true;
226 }
227
229 {
230 Manager = InManager;
231 ManagerProvider = nullptr;
232 }
233
235 {
236 Manager = nullptr;
237 ManagerProvider = InManagerProvider;
238 }
239
241 {
242 return ManagerProvider
243 ? ManagerProvider->GetISMPartitionInstanceManager(ClientHandle)
244 : Manager;
245 }
246
247private:
248 template <typename T>
249 static void SerializePtr(FArchive& Ar, T*& Ptr)
250 {
251 enum class ERefType : uint8
252 {
253 Null,
254 Object,
255 Raw,
256 };
257
258 if (Ar.IsSaving())
259 {
260 if (UObject* Obj = Cast<UObject>(Ptr))
261 {
262 ERefType RefType = ERefType::Object;
263 Ar << RefType;
264
265 Ar << Obj;
266 }
267 else if (Ptr && !Ar.IsPersistent())
268 {
269 ERefType RefType = ERefType::Raw;
270 Ar << RefType;
271
272 uint64 PtrInt = (uint64)Ptr;
273 Ar << PtrInt;
274 }
275 else
276 {
277 ERefType RefType = ERefType::Null;
278 Ar << RefType;
279 }
280 }
281 else if (Ar.IsLoading())
282 {
283 ERefType RefType;
284 Ar << RefType;
285
286 switch (RefType)
287 {
288 case ERefType::Object:
289 {
290 UObject* Obj = nullptr;
291 Ar << Obj;
292 Ptr = Cast<T>(Obj);
293 }
294 break;
295 case ERefType::Raw:
296 {
297 uint64 PtrInt = 0;
298 Ar << PtrInt;
299 Ptr = (T*)PtrInt;
300 }
301 break;
302 default:
303 Ptr = nullptr;
304 break;
305 }
306 }
307 };
308
309 IISMPartitionInstanceManager* Manager = nullptr;
310 IISMPartitionInstanceManagerProvider* ManagerProvider = nullptr;
311};
312
313template<>
315{
316 enum
317 {
319 };
320};
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UINTERFACE(...)
Definition ObjectMacros.h:780
#define USTRUCT(...)
Definition ObjectMacros.h:746
ETypedElementWorldType
Definition TypedElementWorldInterface.h:26
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsPersistent() const
Definition Archive.h:300
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition Text.h:385
Definition ISMPartitionInstanceManager.h:135
virtual IISMPartitionInstanceManager * GetISMPartitionInstanceManager(const FISMClientHandle &ClientHandle)=0
Definition ISMPartitionInstanceManager.h:24
virtual FText GetISMPartitionInstanceTooltip(const FISMClientInstanceId &InstanceId) const
Definition ISMPartitionInstanceManager.h:39
virtual FText GetISMPartitionInstanceDisplayName(const FISMClientInstanceId &InstanceId) const
Definition ISMPartitionInstanceManager.h:31
virtual void NotifyISMPartitionInstanceMovementEnded(const FISMClientInstanceId &InstanceId)=0
virtual void NotifyISMPartitionInstanceSelectionChanged(const FISMClientInstanceId &InstanceId, const bool bIsSelected)=0
virtual bool CanDeleteISMPartitionInstance(const FISMClientInstanceId &InstanceId) const
Definition ISMPartitionInstanceManager.h:98
virtual bool SetISMPartitionInstanceTransform(const FISMClientInstanceId &InstanceId, const FTransform &InstanceTransform, bool bWorldSpace=false, bool bTeleport=false)=0
virtual bool GetISMPartitionInstanceTransform(const FISMClientInstanceId &InstanceId, FTransform &OutInstanceTransform, bool bWorldSpace=false) const =0
virtual void NotifyISMPartitionInstanceMovementOngoing(const FISMClientInstanceId &InstanceId)=0
virtual bool DeleteISMPartitionInstances(TArrayView< const FISMClientInstanceId > InstanceIds)=0
virtual bool DuplicateISMPartitionInstances(TArrayView< const FISMClientInstanceId > InstanceIds, TArray< FISMClientInstanceId > &OutNewInstanceIds)=0
virtual bool CanEditISMPartitionInstance(const FISMClientInstanceId &InstanceId) const =0
virtual void NotifyISMPartitionInstanceMovementStarted(const FISMClientInstanceId &InstanceId)=0
virtual bool CanDuplicateISMPartitionInstance(const FISMClientInstanceId &InstanceId) const
Definition ISMPartitionInstanceManager.h:113
virtual bool CanMoveISMPartitionInstance(const FISMClientInstanceId &InstanceId, const ETypedElementWorldType WorldType) const =0
Definition ArrayView.h:139
Definition Array.h:670
Definition ISMPartitionInstanceManager.h:131
Definition ISMPartitionInstanceManager.h:20
Definition Interface.h:19
Definition Object.h:95
Definition ISMPartitionClient.h:10
Definition ISMPartitionClient.h:62
Definition ISMPartitionInstanceManager.h:217
bool Serialize(FArchive &Ar)
Definition ISMPartitionInstanceManager.h:221
IISMPartitionInstanceManager * ResolveInstanceManager(const FISMClientHandle &ClientHandle) const
Definition ISMPartitionInstanceManager.h:240
void SetInstanceManagerProvider(IISMPartitionInstanceManagerProvider *InManagerProvider)
Definition ISMPartitionInstanceManager.h:234
void SetInstanceManager(IISMPartitionInstanceManager *InManager)
Definition ISMPartitionInstanceManager.h:228
Definition ISMPartitionInstanceManager.h:150
void NotifyISMPartitionInstanceMovementEnded() const
Definition ISMPartitionInstanceManager.h:194
bool DuplicateISMPartitionInstance(FISMClientInstanceId &OutNewInstanceId) const
Definition ISMPartitionInstanceManager.h:199
bool CanDeleteISMPartitionInstance() const
Definition ISMPartitionInstanceManager.h:196
bool GetISMPartitionInstanceTransform(FTransform &OutInstanceTransform, bool bWorldSpace=false) const
Definition ISMPartitionInstanceManager.h:190
bool operator==(const FISMPartitionInstanceManager &InRHS) const
Definition ISMPartitionInstanceManager.h:166
FText GetISMPartitionInstanceDisplayName() const
Definition ISMPartitionInstanceManager.h:186
void NotifyISMPartitionInstanceMovementStarted() const
Definition ISMPartitionInstanceManager.h:192
void NotifyISMPartitionInstanceSelectionChanged(const bool bIsSelected) const
Definition ISMPartitionInstanceManager.h:195
IISMPartitionInstanceManager * GetInstanceManager() const
Definition ISMPartitionInstanceManager.h:183
bool DeleteISMPartitionInstance() const
Definition ISMPartitionInstanceManager.h:197
bool CanEditISMPartitionInstance() const
Definition ISMPartitionInstanceManager.h:188
FISMPartitionInstanceManager(const FISMClientInstanceId &InInstanceId, IISMPartitionInstanceManager *InInstanceManager)
Definition ISMPartitionInstanceManager.h:154
friend uint32 GetTypeHash(const FISMPartitionInstanceManager &InId)
Definition ISMPartitionInstanceManager.h:177
bool CanMoveISMPartitionInstance(const ETypedElementWorldType WorldType) const
Definition ISMPartitionInstanceManager.h:189
FText GetISMPartitionInstanceTooltip() const
Definition ISMPartitionInstanceManager.h:187
bool operator!=(const FISMPartitionInstanceManager &InRHS) const
Definition ISMPartitionInstanceManager.h:172
bool CanDuplicateISMPartitionInstance() const
Definition ISMPartitionInstanceManager.h:198
void NotifyISMPartitionInstanceMovementOngoing() const
Definition ISMPartitionInstanceManager.h:193
bool SetISMPartitionInstanceTransform(const FTransform &InstanceTransform, bool bWorldSpace=false, bool bTeleport=false) const
Definition ISMPartitionInstanceManager.h:191
const FISMClientInstanceId & GetInstanceId() const
Definition ISMPartitionInstanceManager.h:182
Definition StructOpsTypeTraits.h:11
@ WithSerializer
Definition StructOpsTypeTraits.h:23
Definition StructOpsTypeTraits.h:46