UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteAssemblyData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "UObject/Object.h"
9
10#include "NaniteAssemblyData.generated.h"
11
12class UStaticMesh;
13
15USTRUCT(BlueprintType)
17{
19
20 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
21 int32 BoneIndex = INDEX_NONE;
22
23 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
24 float BoneWeight = 1.0f;
25
26 bool operator==(const FNaniteAssemblyBoneInfluence& Other) const
27 {
28 return BoneIndex == Other.BoneIndex && FMath::IsNearlyEqual(BoneWeight, Other.BoneWeight);
29 }
30 bool operator!=(const FNaniteAssemblyBoneInfluence& Other) const { return !(*this == Other); }
31};
32
34UENUM(BlueprintType)
36{
37 // Local (mesh) space
38 Local,
39 // Relative to the bone influences
41};
42
44USTRUCT()
46{
48
49
50 UPROPERTY()
51 int32 PartIndex = INDEX_NONE;
52
54 UPROPERTY()
56
58 UPROPERTY()
60
62 UPROPERTY()
64
65 bool operator==(const FNaniteAssemblyNode& Other) const
66 {
67 return PartIndex == Other.PartIndex &&
68 TransformSpace == Other.TransformSpace &&
69 Transform.Equals(Other.Transform) &&
70 BoneInfluences == Other.BoneInfluences;
71 }
72 bool operator!=(const FNaniteAssemblyNode& Other) const { return !(*this == Other); }
73};
74
76USTRUCT()
78{
80
81
82 UPROPERTY(VisibleAnywhere, Category = General)
83 FSoftObjectPath MeshObjectPath;
84
86 UPROPERTY()
87 TArray<int32> MaterialRemap;
88
89 bool operator==(const FNaniteAssemblyPart& Other) const
90 {
91 return MeshObjectPath == Other.MeshObjectPath &&
92 MaterialRemap == Other.MaterialRemap;
93 }
94 bool operator!=(const FNaniteAssemblyPart& Other) const { return !(*this == Other); }
95};
96
98USTRUCT()
100{
102
103
104 UPROPERTY(VisibleAnywhere, Category = General)
106
108 UPROPERTY()
110
111 const bool IsValid() const { return Parts.Num() > 0 && Nodes.Num() > 0; }
112 bool operator==(const FNaniteAssemblyData& Other) const { return Parts == Other.Parts && Nodes == Other.Nodes; }
113 bool operator!=(const FNaniteAssemblyData& Other) const { return !(*this == Other); }
114
116 {
117 bool bValid = IsValid();
118 Ar << bValid;
119 if (bValid)
120 {
121 for (FNaniteAssemblyPart& Part : Parts)
122 {
123 FString Path = Part.MeshObjectPath.ToString();
124 Ar << Path;
125 Ar << Part.MaterialRemap;
126 }
127 Ar << Nodes;
128 }
129
130 }
131};
132
135{
136 Ar << Influence.BoneIndex;
137 Ar << Influence.BoneWeight;
138
139 return Ar;
140}
141
144{
145 Ar << Node.PartIndex;
146 Ar << Node.TransformSpace;
147 Ar << Node.Transform;
148 Ar << Node.BoneInfluences;
149
150 return Ar;
151}
152
155{
156 Ar << Part.MeshObjectPath;
157 Ar << Part.MaterialRemap;
158
159 return Ar;
160}
161
164{
165 Ar << Data.Parts;
166 Ar << Data.Nodes;
167
168 return Ar;
169}
@ 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
@ General
Definition MaterialExpressionFunctionInput.h:41
FArchive & operator<<(FArchive &Ar, FNaniteAssemblyBoneInfluence &Influence)
Definition NaniteAssemblyData.h:134
ENaniteAssemblyNodeTransformSpace
Definition NaniteAssemblyData.h:36
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition Array.h:670
Definition StaticMesh.h:593
CORE_API FString ToString() const
Definition Color.cpp:584
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition NaniteAssemblyData.h:17
int32 BoneIndex
Definition NaniteAssemblyData.h:21
bool operator!=(const FNaniteAssemblyBoneInfluence &Other) const
Definition NaniteAssemblyData.h:30
Definition NaniteAssemblyData.h:100
bool operator==(const FNaniteAssemblyData &Other) const
Definition NaniteAssemblyData.h:112
bool operator!=(const FNaniteAssemblyData &Other) const
Definition NaniteAssemblyData.h:113
void SerializeForDDC(FArchive &Ar)
Definition NaniteAssemblyData.h:115
Definition NaniteAssemblyData.h:46
int32 PartIndex
Definition NaniteAssemblyData.h:51
TArray< FNaniteAssemblyBoneInfluence > BoneInfluences
Definition NaniteAssemblyData.h:63
bool operator!=(const FNaniteAssemblyNode &Other) const
Definition NaniteAssemblyData.h:72
FTransform3f Transform
Definition NaniteAssemblyData.h:59
ENaniteAssemblyNodeTransformSpace TransformSpace
Definition NaniteAssemblyData.h:55
Definition NaniteAssemblyData.h:78
bool operator!=(const FNaniteAssemblyPart &Other) const
Definition NaniteAssemblyData.h:94
Definition SoftObjectPath.h:56