UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ActorInstanceHandle.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "ActorInstanceHandle.generated.h"
7
8class USceneComponent;
9class AActor;
12class ULevel;
13
15
31USTRUCT(BlueprintType)
33{
35
37
39 ENGINE_API FActorInstanceHandle(const UPrimitiveComponent* RelevantComponent, int32 CollisionInstanceIndex);
40 ENGINE_API FActorInstanceHandle(AActor* InActor, const UPrimitiveComponent* RelevantComponent, int32 CollisionInstanceIndex);
43
48 static ENGINE_API FActorInstanceHandle MakeDehydratedActorHandle(UObject& Manager, int32 InInstanceIndex);
49
54 static ENGINE_API FActorInstanceHandle MakeActorHandleToResolve(const TWeakObjectPtr<UPrimitiveComponent>& WeakComponent, int32 CollisionInstanceIndex);
55
56 ENGINE_API bool IsValid() const;
57
58 UE_DEPRECATED(5.8, "Detecting the ResolutionStatus of the pointer will be removed in a future release.")
59 ENGINE_API bool IsUnresolvedDehydratedActor() const;
60
61 ENGINE_API bool DoesRepresentClass(const UClass* OtherClass) const;
62
64 bool DoesRepresent() const;
65
66 ENGINE_API UClass* GetRepresentedClass() const;
67 ENGINE_API ULevel* GetLevel() const;
68 ENGINE_API FVector GetLocation() const;
69 ENGINE_API FRotator GetRotation() const;
70 ENGINE_API FTransform GetTransform() const;
71
73 ENGINE_API FString GetName() const;
74
76 ENGINE_API AActor* GetManagingActor() const;
77
79 ENGINE_API USceneComponent* GetRootComponent() const;
80
82 ENGINE_API AActor* FetchActor() const;
83
85 T* FetchActor() const;
86
87 ENGINE_API AActor* GetCachedActor() const;
88 ENGINE_API void SetCachedActor(AActor* InActor) const;
89
90 /* Returns the index used internally by the manager */
91 inline int32 GetInstanceIndex() const { return InstanceIndex; }
92
95 ENGINE_API FActorInstanceHandle& operator=(AActor* OtherActor);
96
97 ENGINE_API bool operator==(const FActorInstanceHandle& Other) const;
99
100 ENGINE_API bool operator==(const AActor* OtherActor) const;
101 ENGINE_API bool operator!=(const AActor* OtherActor) const;
102
103 explicit operator bool() const { return IsValid(); }
104
105 friend ENGINE_API uint32 GetTypeHash(const FActorInstanceHandle& Handle);
106
108
109 FActorInstanceManagerInterface GetManagerInterface() const { return ManagerInterface; }
110
111 template<typename T>
112 T* GetManager() const
113 {
114 return Cast<T>(ManagerInterface.GetObject());
115 }
116
117private:
119
124 UObject* GetActorAsUObject();
125 const UObject* GetActorAsUObject() const;
126
128 bool IsActorValid() const;
129
130 void ResolveHandle() const;
131
137 UPROPERTY()
138 mutable TWeakObjectPtr<UObject> ReferenceObject;
139
141 FActorInstanceManagerInterface ManagerInterface;
142
144 int32 InstanceIndex = INDEX_NONE;
145
151 enum class EResolutionStatus : uint8
152 {
153 Invalid,
154 Resolved, /* ManagerInterface and InstanceIndex are set or an Actor pointer is stored in ReferenceObject */
155 NeedsResolving /* Component pointer is stored in ReferenceObject and InstanceIndex might hold a CollisionInstanceIndex */
156 };
157
159 EResolutionStatus ResolutionStatus = EResolutionStatus::Invalid;
160};
161
162template<typename T>
164{
165 if (const UClass* RepresentedClass = GetRepresentedClass())
166 {
167 if constexpr (TIsIInterface<T>::Value)
168 {
169 return RepresentedClass->ImplementsInterface(T::UClassType::StaticClass());
170 }
171 else
172 {
173 return RepresentedClass->IsChildOf(T::StaticClass());
174 }
175 }
176 return false;
177}
178
179template <typename T>
181{
182 if (DoesRepresent<T>())
183 {
185 }
186 return nullptr;
187}
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Archive.h:1208
Definition NameTypes.h:617
Definition ActorInstanceManagerInterface.h:23
Definition Class.h:3793
Definition Level.h:423
UE_FORCEINLINE_HINT FString GetName() const
Definition UObjectBaseUtility.h:439
FORCEINLINE FName GetFName() const
Definition UObjectBase.h:233
Definition Object.h:95
@ NullAllowed
Definition Object.h:62
Definition ActorInstanceHandle.cpp:32
Definition ActorInstanceHandle.h:33
ENGINE_API AActor * FetchActor() const
Definition ActorInstanceHandle.cpp:323
T * GetManager() const
Definition ActorInstanceHandle.h:112
FActorInstanceHandle & operator=(FActorInstanceHandle &&Other)=default
ENGINE_API UClass * GetRepresentedClass() const
Definition ActorInstanceHandle.cpp:211
bool DoesRepresent() const
Definition ActorInstanceHandle.h:163
FActorInstanceHandle & operator=(const FActorInstanceHandle &Other)=default
FActorInstanceManagerInterface GetManagerInterface() const
Definition ActorInstanceHandle.h:109
Definition Casts.h:52
Definition WeakObjectPtrTemplates.h:25