UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UniversalObjectLocatorResolveParams.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
6#include "Async/Future.h"
7#include "Misc/TVariant.h"
10#include "UniversalObjectLocatorResolveParams.generated.h"
11
12class UObject;
13
14UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true"))
16{
17 None,
18
20 Load = 1 << 0,
21
23 Unload = 1 << 1,
24
30 Async = 1 << 2,
31
33 WillWait = 1 << 3,
34
37};
39
41{
42
47{
49 : Context(nullptr)
50 , ParameterBuffer(nullptr)
52 {
53 }
54
61
68
69 template<typename T>
70 const T* FindParameter() const
71 {
72 return FindParameter(T::ParameterType);
73 }
74
75 template<typename T>
76 const T* FindParameter(TParameterTypeHandle<T> ParameterType) const
77 {
78 return ParameterBuffer ? ParameterBuffer->FindParameter(ParameterType) : nullptr;
79 }
80
88
96
104
109 {
111 }
112
120
128
131
134
137};
138
139template<int InlineSize>
159
160
161
162
179
181{
183 : Object(nullptr)
184 {
185 }
186
192
197 UObject* Object = nullptr;
198
201};
202
203
205{
208 {
209 }
210
215
220
222 void operator=(const FResolveResult&) = delete;
223
226
227public:
228
232 bool IsAsync() const
233 {
234 return Value.IsType<TFuture<FResolveResultData>>();
235 }
236
243 {
244 if (TFuture<FResolveResultData>* Future = Value.TryGet<TFuture<FResolveResultData>>())
245 {
246 return MoveTemp(*Future);
247 }
249 }
250
255 bool NeedsWait() const
256 {
257 if (const TFuture<FResolveResultData>* Future = Value.TryGet<TFuture<FResolveResultData>>())
258 {
259 return !Future->IsReady();
260 }
261 return false;
262 }
263
268 {
269 const TFuture<FResolveResultData>* Future = Value.TryGet<TFuture<FResolveResultData>>();
270 if (Future)
271 {
272 if (!Future->IsReady())
273 {
274 return nullptr;
275 }
276
277 FResolveResultData Data = Future->Get();
278 Value.Emplace<FResolveResultData>(Data);
279 }
280
281 return &Value.Get<FResolveResultData>();
282 }
283
288 {
289 const TFuture<FResolveResultData>* Future = Value.TryGet<TFuture<FResolveResultData>>();
290 if (Future)
291 {
292 return Future->Get();
293 }
294 else
295 {
296 return Value.Get<FResolveResultData>();
297 }
298 }
299
305 {
307 if (Future)
308 {
309 if (Future->IsReady())
310 {
311 OnComplete(Future->Get());
312 }
313 else
314 {
315 Future->Then(
317 {
318 OnComplete(InValue.Get());
319 }
320 );
321 }
322 }
323 else
324 {
326 }
327 }
328
329private:
330
331 TVariant<
334 > Value;
335};
336
337} // namespace UE::UniversalObjectLocator
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
OnComplete(MoveTemp(Response))
#define UENUM(...)
Definition ObjectMacros.h:749
ELocatorResolveFlags
Definition UniversalObjectLocatorResolveParams.h:16
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
bool IsReady() const
Definition Future.h:256
ConstResultType Get() const
Definition Future.h:239
Definition Future.h:393
auto Then(Func Continuation)
Definition Future.h:680
Definition FunctionFwd.h:19
Definition TVariant.h:48
Definition Object.h:95
Definition AnimInstanceLocatorFragment.cpp:19
Definition TVariant.h:13
Definition UniversalObjectLocatorResolveParameterBuffer.h:46
const T * FindParameter() const
Definition UniversalObjectLocatorResolveParameterBuffer.h:184
Definition UniversalObjectLocatorResolveParams.h:47
FResolveParams(UObject *InContext, ELocatorResolveFlags InFlags)
Definition UniversalObjectLocatorResolveParams.h:62
const T * FindParameter(TParameterTypeHandle< T > ParameterType) const
Definition UniversalObjectLocatorResolveParams.h:76
FResolveParams(UObject *InContext)
Definition UniversalObjectLocatorResolveParams.h:55
static FResolveParams AsyncUnload(UObject *InContext)
Definition UniversalObjectLocatorResolveParams.h:100
static FResolveParams AsyncFind(UObject *InContext=nullptr)
Definition UniversalObjectLocatorResolveParams.h:84
FResolveParams()
Definition UniversalObjectLocatorResolveParams.h:48
static FResolveParams SyncFind(UObject *InContext=nullptr)
Definition UniversalObjectLocatorResolveParams.h:108
static FResolveParams SyncUnload(UObject *InContext)
Definition UniversalObjectLocatorResolveParams.h:124
UObject * Context
Definition UniversalObjectLocatorResolveParams.h:130
static FResolveParams SyncLoad(UObject *InContext=nullptr)
Definition UniversalObjectLocatorResolveParams.h:116
FResolveParameterBuffer * ParameterBuffer
Definition UniversalObjectLocatorResolveParams.h:133
static FResolveParams AsyncLoad(UObject *InContext=nullptr)
Definition UniversalObjectLocatorResolveParams.h:92
ELocatorResolveFlags Flags
Definition UniversalObjectLocatorResolveParams.h:136
const T * FindParameter() const
Definition UniversalObjectLocatorResolveParams.h:70
Definition UniversalObjectLocatorResolveParams.h:181
FResolveResultData(UObject *InObject, FResolveResultFlags InFlags=FResolveResultFlags())
Definition UniversalObjectLocatorResolveParams.h:187
FResolveResultData()
Definition UniversalObjectLocatorResolveParams.h:182
FResolveResultFlags Flags
Definition UniversalObjectLocatorResolveParams.h:200
UObject * Object
Definition UniversalObjectLocatorResolveParams.h:197
Definition UniversalObjectLocatorResolveParams.h:167
uint8 bWasLoaded
Definition UniversalObjectLocatorResolveParams.h:175
uint8 bWasLoadedIndirectly
Definition UniversalObjectLocatorResolveParams.h:177
FResolveResultFlags()
Definition UniversalObjectLocatorResolveParams.h:168
Definition UniversalObjectLocatorResolveParams.h:205
FResolveResult(FResolveResult &&)=default
FResolveResult(FResolveResultData InValue)
Definition UniversalObjectLocatorResolveParams.h:211
void operator=(const FResolveResult &)=delete
void AsyncGet(TUniqueFunction< void(const FResolveResultData &)> &&OnComplete)
Definition UniversalObjectLocatorResolveParams.h:304
FResolveResult & operator=(FResolveResult &&)=default
FResolveResult(TFuture< FResolveResultData > &&InFuture)
Definition UniversalObjectLocatorResolveParams.h:216
const FResolveResultData * SyncGetNoWait()
Definition UniversalObjectLocatorResolveParams.h:267
bool NeedsWait() const
Definition UniversalObjectLocatorResolveParams.h:255
FResolveResult(const FResolveResult &)=delete
FResolveResultData SyncGet() const
Definition UniversalObjectLocatorResolveParams.h:287
TFuture< FResolveResultData > ReleaseFuture()
Definition UniversalObjectLocatorResolveParams.h:242
bool IsAsync() const
Definition UniversalObjectLocatorResolveParams.h:232
FResolveResult()
Definition UniversalObjectLocatorResolveParams.h:206
Definition UniversalObjectLocatorResolveParameterBuffer.h:167
Definition UniversalObjectLocatorParameterTypeHandle.h:84
Definition UniversalObjectLocatorResolveParams.h:141
TResolveParamsWithBuffer()
Definition UniversalObjectLocatorResolveParams.h:142
TResolveParamsWithBuffer(UObject *InContext, ELocatorResolveFlags InFlags)
Definition UniversalObjectLocatorResolveParams.h:153
TResolveParamsWithBuffer(UObject *InContext)
Definition UniversalObjectLocatorResolveParams.h:147