![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
Concepts | |
| concept | CIntrusiveMutexParams |
| concept | CArithmetic |
| concept | CCharType |
| concept | CCompatibleCharType |
| concept | CCompatibleStringViewable |
| concept | CContiguousRange |
| concept | CConvertibleTo |
| concept | CDecaysTo |
| concept | CDerivedFrom |
| concept | CFloatingPoint |
| concept | CIntegral |
| concept | CNotCVRefTo |
| concept | CPointer |
| concept | CSameAs |
| concept | CStringViewable |
| concept | same_as |
| concept | convertible_to |
| concept | derived_from |
Variables | |
| TUniquePtr< IPlatformIoDispatcher > | GPlatformIoDispatcher |
| int | GIsUsingZenPakFileStreaming = -1 |
| constexpr struct UE::FAcquireLock | AcquireLock |
| constexpr struct UE::FDeferLock | DeferLock |
| constexpr uint8 | CookedIndexByteIdx = 8 |
| const FName | NAME_Key (ANSITEXTVIEW("Key")) |
| const FName | NAME_Value (ANSITEXTVIEW("Value")) |
| FPropertyTypeNameTable | GPropertyTypeNameTable |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintObjectsInOuter (TEXT("Obj.DumpObjectsInOuter"), TEXT("Lists all objects under a specified parent (the parent object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectsInOuter(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: no object path specified (example usage: Obj.DumpObjectsInOuter /MyLevel/MyLevel.MyLevel:PersistentLevel)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintObjectsWithName (TEXT("Obj.DumpObjectsWithName"), TEXT("Lists all objects with a given name."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectName;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectName, Flags);PrintObjectsWithName(*ObjectName, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectsWithName: no object name specified (example usage: Obj.DumpObjectsWithName PersistentLevel)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintObjectProperties (TEXT("Obj.DumpProperties"), TEXT("Lists the properties of an object (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor). Pass InitState=true to iclude the properties' initialization state."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectProperties(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectProperties: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectProperties: no object path specified (example usage: Obj.DumpProperties /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintObjectArchetype (TEXT("Obj.DumpArchetype"), TEXT("Outputs an object's archetype (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectArchetype(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectArchetype: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintObjectIDO (TEXT("Obj.DumpIDO"), TEXT("Outputs an object's IDO (Instance Data Object) (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectIDO(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectIDO: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectIDO: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintCDO (TEXT("Obj.DumpCDO"), TEXT("Outputs a class' Class Default Object."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ClassPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ClassPath, Flags);UClass *Class=FindFirstObjectSafe< UClass >(*ClassPath);if(Class) { PrintClassDefaultObject(Class, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: failed to find any classes for path: '%s'"), *ClassPath);} } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: no class name or path specified (example usage: Obj.DumpCDO MyActor)"));LogHelp(OutputDevice);} })) |
| FAutoConsoleCommandWithArgsAndOutputDevice | CVarCommandPrintStructHierarchy (TEXT("Obj.DumpStructHierarchy"), TEXT("Outputs a struct (or class) type hierarchy."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString StructPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, StructPath, Flags);UStruct *Struct=FindFirstObjectSafe< UStruct >(*StructPath);if(Struct) { PrintStructHierarchy(Struct, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintStructHierarchy: failed to find any types for path: '%s'"), *StructPath);} } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: no struct name or path specified (example usage: Obj.DumpStructHierarchy MyActor)"));LogHelp(OutputDevice);} })) |
| TSharedPtr< IHttpIoDispatcher > | GHttpIoDispatcher |
Implements a rectangular 2D Box.
Structure for a combined axis aligned bounding box and bounding sphere with the same origin. (28 bytes).
Structure for capsules.
A capsule consists of two sphere connected by a cylinder.
Dual quaternion class
4x4 matrix of floating point values.
Note that, like with FTransform, Matrix-Matrix multiplication is applied such that C = A * B will yield a transform C that logically first applies A then B, so (A*B).TransformPosition(Pt) == B.TransformPosition(A.TransformPosition(Pt))
Matrix elements are accessed with M[RowIndex][ColumnIndex].
Structure for three dimensional planes.
Stores the coeffecients as Xx+Yy+Zz=W. Note that this is different from many other Plane classes that use Xx+Yy+Zz+W=0.
3D Ray represented by Origin and (normalized) Direction
Implements a basic sphere.
A vector in 2-D space composed of components (X, Y) with floating point precision.
Utility functions and console commands that print UObject state information. Can be used in a debugger as well.
Utility functions for constructing various PointSetAdapter and MeshAdapter instances from dynamic meshes
Utility functions for manipulating DynamicMesh attribute sets
This is an internal singleton used to support UDynamicMesh::ExportCustomProperties() and UDynamicMesh::ImportCustomProperties() below.
Landscape GPU culling implementation Each landscape section is split to a smaller tiles (4x4 quads) Tiles are frustum culled in compute Culling is done for each view, including shadow views Only active for LOD0 atm
Implementation of custom blend logic should be as follows (using doubles as an example). Specializing TBlendableTokenTraits for a particular input data type causes WorkingDataType to be used during the blending operation. Where WorkingDataType belongs to a namespace, ADL will be employed to discover any relevant overloads for BlendValue that match the necessary types. This allows blending of any arbitrary type into the WorkingDataType.
namespace MovieScene { Define a custom namespaced type that will be used to calculate blends between doubles struct FBlendableDouble { FBlendableDouble() : AbsoluteTotal(0.0), AdditiveTotal(0.0) {}
double AbsoluteTotal; double AdditiveTotal;
TOptional<float> TotalWeight;
double Resolve(TMovieSceneInitialValueStore<int32>& InitialValueStore) { if (TotalWeight.IsSet()) { if (TotalWeight.GetValue() == 0.f) { AbsoluteTotal = InitialValueStore.GetInitialValue(); } else { AbsoluteTotal /= TotalWeight.GetValue(); } }
return AbsoluteTotal + AdditiveTotal; } };
void BlendValue(FBlendableDouble& OutBlend, double InValue, float Weight, EMovieSceneBlendType BlendType, TMovieSceneInitialValueStore<double>& InitialValueStore) { if (BlendType == EMovieSceneBlendType::Absolute || BlendType == EMovieSceneBlendType::Relative) { if (BlendType == EMovieSceneBlendType::Relative) { OutBlend.AbsoluteTotal += (InitialValueStore.GetInitialValue() + InValue) * Weight; } else { OutBlend.AbsoluteTotal += InValue * Weight; }
OutBlend.TotalWeight = OutBlend.TotalWeight.Get(0.f) + Weight; } else if (BlendType == EMovieSceneBlendType::Additive) { OutBlend.AdditiveTotal += InValue * Weight; } } } template<> struct TBlendableTokenTraits<double> { typedef UE::MovieScene::FBlendableDouble WorkingDataType; };
~ Generic multi-channel blending support for sequencer. Works in conjunction with TMovieSceneBlendingActuator<Type> where Type has been set up with the correct traits to allow multi-channel blending: Example:
// My struct contains 3 floats, so is represented as a TMultiChannelValue<float, 3> struct FMyStruct { float X, Y, Z; ... };
namespace MovieScene { // Marshall my struct into a multi-channel value inline void MultiChannelFromData(FMyStruct In, TMultiChannelValue<float, 3>& Out) { Out = { In.X, In.Y, In.Z }; } // Marshall my struct out of a static float array inline void ResolveChannelsToData(float (&Channels)[3], FMyStruct& Out) { Out = FMyStruct(Channels[0], Channels[1], Channels[2]); } }
// Access a unique runtime type identifier for FMyStruct. Implemented in cpp to ensure there is only ever 1. This is required to support actuators operating on FMyStructs. template<> MYMODULE_API FMovieSceneAnimTypeID GetBlendingDataType<FMyStruct>();
// Inform the blending code to use a maksed blendable of 3 floats for my struct template<> struct TBlendableTokenTraits<FMyStruct> { typedef UE::MovieScene::TMaskedBlendable<float, 3> WorkingDataType; };
// To inject a blendable token into the accumulator for an FMyStruct: UE::MovieScene::TMultiChannelValue<float, 3> AnimatedData;
// Set the X and Z channels AnimatedData.Set(0, 100.f); AnimatedData.Set(2, 250.f);
// Ensure the accumulator knows how to apply an FMyStruct (usually this will be on a property, and happen through EnsureActuator<>) FMovieSceneBlendingActuatorID ActuatorTypeID = FMyActuatorType::GetActuatorTypeID(); if (!ExecutionTokens.GetAccumulator().FindActuator<FMyStruct>(ActuatorTypeID)) { ExecutionTokens.GetAccumulator().DefineActuator(ActuatorTypeID, MakeShared<FMyActuatorType>()); }
// Add the blendable to the accumulator float Weight = EvaluateEasing(Context.GetTime()); // Constructing a TBlendableToken from any type other than TMultiChannelValue<float, 3> requires a supporting BlendValue function ExecutionTokens.BlendToken(ActuatorTypeID, TBlendableToken<FMyStruct>(AnimatedData, EMovieSceneBlendType::Absolute, Weight));
Enums related to the PacketHandler
Code for reading .shk files and using that information to map shader hashes back to human-readable identifies.
| using UE::FDerivedDataIoComplete = typedef TUniqueFunction<void ()> |
| using UE::FEventCount = typedef TEventCount<uint32> |
| using UE::FHash128 = typedef THash<128> |
| using UE::FHash160 = typedef THash<160> |
| using UE::FHash256 = typedef THash<256> |
| using UE::FHash32 = typedef THash<32> |
| using UE::FHash64 = typedef THash<64> |
| using UE::FHash96 = typedef THash<96> |
| using UE::FIoEncodedBlockRequestAllocator = typedef TSingleThreadedSlabAllocator<FIoEncodedBlockRequest, 1024> |
| using UE::FIoFileBlockRequestAllocator = typedef TSingleThreadedSlabAllocator<FIoFileBlockRequest, 1024> |
HTTP completion callback.
| using UE::FIoHttpRequestHandle = typedef UPTRINT |
Internal request handle type.
| using UE::FIoPlatformReadRequestAllocator = typedef TSingleThreadedSlabAllocator<FIoPlatformReadRequest, 1024> |
| using UE::FRWSpinLock = typedef TRWSpinLock<uint32> |
| using UE::FSharedString = typedef TSharedString<TCHAR> |
| using UE::FTempArray = typedef TArray<T, TInlineAllocator<Size> > |
| using UE::TConsumeAllMpmcQueue = typedef TDepletableMpmcQueue<T, AllocatorType> |
| using UE::TIntrusiveMutex = typedef TExternalMutex<Core::Private::FExternalMutexParams> |
| using UE::TIntrusiveMutexStateType_T = typedef std::decay_t<decltype(ParamsType::IsLockedFlag)> |
|
strong |
|
strong |
Flags that modify how this derived data is saved and how it may be loaded.
|
strong |
|
strong |
|
strong |
|
strong |
Flags describing a HTTP response.
| Enumerator | |
|---|---|
| None | No additional flags. |
| Cached | The response was retrieved from the cache. |
|
strong |
The version number for the FPackageTrailer format
| Enumerator | |
|---|---|
| INITIAL | |
| ACCESS_PER_PAYLOAD | |
| PAYLOAD_FLAGS | |
| AUTOMATIC_VERSION_PLUS_ONE | |
| AUTOMATIC_VERSION | |
|
strong |
Lists the various methods of payload access that the trailer supports
|
strong |
|
strong |
|
strong |
Used to show the status of a payload
|
strong |
Trailer Format The FPackageTrailer is a container that will commonly be appended to the end of a package file. The main purpose of the trailer is to store the bulkdata payloads contained by the package until they are virtualized or moved to an additional storage location.
By storing the payloads in a data format adjacent to the rest of the package we can perform the virtualization process without needing to re-save the package itself which in turn should allow for external tools to be able to perform the virtualization process themselves rather than needing to force it through engine code.
The package trailer is intended to an easy format for external code/script to be able to manipulate. To make things clearer we do not serialize containers directly but write out each data structure one at a time so that it should be easy to see how to manipulate the file.
The file is split into three parts:
[Header] The header contains the useful info about the trailer and the payloads in general. @See UE::FLookupTableEntry for details about the look up table's data.
[Payload Data] If the trailer is in the workspace domain package then we will store all non-virtualized payloads here. If the trailer is in the editor domain then there will be no payload data section and the header will be referencing the trailer in the workspace domain instead.
[Footer] The footer allows for us to load the trailer in reverse and replicates the end of package file tag (PACKAGE_FILE_TAG), it should only be used for finding the start of the trailer or validation.
CurrentVersion UE::EPackageTrailerVersion::INITIAL
| [Header] | | Tag | uint64 | Should match FHeader::HeaderTag, used to identify that the data being read is an FPackageTrailer | | Version | uint32 | Version number of the format
|
strong |
Flags for specifying optional behaviors.
| void UE::AppendHash | ( | FBlake3 & | Builder, |
| const FPropertyPathNameTree & | Tree | ||
| ) |
| void UE::AppendHash | ( | FBlake3 & | Builder, |
| const FPropertyTypeName & | TypeName | ||
| ) |
|
inline |
| FPropertyTypeName UE::ApplyRedirectsToPropertyType | ( | FPropertyTypeName | OldTypeName, |
| const FProperty * | Property = nullptr |
||
| ) |
Applies core redirects to type names and paths within the property type.
Allows partial matches only when a property is given and matches the layout of the type name. Example: StructProperty(OldName) will not have an OldName redirect applied if Property is an FIntProperty.
| OldTypeName | The type name to apply core redirects to. |
| Property | Optional. The property that the type name might correspond to. |
|
inline |
Wrapper to support calling SerializeForLog with ADL from within an overload of SerializeForLog.
|
inline |
| COREUOBJECT_API FIoChunkId UE::CreatePackageResourceChunkId | ( | const FName & | PackageName, |
| EPackageSegment | Segment, | ||
| const FBulkDataCookedIndex & | CookedIndex, | ||
| bool | bExternalResource | ||
| ) |
| UE::ENUM_CLASS_FLAGS | ( | EDerivedDataFlags | ) |
| UE::ENUM_CLASS_FLAGS | ( | EIoFilePropertyFlags | ) |
| UE::ENUM_CLASS_FLAGS | ( | EIoHttpFlags | ) |
| UE::ENUM_CLASS_FLAGS | ( | EIoHttpResponseFlags | ) |
| UE::ENUM_CLASS_FLAGS | ( | EPayloadFlags | ) |
| UE::ENUM_CLASS_FLAGS | ( | EPrintObjectFlag | ) |
| T * UE::FindObjectByTypePath | ( | FPropertyTypeName | TypePath | ) |
| UObject * UE::FindObjectByTypePath | ( | UClass * | Class, |
| FPropertyTypeName | TypePath | ||
| ) |
| COREUOBJECT_API bool UE::FindPayloadsInPackageFile | ( | const FPackagePath & | PackagePath, |
| EPayloadStorageType | Filter, | ||
| TArray< FIoHash > & | OutPayloadIds | ||
| ) |
Used to find the identifiers of the payload in a given package. Note that this will return the payloads included in the package on disk and will not take into account any edits to the package if they are in memory and unsaved.
| PackagePath | The package to look in. |
| Filter | What sort of payloads should be returned. |
| OutPayloadIds | This array will be filled with the FPayloadId values found in the package that passed the filter. Note that existing content in the array will be preserved. It is up to the caller to empty it. |
| UE_API FProperty * UE::FindPropertyByNameAndTypeName | ( | const UStruct * | Struct, |
| FName | Name, | ||
| FPropertyTypeName | TypeName | ||
| ) |
Find a property in Struct that matches both the name and the type.
Type matching uses FProperty::CanSerializeFromTypeName.
| COREUOBJECT_API EInternalObjectFlags UE::GetAsyncLoadingInternalFlagsExclusion | ( | ) |
| int64 UE::GetMaxEnumValue | ( | const NamesCollection & | InNamesAndValues, |
| EEnumFlags | InFlags | ||
| ) |
If multiple copies of the process are running and communicating together, the director process has MultiprocessId 0 and the worker processes have MultiprocessId > 0. When only a single process is running, GetMultiprocessId returns 0. Based on commandline. Primary example is cookworkers in multiprocess cook. Systems that need to write a separate file per running process should use this id as part of their file descriptor.
| uint32 UE::GetTypeHash | ( | const FPropertyPathName & | Path | ) |
| uint32 UE::GetTypeHash | ( | const FPropertyTypeName & | TypeName | ) |
|
inline |
| UE_CONSTEVAL HashType UE::HashStringFNV1a | ( | const CharType(&) | StringLiteral[Len] | ) |
|
constexpr |
Implements a constexpr usable version of FNV1a for strings.
Note: This implementation is 'stable' such that the same string of different character widths will hash to the same value (eg. HashStringFNV1a("Hello") == HashStringFNV1a(L"Hello")). This behavior is appropriate here as we're operating on strings specifically rather than raw buffers and we want consistent hashes between different platforms.
| UE_CONSTEVAL uint32 UE::HashStringFNV1a32 | ( | const CharType(&) | StringLiteral[Len] | ) |
|
constexpr |
| UE_CONSTEVAL uint64 UE::HashStringFNV1a64 | ( | const CharType(&) | StringLiteral[Len] | ) |
|
constexpr |
| bool UE::IsIoErrorAnyOf | ( | EIoErrorCode | ErrorCode, |
| Args... | Expected | ||
| ) |
| COREUOBJECT_API bool UE::IsSavingPackage | ( | UObject * | InOuter = nullptr | ) |
Return if the passed in package is currently saving, or if any packages are saving if no parameter is passed.
| InOuter | The object which we want to check if its package is saving |
| UE::LLM_DEFINE_TAG | ( | FPropertyTypeName | ) |
| TUniquePtr< IPlatformIoDispatcher > UE::MakeGenericPlatformIoDispatcher | ( | FPlatformIoDispatcherCreateParams && | Params | ) |
| COREUOBJECT_API TSharedRef< IIoDispatcherBackend > UE::MakePackageResourceIoDispatcherBackend | ( | IPackageResourceManager & | Mgr | ) |
| bool UE::operator< | ( | const FPropertyTypeName & | Lhs, |
| const FPropertyTypeName & | Rhs | ||
| ) |
| FArchive & UE::operator<< | ( | FArchive & | Ar, |
| FPackageTrailer::FFooter & | Footer | ||
| ) |
Serialization operator
| FArchive & UE::operator<< | ( | FArchive & | Ar, |
| FPackageTrailer::FHeader & | Header | ||
| ) |
Serialization operator
| FArchive & UE::operator<< | ( | FArchive & | Ar, |
| FPropertyTypeName & | TypeName | ||
| ) |
|
inline |
| FStringBuilderBase & UE::operator<< | ( | FStringBuilderBase & | Builder, |
| const FDerivedData & | Data | ||
| ) |
Appends the name and description of this reference to the builder.
| FStringBuilderBase & UE::operator<< | ( | FStringBuilderBase & | Builder, |
| const FPropertyTypeName & | TypeName | ||
| ) |
| void UE::operator<< | ( | FStructuredArchiveSlot | Slot, |
| FPropertyTypeName & | TypeName | ||
| ) |
|
inline |
|
inline |
Allow EPayloadAccessMode to work with string builder
| bool UE::operator== | ( | const FPropertyTypeName & | Lhs, |
| const FPropertyTypeName & | Rhs | ||
| ) |
|
constexpr |
| UE_INTERNAL void UE::PrintClassDefaultObject | ( | const UClass * | Class, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Outputs a class' Class Default Object.
| Class | The class to use. |
| Flags | For specifying optional behaviors. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintObjectArchetype | ( | UObject * | Object, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Outputs an object's archetype.
| Object | The object to use. |
| Flags | For specifying optional behaviors. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintObjectIDO | ( | UObject * | Object, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
| UE_INTERNAL void UE::PrintObjectProperties | ( | UObject * | Object, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Lists the property values of an object.
| Object | The object to use. |
| Flags | For specifying optional behaviors. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintObjectsInOuter | ( | UObject * | Object, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Lists all objects under a specified parent.
| Object | The outer object to use. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintObjectsWithName | ( | const TCHAR * | ObjectName, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Lists all objects with a given name.
| ObjectName | The name to search for. |
| Flags | For specifying optional behaviors. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintStructHierarchy | ( | const UStruct * | Struct, |
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
Outputs a struct's type hierarchy.
| Struct | The struct to use. |
| Flags | For specifying optional behaviors. |
| OutputDevice | The output device to print to (can be NULL). |
| UE_INTERNAL void UE::PrintStructProperties | ( | UStruct * | Struct, |
| void * | StructData, | ||
| EPrintObjectFlag | Flags = EPrintObjectFlag::None, |
||
| FOutputDevice * | OutputDevice = nullptr |
||
| ) |
| COREUOBJECT_API void UE::SendClearOverriddenPropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyChangedEvent & | PropertyEvent, | ||
| const FEditPropertyChain & | PropertyChain | ||
| ) |
| COREUOBJECT_API void UE::SendClearOverriddenPropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyVisitorPath & | PropertyPath | ||
| ) |
Helper method that calls the pre and post change notification responsible for clearing a property override. This is the preferred way to clear property overrides because it will notify listeners
| Object | owning the property to clear |
| PropertyPath | to the property to clear from the root of the specified object |
| COREUOBJECT_API void UE::SendClearOverridesEvent | ( | TNotNull< UObject * > | Object | ) |
Helper method that calls the pre and post change notification responsible for clearing the overrides of an object. This is the preferred way to clear overrides because it will notify listeners
| Object | to clear overrides on |
| COREUOBJECT_API void UE::SendOverrideAllObjectPropertiesEvent | ( | TNotNull< UObject * > | Object | ) |
Helper method that calls the pre and post change notification responsible for overriding an object. This is the preferred way to override because it will notify listeners
| Object | to override all it's properties |
| COREUOBJECT_API void UE::SendOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyChangedEvent & | PropertyEvent, | ||
| const FEditPropertyChain & | PropertyChain | ||
| ) |
| COREUOBJECT_API void UE::SendOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyVisitorPath & | PropertyPath, | ||
| EPropertyChangeType::Type | ChangeType = EPropertyChangeType::Unspecified |
||
| ) |
Helper method that calls the pre and post change notification responsible for overriding an object property. This is the preferred way to override properties because it will notify listeners Note: If you're also changing property values (especially if it's in a container) use SendPreOverridePropertyEvent and SendPostOverridePropertyEvent instead!
| Object | owning the property |
| PropertyPath | leading to the property that is about to be overridden |
| ChangeType | of the current operation |
| COREUOBJECT_API void UE::SendPostOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyChangedEvent & | PropertyEvent, | ||
| const FEditPropertyChain & | PropertyChain | ||
| ) |
| COREUOBJECT_API void UE::SendPostOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyVisitorPath & | PropertyPath, | ||
| EPropertyChangeType::Type | ChangeType = EPropertyChangeType::Unspecified |
||
| ) |
Helper method that calls the post-change notification responsible for overriding an object property. This is the preferred way to override properties because it will notify listeners
| Object | owning the property |
| PropertyPath | leading to the property that was overridden |
| ChangeType | of the current operation |
| COREUOBJECT_API void UE::SendPreOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FEditPropertyChain & | PropertyChain | ||
| ) |
| COREUOBJECT_API void UE::SendPreOverridePropertyEvent | ( | TNotNull< UObject * > | Object, |
| const FPropertyVisitorPath & | PropertyPath | ||
| ) |
Helper method that calls the pre-change notification responsible for overriding an object property. This is the preferred way to override properties because it will notify listeners
| Object | owning the property |
| PropertyPath | leading to the property about to be overridden |
|
inline |
Serializes the value to be used in a log message.
Overload this when the log behavior needs to differ from general serialization to compact binary.
There are three ways to perform custom formatting for values that are serialized as an object:
Arrays and objects without custom formatting are converted to JSON.
| UE::TRACE_DECLARE_INT_COUNTER | ( | AvailableChunkDecoderWorkerCount | , |
| TEXT("IoDispatcher/AvailableChunkDecoderWorkerCount") | |||
| ) |
| UE::TRACE_DECLARE_INT_COUNTER | ( | ChunkDecoderQueueCount | , |
| TEXT("IoDispatcher/ChunkDecoderQueueCount") | |||
| ) |
| COREUOBJECT_API bool UE::TryGetPackageNameFromChunkId | ( | const FIoChunkId & | ChunkId, |
| FName & | OutPackageName, | ||
| EPackageSegment & | OutSegment, | ||
| bool & | bOutExternal | ||
| ) |
| bool UE::TryGetPackagePathFromChunkId | ( | const FIoChunkId & | ChunkId, |
| FPackagePath & | OutPath, | ||
| EPackageSegment & | OutSegment, | ||
| bool & | bExternal | ||
| ) |
| bool UE::TryGetPackagePathFromChunkId | ( | const FIoChunkId & | ChunkId, |
| FPackagePath & | OutPath, | ||
| EPackageSegment & | OutSegment, | ||
| bool & | bExternal, | ||
| FBulkDataCookedIndex & | OutCookedIndex | ||
| ) |
| UE_API FPropertyValueInContainer UE::TryResolvePropertyPath | ( | const FPropertyPathName & | Path, |
| UObject * | Object | ||
| ) |
Try to resolve the property path to a property value within the object.
| Path | The non-empty property path to resolve. |
| Object | The object representing the root of the property path to resolve. |
| UE_API FPropertyValueInContainer UE::TryResolvePropertyPathForChangeEvent | ( | const FPropertyPathName & | Path, |
| UObject * | Object, | ||
| uint32 | ChangeType, | ||
| TSharedPtr< FPropertyChangedChainEvent > & | OutEvent, | ||
| FEditPropertyChain & | OutChain | ||
| ) |
Try to resolve the property path to a property value within the object and construct an FPropertyChangeChainEvent that can be used to notify changes to the resolved data
| Path | The non-empty property path to resolve. |
| Object | The object representing the root of the property path to resolve. |
| ChangeType | The change type to assign to the FPropertyChangeChainEvent |
| OutEvent | The resulting change event |
| OutChain | The property chain associated with the event |
|
final |
WARNING: this queue can cause priority inversion or a livelock due to spinlocking in Deplete() method, though we haven't seen this happened in practice. Prefer TConsumeAllMpmcQueue which is equally fast in LIFO mode, and only slightly slower in FIFO mode.
Multi-producer/multi-consumer unbounded concurrent queue that is atomically consumed and is reset to its default empty state. A typical use case is when the consumer doesn't stop until the queue is depleted. Is faster than traditional MPSC and MPMC queues, especially for consumer. Consumes elements in FIFO order.
Takes all items from the queue atomically and then consumes them.
| Consumer | a functor with signature AnyReturnType (T Value) |
| constexpr struct UE::FAcquireLock UE::AcquireLock |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintCDO(TEXT("Obj.DumpCDO"), TEXT("Outputs a class' Class Default Object."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ClassPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ClassPath, Flags); UClass *Class=FindFirstObjectSafe< UClass >(*ClassPath); if(Class) { PrintClassDefaultObject(Class, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: failed to find any classes for path: '%s'"), *ClassPath); } } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: no class name or path specified (example usage: Obj.DumpCDO MyActor)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpCDO") | , |
| TEXT("Outputs a class' Class Default Object.") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ClassPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ClassPath, Flags); UClass *Class=FindFirstObjectSafe< UClass >(*ClassPath); if(Class) { PrintClassDefaultObject(Class, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: failed to find any classes for path: '%s'"), *ClassPath); } } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: no class name or path specified (example usage: Obj.DumpCDO MyActor)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectArchetype(TEXT("Obj.DumpArchetype"), TEXT("Outputs an object's archetype (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectArchetype(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpArchetype") | , |
| TEXT("Outputs an object's archetype (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor).") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectArchetype(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectIDO(TEXT("Obj.DumpIDO"), TEXT("Outputs an object's IDO (Instance Data Object) (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectIDO(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectIDO: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectIDO: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpIDO") | , |
| TEXT("Outputs an object's IDO (Instance Data Object) (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor).") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectIDO(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectIDO: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectIDO: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectProperties(TEXT("Obj.DumpProperties"), TEXT("Lists the properties of an object (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor). Pass InitState=true to iclude the properties' initialization state."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectProperties(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectProperties: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectProperties: no object path specified (example usage: Obj.DumpProperties /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpProperties") | , |
| TEXT("Lists the properties of an object (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor). Pass InitState=true to iclude the properties' initialization state.") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectProperties(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectProperties: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectProperties: no object path specified (example usage: Obj.DumpProperties /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectsInOuter(TEXT("Obj.DumpObjectsInOuter"), TEXT("Lists all objects under a specified parent (the parent object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectsInOuter(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: no object path specified (example usage: Obj.DumpObjectsInOuter /MyLevel/MyLevel.MyLevel:PersistentLevel)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpObjectsInOuter") | , |
| TEXT("Lists all objects under a specified parent (the parent object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel).") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectPath, Flags); UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath); if(Object) { PrintObjectsInOuter(Object, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: failed to find any objects for path: '%s'"), *ObjectPath); } } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: no object path specified (example usage: Obj.DumpObjectsInOuter /MyLevel/MyLevel.MyLevel:PersistentLevel)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectsWithName(TEXT("Obj.DumpObjectsWithName"), TEXT("Lists all objects with a given name."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectName; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectName, Flags); PrintObjectsWithName(*ObjectName, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectsWithName: no object name specified (example usage: Obj.DumpObjectsWithName PersistentLevel)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpObjectsWithName") | , |
| TEXT("Lists all objects with a given name.") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectName; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, ObjectName, Flags); PrintObjectsWithName(*ObjectName, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintObjectsWithName: no object name specified (example usage: Obj.DumpObjectsWithName PersistentLevel)")); LogHelp(OutputDevice); } }) | |||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintStructHierarchy(TEXT("Obj.DumpStructHierarchy"), TEXT("Outputs a struct (or class) type hierarchy."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString StructPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, StructPath, Flags); UStruct *Struct=FindFirstObjectSafe< UStruct >(*StructPath); if(Struct) { PrintStructHierarchy(Struct, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: failed to find any types for path: '%s'"), *StructPath); } } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: no struct name or path specified (example usage: Obj.DumpStructHierarchy MyActor)")); LogHelp(OutputDevice); } })) | ( | TEXT("Obj.DumpStructHierarchy") | , |
| TEXT("Outputs a struct (or class) type hierarchy.") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString StructPath; EPrintObjectFlag Flags; ParseObjectIdAndFlags(Args, StructPath, Flags); UStruct *Struct=FindFirstObjectSafe< UStruct >(*StructPath); if(Struct) { PrintStructHierarchy(Struct, Flags, &OutputDevice); } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: failed to find any types for path: '%s'"), *StructPath); } } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: no struct name or path specified (example usage: Obj.DumpStructHierarchy MyActor)")); LogHelp(OutputDevice); } }) | |||
| ) |
| constexpr struct UE::FDeferLock UE::DeferLock |
| TSharedPtr<IHttpIoDispatcher> UE::GHttpIoDispatcher |
| int UE::GIsUsingZenPakFileStreaming = -1 |
| TUniquePtr<IPlatformIoDispatcher> UE::GPlatformIoDispatcher |
| FPropertyTypeNameTable UE::GPropertyTypeNameTable |
| UE_API const FName UE::NAME_Key | ( | ANSITEXTVIEW("Key") | ) |
| UE_API const FName UE::NAME_Value | ( | ANSITEXTVIEW("Value") | ) |