UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SMInstanceManager.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"
10#include "SMInstanceManager.generated.h"
11
12enum class ETypedElementWorldType : uint8;
14
20UINTERFACE(MinimalAPI)
26{
28
29public:
33 virtual FText GetSMInstanceDisplayName(const FSMInstanceId& InstanceId) const
34 {
35 return FText();
36 }
37
41 virtual FText GetSMInstanceTooltip(const FSMInstanceId& InstanceId) const
42 {
43 return FText();
44 }
45
50 virtual bool CanEditSMInstance(const FSMInstanceId& InstanceId) const = 0;
51
56 virtual bool CanMoveSMInstance(const FSMInstanceId& InstanceId, const ETypedElementWorldType WorldType) const = 0;
57
63 virtual bool GetSMInstanceTransform(const FSMInstanceId& InstanceId, FTransform& OutInstanceTransform, bool bWorldSpace = false) const = 0;
64
70 virtual bool SetSMInstanceTransform(const FSMInstanceId& InstanceId, const FTransform& InstanceTransform, bool bWorldSpace = false, bool bMarkRenderStateDirty = false, bool bTeleport = false) = 0;
71
76 virtual void NotifySMInstanceMovementStarted(const FSMInstanceId& InstanceId) = 0;
77
82 virtual void NotifySMInstanceMovementOngoing(const FSMInstanceId& InstanceId) = 0;
83
88 virtual void NotifySMInstanceMovementEnded(const FSMInstanceId& InstanceId) = 0;
89
94 virtual void NotifySMInstanceSelectionChanged(const FSMInstanceId& InstanceId, const bool bIsSelected) = 0;
95
109 virtual void ForEachSMInstanceInSelectionGroup(const FSMInstanceId& InstanceId, TFunctionRef<bool(FSMInstanceId)> Callback)
110 {
111 Callback(InstanceId);
112 }
113
118 virtual bool CanDeleteSMInstance(const FSMInstanceId& InstanceId) const
119 {
120 return CanEditSMInstance(InstanceId);
121 }
122
128
133 virtual bool CanDuplicateSMInstance(const FSMInstanceId& InstanceId) const
134 {
135 return CanEditSMInstance(InstanceId);
136 }
137
143
149 {
150 return nullptr;
151 }
152};
153
154UCLASS(MinimalAPI, Abstract)
156{
158
159public:
161 virtual void Shutdown() {}
162private:
163 virtual bool SyncProxyStateFromInstance() { return false; }
164};
165
171UINTERFACE(MinimalAPI)
177{
179
180public:
186};
187
192{
193public:
195
201
202 explicit operator bool() const
203 {
204 return InstanceId
205 && InstanceManager;
206 }
207
209 {
210 return InstanceId == InRHS.InstanceId
211 && InstanceManager == InRHS.InstanceManager;
212 }
213
215 {
216 return !(*this == InRHS);
217 }
218
220 {
221 return GetTypeHash(InId.InstanceId);
222 }
223
224 const FSMInstanceId& GetInstanceId() const { return InstanceId; }
225 ISMInstanceManager* GetInstanceManager() const { return InstanceManager; }
226
228 int32 GetISMInstanceIndex() const { return InstanceId.InstanceIndex; }
229
230 //~ ISMInstanceManager interface
231 FText GetSMInstanceDisplayName() const { return InstanceManager->GetSMInstanceDisplayName(InstanceId); }
232 FText GetSMInstanceTooltip() const { return InstanceManager->GetSMInstanceTooltip(InstanceId); }
233 bool CanEditSMInstance() const { return InstanceManager->CanEditSMInstance(InstanceId); }
234 bool CanMoveSMInstance(const ETypedElementWorldType WorldType) const { return InstanceManager->CanMoveSMInstance(InstanceId, WorldType); }
235 bool GetSMInstanceTransform(FTransform& OutInstanceTransform, bool bWorldSpace = false) const { return InstanceManager->GetSMInstanceTransform(InstanceId, OutInstanceTransform, bWorldSpace); }
236 bool SetSMInstanceTransform(const FTransform& InstanceTransform, bool bWorldSpace = false, bool bMarkRenderStateDirty = false, bool bTeleport = false) const { return InstanceManager->SetSMInstanceTransform(InstanceId, InstanceTransform, bWorldSpace, bMarkRenderStateDirty, bTeleport); }
237 void NotifySMInstanceMovementStarted() const { return InstanceManager->NotifySMInstanceMovementStarted(InstanceId); }
238 void NotifySMInstanceMovementOngoing() const { return InstanceManager->NotifySMInstanceMovementOngoing(InstanceId); }
239 void NotifySMInstanceMovementEnded() const { return InstanceManager->NotifySMInstanceMovementEnded(InstanceId); }
240 void NotifySMInstanceSelectionChanged(const bool bIsSelected) const { return InstanceManager->NotifySMInstanceSelectionChanged(InstanceId, bIsSelected); }
241 void ForEachSMInstanceInSelectionGroup(TFunctionRef<bool(FSMInstanceId)> Callback) const { return InstanceManager->ForEachSMInstanceInSelectionGroup(InstanceId, Callback); }
242 bool CanDeleteSMInstance() const { return InstanceManager->CanDeleteSMInstance(InstanceId); }
243 bool DeleteSMInstance() const { return InstanceManager->DeleteSMInstances(MakeArrayView(&InstanceId, 1)); }
244 bool CanDuplicateSMInstance() const { return InstanceManager->CanDuplicateSMInstance(InstanceId); }
246 {
248 if (InstanceManager->DuplicateSMInstances(MakeArrayView(&InstanceId, 1), NewInstanceIds))
249 {
251 return true;
252 }
253 return false;
254 }
255
256private:
257 FSMInstanceId InstanceId;
258 ISMInstanceManager* InstanceManager = nullptr;
259};
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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 UCLASS(...)
Definition ObjectMacros.h:776
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 Text.h:385
Definition SMInstanceManager.h:177
virtual ISMInstanceManager * GetSMInstanceManager(const FSMInstanceId &InstanceId)=0
Definition SMInstanceManager.h:26
virtual bool DuplicateSMInstances(TArrayView< const FSMInstanceId > InstanceIds, TArray< FSMInstanceId > &OutNewInstanceIds)=0
virtual bool CanMoveSMInstance(const FSMInstanceId &InstanceId, const ETypedElementWorldType WorldType) const =0
virtual void NotifySMInstanceMovementEnded(const FSMInstanceId &InstanceId)=0
virtual void ForEachSMInstanceInSelectionGroup(const FSMInstanceId &InstanceId, TFunctionRef< bool(FSMInstanceId)> Callback)
Definition SMInstanceManager.h:109
virtual bool DeleteSMInstances(TArrayView< const FSMInstanceId > InstanceIds)=0
virtual void NotifySMInstanceSelectionChanged(const FSMInstanceId &InstanceId, const bool bIsSelected)=0
virtual bool GetSMInstanceTransform(const FSMInstanceId &InstanceId, FTransform &OutInstanceTransform, bool bWorldSpace=false) const =0
virtual bool SetSMInstanceTransform(const FSMInstanceId &InstanceId, const FTransform &InstanceTransform, bool bWorldSpace=false, bool bMarkRenderStateDirty=false, bool bTeleport=false)=0
virtual bool CanDeleteSMInstance(const FSMInstanceId &InstanceId) const
Definition SMInstanceManager.h:118
virtual void NotifySMInstanceMovementOngoing(const FSMInstanceId &InstanceId)=0
virtual bool CanEditSMInstance(const FSMInstanceId &InstanceId) const =0
virtual TSubclassOf< USMInstanceProxyEditingObject > GetSMInstanceEditingProxyClass() const
Definition SMInstanceManager.h:148
virtual bool CanDuplicateSMInstance(const FSMInstanceId &InstanceId) const
Definition SMInstanceManager.h:133
virtual FText GetSMInstanceDisplayName(const FSMInstanceId &InstanceId) const
Definition SMInstanceManager.h:33
virtual void NotifySMInstanceMovementStarted(const FSMInstanceId &InstanceId)=0
virtual FText GetSMInstanceTooltip(const FSMInstanceId &InstanceId) const
Definition SMInstanceManager.h:41
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition SubclassOf.h:30
Definition InstancedStaticMeshComponent.h:158
Definition Interface.h:19
Definition Object.h:95
Definition SMInstanceManager.h:173
Definition SMInstanceManager.h:22
Definition SMInstanceManager.h:156
virtual void Initialize(const FSMInstanceElementId &InSMInstanceElementId)
Definition SMInstanceManager.h:160
virtual void Shutdown()
Definition SMInstanceManager.h:161
Definition SMInstanceElementId.h:53
Definition SMInstanceElementId.h:20
UInstancedStaticMeshComponent * ISMComponent
Definition SMInstanceElementId.h:43
int32 InstanceIndex
Definition SMInstanceElementId.h:44
Definition SMInstanceManager.h:192
FSMInstanceManager()=default
bool DuplicateSMInstance(FSMInstanceId &OutNewInstanceId) const
Definition SMInstanceManager.h:245
void NotifySMInstanceSelectionChanged(const bool bIsSelected) const
Definition SMInstanceManager.h:240
FText GetSMInstanceDisplayName() const
Definition SMInstanceManager.h:231
bool CanDuplicateSMInstance() const
Definition SMInstanceManager.h:244
bool CanEditSMInstance() const
Definition SMInstanceManager.h:233
void NotifySMInstanceMovementStarted() const
Definition SMInstanceManager.h:237
friend uint32 GetTypeHash(const FSMInstanceManager &InId)
Definition SMInstanceManager.h:219
bool operator!=(const FSMInstanceManager &InRHS) const
Definition SMInstanceManager.h:214
bool CanDeleteSMInstance() const
Definition SMInstanceManager.h:242
void NotifySMInstanceMovementEnded() const
Definition SMInstanceManager.h:239
bool GetSMInstanceTransform(FTransform &OutInstanceTransform, bool bWorldSpace=false) const
Definition SMInstanceManager.h:235
UInstancedStaticMeshComponent * GetISMComponent() const
Definition SMInstanceManager.h:227
const FSMInstanceId & GetInstanceId() const
Definition SMInstanceManager.h:224
bool SetSMInstanceTransform(const FTransform &InstanceTransform, bool bWorldSpace=false, bool bMarkRenderStateDirty=false, bool bTeleport=false) const
Definition SMInstanceManager.h:236
int32 GetISMInstanceIndex() const
Definition SMInstanceManager.h:228
bool CanMoveSMInstance(const ETypedElementWorldType WorldType) const
Definition SMInstanceManager.h:234
ISMInstanceManager * GetInstanceManager() const
Definition SMInstanceManager.h:225
bool operator==(const FSMInstanceManager &InRHS) const
Definition SMInstanceManager.h:208
bool DeleteSMInstance() const
Definition SMInstanceManager.h:243
FSMInstanceManager(const FSMInstanceId &InInstanceId, ISMInstanceManager *InInstanceManager)
Definition SMInstanceManager.h:196
void NotifySMInstanceMovementOngoing() const
Definition SMInstanceManager.h:238
FText GetSMInstanceTooltip() const
Definition SMInstanceManager.h:232
void ForEachSMInstanceInSelectionGroup(TFunctionRef< bool(FSMInstanceId)> Callback) const
Definition SMInstanceManager.h:241