UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AttributeIdentifier.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"
9#include "EngineLogs.h"
10
11#include "AttributeIdentifier.generated.h"
12
15USTRUCT(BlueprintType)
17{
19
20 FAnimationAttributeIdentifier() : Name(NAME_None), BoneName(NAME_None), BoneIndex(INDEX_NONE), ScriptStruct(nullptr), ScriptStructPath(nullptr) {}
21
22 FAnimationAttributeIdentifier(const FName& InName, const int32 InBoneIndex, const FName InBoneName, UScriptStruct* InStruct) : Name(InName), BoneName(InBoneName), BoneIndex(InBoneIndex), ScriptStruct(InStruct), ScriptStructPath(InStruct) {}
23
25 : Name(InName)
26 , BoneName(InBoneName)
27 , BoneIndex(InBoneIndex)
28 , ScriptStruct(nullptr)
29 , ScriptStructPath(InStructPath)
30 {
31 ScriptStruct = Cast<UScriptStruct>(ScriptStructPath.ResolveObject());
32 }
33
34 const FName& GetName() const { return Name; }
35 const FName& GetBoneName() const { return BoneName; }
36 int32 GetBoneIndex() const { return BoneIndex; }
37 UScriptStruct* GetType() const { return ScriptStruct; }
38 FSoftObjectPath GetScriptStructPath() const { return ScriptStructPath; }
39
40 bool IsValid() const
41 {
42 return Name != NAME_None && BoneName != NAME_None && BoneIndex != INDEX_NONE && ScriptStruct != nullptr;
43 }
44
46 {
47 return (Name == Other.Name && BoneIndex == Other.BoneIndex
48 && BoneName == Other.BoneName
49 && ScriptStruct == Other.ScriptStruct);
50 }
51
53 {
54 return HashCombine(GetTypeHash(Id.BoneIndex), GetTypeHash(Id.Name));
55 }
56
58 {
59 Ar << Name;
60 Ar << BoneName;
61 Ar << BoneIndex;
62 Ar << ScriptStructPath;
63
64 if (Ar.IsLoading())
65 {
66 ScriptStruct = Cast<UScriptStruct>(ScriptStructPath.ResolveObject());
67 ensure(ScriptStruct != nullptr);
68 }
69
70 return true;
71 }
72
73 FString ToString() const
74 {
75 return FString::Printf(TEXT("Name: %s Type: %s BoneName: %s BoneIndex :%i"), *Name.ToString(), *ScriptStructPath.ToString(), *BoneName.ToString(), BoneIndex);
76 }
77
78protected:
79 UPROPERTY(BlueprintReadOnly, Category = AttributeIdentifier)
81
82 UPROPERTY(BlueprintReadOnly, Category = AttributeIdentifier)
83 FName BoneName;
84
85 UPROPERTY(BlueprintReadOnly, Category = AttributeIdentifier)
86 int32 BoneIndex;
87
88 UPROPERTY(BlueprintReadOnly, Transient, Category = AttributeIdentifier)
90
91 UPROPERTY(BlueprintReadOnly, Category = AttributeIdentifier)
92 FSoftObjectPath ScriptStructPath;
93
95};
96
97USTRUCT()
105
106template<>
114
116UCLASS(MinimalAPI)
118{
120public:
121
122#if WITH_EDITOR
134 UFUNCTION(BlueprintCallable, Category = Attributes, meta=(ScriptMethod))
135 static ENGINE_API FAnimationAttributeIdentifier CreateAttributeIdentifier(UAnimationAsset* AnimationAsset, const FName AttributeName, const FName BoneName, UScriptStruct* AttributeType, bool bValidateExistsOnAsset = false);
136#endif // WITH_EDITOR
137
141 UFUNCTION(BlueprintPure, Category = Attribute, meta = (ScriptMethod))
143 {
144 return Identifier.IsValid();
145 }
146};
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ 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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UPARAM(...)
Definition ObjectMacros.h:748
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
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
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
Definition NameTypes.h:617
Definition Array.h:670
Definition AnimationAsset.h:1020
Definition AttributeIdentifier.h:118
Definition BlueprintFunctionLibrary.h:16
Definition Class.h:1720
Definition AttributeIdentifier.h:99
Definition AttributeIdentifier.h:17
FAnimationAttributeIdentifier(const FName &InName, const int32 InBoneIndex, const FName InBoneName, UScriptStruct *InStruct)
Definition AttributeIdentifier.h:22
FAnimationAttributeIdentifier()
Definition AttributeIdentifier.h:20
bool IsValid() const
Definition AttributeIdentifier.h:40
FAnimationAttributeIdentifier(const FName &InName, const int32 InBoneIndex, const FName InBoneName, const FSoftObjectPath InStructPath)
Definition AttributeIdentifier.h:24
bool Serialize(FArchive &Ar)
Definition AttributeIdentifier.h:57
FSoftObjectPath GetScriptStructPath() const
Definition AttributeIdentifier.h:38
UScriptStruct * GetType() const
Definition AttributeIdentifier.h:37
bool operator==(const FAnimationAttributeIdentifier &Other) const
Definition AttributeIdentifier.h:45
int32 GetBoneIndex() const
Definition AttributeIdentifier.h:36
const FName & GetBoneName() const
Definition AttributeIdentifier.h:35
const FName & GetName() const
Definition AttributeIdentifier.h:34
FString ToString() const
Definition AttributeIdentifier.h:73
friend uint32 GetTypeHash(const FAnimationAttributeIdentifier &Id)
Definition AttributeIdentifier.h:52
Definition SoftObjectPath.h:56
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46