UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SMInstanceElementId.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/GCObject.h"
8#include "SMInstanceElementId.generated.h"
9
13
15
20{
21 explicit operator bool() const
22 {
23 return ISMComponent != nullptr
25 }
26
27 bool operator==(const FSMInstanceId& InRHS) const
28 {
29 return ISMComponent == InRHS.ISMComponent
30 && InstanceIndex == InRHS.InstanceIndex;
31 }
32
33 bool operator!=(const FSMInstanceId& InRHS) const
34 {
35 return !(*this == InRHS);
36 }
37
38 friend inline uint32 GetTypeHash(const FSMInstanceId& InId)
39 {
40 return HashCombine(GetTypeHash(InId.InstanceIndex), GetTypeHash(InId.ISMComponent));
41 }
42
45};
46
53{
54 explicit operator bool() const
55 {
56 return ISMComponent != nullptr
57 && InstanceId != 0;
58 }
59
61 {
62 return ISMComponent == InRHS.ISMComponent
63 && InstanceId == InRHS.InstanceId;
64 }
65
67 {
68 return !(*this == InRHS);
69 }
70
72 {
73 return HashCombine(GetTypeHash(InId.InstanceId), GetTypeHash(InId.ISMComponent));
74 }
75
78};
79
100
106{
107public:
109
111
116 DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnInstanceRemapped, const FSMInstanceElementId& /*SMInstanceElementId*/, int32 /*PreviousInstanceIndex*/, int32 /*InstanceIndex*/);
118 {
119 return OnInstanceRemappedDelegate;
120 }
121
127 {
128 return OnInstancePreRemovalDelegate;
129 }
130
134 DECLARE_MULTICAST_DELEGATE_TwoParams(FOnInstanceRemoved, const FSMInstanceElementId& /*SMInstanceElementId*/, int32 /*InstanceIndex*/);
136 {
137 return OnInstanceRemovedDelegate;
138 }
139
144
149
154
159
160public:
161 //~ FGCObject interface
162 ENGINE_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
163 virtual FString GetReferencerName() const override
164 {
165 return TEXT("FSMInstanceElementIdMap");
166 }
167
168public:
170
171private:
173
175
176#if WITH_EDITOR
177 ENGINE_API void OnObjectModified(UObject* InObject);
178#endif // WITH_EDITOR
179
180 ENGINE_API void RegisterCallbacks();
181
182 ENGINE_API void UnregisterCallbacks();
183
184 mutable FCriticalSection ISMComponentsCS;
186
187 FOnInstanceRemapped OnInstanceRemappedDelegate;
188
189 FOnInstancePreRemoval OnInstancePreRemovalDelegate;
190 FOnInstanceRemoved OnInstanceRemovedDelegate;
191
192 FDelegateHandle OnInstanceIndexUpdatedHandle;
193#if WITH_EDITOR
195#endif
196};
197
204{
206
207public:
209
210#if WITH_EDITORONLY_DATA
212 {
214 }
215
216 //~ UObject interface
217 virtual void Serialize(FArchive& Ar) override;
218
219private:
221#endif // WITH_EDITORONLY_DATA
222};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
const bool
Definition NetworkReplayStreaming.h:178
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
ENGINE_API const FName NAME_SMInstance
Definition SMInstanceElementId.cpp:15
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition IDelegateInstance.h:14
Definition GCObject.h:128
Definition NameTypes.h:617
Definition UObjectGlobals.h:2492
Definition SMInstanceElementId.h:106
FOnInstanceRemapped & OnInstanceRemapped()
Definition SMInstanceElementId.h:117
ENGINE_API FSMInstanceElementId GetSMInstanceElementIdFromSMInstanceId(const FSMInstanceId &InSMInstanceId, const bool bAllowCreate=true)
Definition SMInstanceElementId.cpp:68
static ENGINE_API FSMInstanceElementIdMap & Get()
Definition SMInstanceElementId.cpp:39
virtual ENGINE_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition SMInstanceElementId.cpp:365
ENGINE_API TArray< FSMInstanceElementId > GetSMInstanceElementIdsForComponent(UInstancedStaticMeshComponent *InComponent) const
Definition SMInstanceElementId.cpp:104
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnInstanceRemapped, const FSMInstanceElementId &, int32, int32)
ENGINE_API ~FSMInstanceElementIdMap()
Definition SMInstanceElementId.cpp:45
ENGINE_API FSMInstanceId GetSMInstanceIdFromSMInstanceElementId(const FSMInstanceElementId &InSMInstanceElementId)
Definition SMInstanceElementId.cpp:50
ENGINE_API void OnComponentReplaced(UInstancedStaticMeshComponent *InOldComponent, UInstancedStaticMeshComponent *InNewComponent)
Definition SMInstanceElementId.cpp:124
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnInstancePreRemoval, const FSMInstanceElementId &, int32)
FOnInstanceRemoved & OnInstanceRemoved()
Definition SMInstanceElementId.h:135
FOnInstancePreRemoval & OnInstancePreRemoval()
Definition SMInstanceElementId.h:126
ENGINE_API void SerializeIdMappings(FSMInstanceElementIdMapEntry *InEntry, FArchive &Ar)
Definition SMInstanceElementId.cpp:155
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnInstanceRemoved, const FSMInstanceElementId &, int32)
virtual FString GetReferencerName() const override
Definition SMInstanceElementId.h:163
Definition ArrayView.h:139
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition InstancedStaticMeshComponent.h:158
Definition Object.h:95
Definition SMInstanceElementId.h:204
Definition SMInstanceElementId.h:84
~FSMInstanceElementIdMapEntry()
Definition SMInstanceElementId.cpp:31
TMap< uint64, int32 > InstanceIdToIndexMap
Definition SMInstanceElementId.h:97
UInstancedStaticMeshComponent * Component
Definition SMInstanceElementId.h:90
FSMInstanceElementIdMap * Owner
Definition SMInstanceElementId.h:88
TMap< int32, uint64 > InstanceIndexToIdMap
Definition SMInstanceElementId.h:96
uint64 NextInstanceId
Definition SMInstanceElementId.h:98
Definition SMInstanceElementId.h:53
UInstancedStaticMeshComponent * ISMComponent
Definition SMInstanceElementId.h:76
bool operator==(const FSMInstanceElementId &InRHS) const
Definition SMInstanceElementId.h:60
uint64 InstanceId
Definition SMInstanceElementId.h:77
bool operator!=(const FSMInstanceElementId &InRHS) const
Definition SMInstanceElementId.h:66
friend uint32 GetTypeHash(const FSMInstanceElementId &InId)
Definition SMInstanceElementId.h:71
Definition SMInstanceElementId.h:20
UInstancedStaticMeshComponent * ISMComponent
Definition SMInstanceElementId.h:43
bool operator!=(const FSMInstanceId &InRHS) const
Definition SMInstanceElementId.h:33
friend uint32 GetTypeHash(const FSMInstanceId &InId)
Definition SMInstanceElementId.h:38
bool operator==(const FSMInstanceId &InRHS) const
Definition SMInstanceElementId.h:27
int32 InstanceIndex
Definition SMInstanceElementId.h:44
Definition ObjectPtr.h:488