UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IUniversalObjectLocatorModule.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
16
18
20{
21
36
38 : public IModuleInterface
39{
40public:
41
42
62 template<typename PayloadStructType
64 // Payloads must be equality-comparable (we don't use the CEqualityComparable concept here because we need to make sure the ICppStructOps are set up correctly)
66 // Payloads must be type-hashable
68 )
69 >
71 {
72 checkf(FragmentTypeParameters.FragmentTypeID != NAME_None, TEXT("'None' is not a valid Fragment Type ID for type %s"), GetGeneratedTypeName<PayloadStructType>());
73 checkf(!FAsciiSet::HasAny(*FragmentTypeParameters.FragmentTypeID.ToString(), ~FUniversalObjectLocatorFragment::ValidFragmentTypeCharacters), TEXT("Fragment Type ID '%s' contains invalid characters"), *FragmentTypeParameters.FragmentTypeID.ToString());
74
77 NewFragmentType.PrimaryEditorType = FragmentTypeParameters.PrimaryEditorType;
79 NewFragmentType.PayloadType = PayloadStructType::StaticStruct();
80
81 // Static bindings
82 NewFragmentType.StaticBindings.Priority = PayloadStructType::ComputePriority;
83
84 // Member function bindings
85 NewFragmentType.InstanceBindings.Resolve = [](const void* Payload, const FResolveParams& Params) -> FResolveResult
86 {
87 return static_cast<const PayloadStructType*>(Payload)->Resolve(Params);
88 };
89 NewFragmentType.InstanceBindings.Initialize = [](void* Payload, const FInitializeParams& InParams) -> FInitializeResult
90 {
91 return static_cast<PayloadStructType*>(Payload)->Initialize(InParams);
92 };
93 NewFragmentType.InstanceBindings.ToString = [](const void* Payload, FStringBuilderBase& OutStringBuilder)
94 {
95 return static_cast<const PayloadStructType*>(Payload)->ToString(OutStringBuilder);
96 };
97 NewFragmentType.InstanceBindings.TryParseString = [](void* Payload, FStringView InString, const FParseStringParams& Params) -> FParseStringResult
98 {
99 return static_cast<PayloadStructType*>(Payload)->TryParseString(InString, Params);
100 };
101#if UE_UNIVERSALOBJECTLOCATOR_DEBUG
102 NewFragmentType.StaticBindings.FragmentDebugInitializer = [](void* Payload)
103 {
105 };
106#endif
107 return TFragmentTypeHandle<PayloadStructType>(RegisterFragmentTypeImpl(NewFragmentType));
108 }
109
110 template<typename ParameterType>
112 {
113 return TParameterTypeHandle<ParameterType>(RegisterParameterTypeImpl(ParameterType::StaticStruct()));
114 }
115
117 {
118 UnregisterParameterTypeImpl(InHandle);
119 }
120
121 template<typename PayloadStructType>
123 {
124 UnregisterFragmentTypeImpl(FragmentType);
125 }
126
127private:
128
129 virtual FFragmentTypeHandle RegisterFragmentTypeImpl(const FFragmentType& FragmentType) = 0;
130 virtual void UnregisterFragmentTypeImpl(FFragmentTypeHandle FragmentType) = 0;
131
132 virtual FParameterTypeHandle RegisterParameterTypeImpl(UScriptStruct* Struct) = 0;
133 virtual void UnregisterParameterTypeImpl(FParameterTypeHandle ParameterType) = 0;
134};
135
136
137} // namespace UE::UniversalObjectLocator
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool TryParseString(FFrameRate &OutFrameRate, const TCHAR *InString)
Definition FrameRate.cpp:343
#define UE_REQUIRES(...)
Definition Requires.h:86
static constexpr bool HasAny(const CharType *Str, FAsciiSet Set)
Definition AsciiSet.h:116
Definition NameTypes.h:617
Definition Text.h:385
Definition ModuleInterface.h:14
Definition IUniversalObjectLocatorModule.h:39
TParameterTypeHandle< ParameterType > RegisterParameterType()
Definition IUniversalObjectLocatorModule.h:111
void UnregisterParameterType(FParameterTypeHandle InHandle)
Definition IUniversalObjectLocatorModule.h:116
void UnregisterFragmentType(TFragmentTypeHandle< PayloadStructType > FragmentType)
Definition IUniversalObjectLocatorModule.h:122
TFragmentTypeHandle< PayloadStructType > RegisterFragmentType(FFragmentTypeParameters &FragmentTypeParameters)
Definition IUniversalObjectLocatorModule.h:70
Definition Class.h:1720
Definition AnimInstanceLocatorFragment.cpp:19
EFragmentTypeFlags
Definition UniversalObjectLocatorFragmentType.h:26
Definition SubObjectLocator.h:14
static constexpr FAsciiSet ValidFragmentTypeCharacters
Definition UniversalObjectLocatorFragment.h:42
Definition StructOpsTypeTraits.h:46
Definition UniversalObjectLocatorFragmentTypeHandle.h:19
Definition IUniversalObjectLocatorModule.h:23
FText DisplayText
Definition IUniversalObjectLocatorModule.h:31
EFragmentTypeFlags Flags
Definition IUniversalObjectLocatorModule.h:34
FFragmentTypeParameters(FName InFragmentTypeID, FText InDisplayText)
Definition IUniversalObjectLocatorModule.h:24
FName FragmentTypeID
Definition IUniversalObjectLocatorModule.h:32
FName PrimaryEditorType
Definition IUniversalObjectLocatorModule.h:33
Definition UniversalObjectLocatorFragmentType.h:70
FName FragmentTypeID
Definition UniversalObjectLocatorFragmentType.h:120
Definition UniversalObjectLocatorInitializeParams.h:16
Definition UniversalObjectLocatorInitializeResult.h:24
Definition UniversalObjectLocatorParameterTypeHandle.h:19
Definition UniversalObjectLocatorStringParams.h:26
Definition UniversalObjectLocatorStringParams.h:43
Definition UniversalObjectLocatorResolveParams.h:47
Definition UniversalObjectLocatorResolveParams.h:205
Definition UniversalObjectLocatorFragmentDebugging.h:35
Definition UniversalObjectLocatorFragmentTypeHandle.h:84
Definition UniversalObjectLocatorParameterTypeHandle.h:84