UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ClothingSimulationInstance.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
7#include "UObject/ObjectPtr.h"
8#include "ClothingSimulationInstance.generated.h"
9
10#define UE_API CLOTHINGSYSTEMRUNTIMEINTERFACE_API
11
12struct FClothSimulData;
15class USkeletalMesh;
16class USkeletalMeshComponent;
18
23USTRUCT()
25{
26public:
28
29
37 {
38 public:
40 : ClothingSimulationFactory(InClothingSimulationFactory)
41 {
42 check(ClothingSimulationFactory);
43 ClothingAssets.SetNumZeroed(NumTotalClothAssets);
44 }
45
47 {
48 ClothingAssets[Index] = ClothingAsset;
49 }
50
52 {
53 return ClothingSimulationFactory;
54 }
55
56 private:
58 UClothingSimulationFactory* ClothingSimulationFactory;
60 };
61
63 UE_API FClothingSimulationInstance(USkeletalMeshComponent* SkeletalMeshComponent, const FFactoryAssetGroup& FactoryAssetGroup);
64
67
72
75 {
76 return ClothingSimulationFactory;
77 }
78
81 {
82 return ClothingSimulation;
83 }
84
87 {
88 return ClothingSimulation;
89 }
90
93 {
94 return ClothingSimulationContext;
95 }
96
99 {
100 return ClothingSimulationContext;
101 }
102
105 {
106 return ClothingSimulationInteractor;
107 }
108
110 UE_API void RemoveAllClothingActors();
111
113 UE_API void SyncClothingInteractor();
114
117 {
118 ClothingSimulation->HardResetSimulation(static_cast<const IClothingSimulationContext*>(ClothingSimulationContext));
119 }
120
123 {
124 ClothingSimulation->GetCollisions(Collisions, bIncludeExternal);
125 }
126
128 UE_API void AppendUniqueCollisions(FClothCollisionData& OutCollisions, bool bIncludeExternal) const;
129
132 {
133 ClothingSimulation->AddExternalCollisions(Collisions);
134 }
135
138 {
139 ClothingSimulation->ClearExternalCollisions();
140 }
141
143 UE_API void FillContextAndPrepareTick(const USkeletalMeshComponent* OwnerComponent, float DeltaTime, bool bIsInitialization);
144
146 void Simulate()
147 {
148 if (ClothingSimulation->ShouldSimulateLOD(CurrentOwnerLODIndex))
149 {
150 ClothingSimulation->Simulate_AnyThread(static_cast<const IClothingSimulationContext*>(ClothingSimulationContext));
151 }
152 else
153 {
154 ClothingSimulation->ForceClothNextUpdateTeleportAndReset_AnyThread();
155 }
156 }
157
160 {
161 if (ClothingSimulation->ShouldSimulateLOD(CurrentOwnerLODIndex))
162 {
163 ClothingSimulation->AppendSimulationData(CurrentSimulationData, OwnerComponent, LeaderPoseComponent);
164 }
165 }
166
167
169 FBoxSphereBounds GetBounds(const USkeletalMeshComponent* OwnerComponent) const
170 {
171 if (ClothingSimulation->ShouldSimulateLOD(CurrentOwnerLODIndex))
172 {
173 return ClothingSimulation->GetBounds(OwnerComponent);
174 }
176 }
177
178private:
180 IClothingSimulationInterface* ClothingSimulation = nullptr;
181
183 IClothingSimulationContext* ClothingSimulationContext = nullptr;
184
191 TObjectPtr<UClothingSimulationInteractor> ClothingSimulationInteractor;
192
195 TObjectPtr<UClothingSimulationFactory> ClothingSimulationFactory;
196
197 int32 CurrentOwnerLODIndex = INDEX_NONE; // This is populated by FillContextAndPrepareTick
198};
199
200template<>
202{
203 enum
204 {
205 WithCopy = false
206 };
207};
208
209#undef UE_API
#define check(expr)
Definition AssertionMacros.h:314
#define UE_API
Definition ClothingSimulationInstance.h:10
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
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
FBoxSphereBounds3d FBoxSphereBounds
Definition MathFwd.h:142
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
Definition ClothingSimulationInterface.h:20
Definition ClothingSimulationInterface.h:35
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition ClothingAssetBase.h:21
Definition ClothingSimulationFactory.h:44
Definition ClothingSimulationInteractor.h:65
Definition SkeletalMesh.h:440
Definition SkinnedMeshComponent.h:258
TWeakObjectPtr< USkinnedMeshComponent > LeaderPoseComponent
Definition SkinnedMeshComponent.h:289
U16 Index
Definition radfft.cpp:71
Definition ClothCollisionData.h:14
Definition ClothingSystemRuntimeTypes.h:15
Definition ClothingSimulationInstance.h:37
const UClothingSimulationFactory * GetClothingSimulationFactory() const
Definition ClothingSimulationInstance.h:51
FFactoryAssetGroup(UClothingSimulationFactory *InClothingSimulationFactory, const int32 NumTotalClothAssets)
Definition ClothingSimulationInstance.h:39
void AddClothingAsset(const UClothingAssetBase *ClothingAsset, const int32 Index)
Definition ClothingSimulationInstance.h:46
Definition ClothingSimulationInstance.h:25
FClothingSimulationInstance(FClothingSimulationInstance &&)=default
FClothingSimulationInstance & operator=(FClothingSimulationInstance &&)=default
FBoxSphereBounds GetBounds(const USkeletalMeshComponent *OwnerComponent) const
Definition ClothingSimulationInstance.h:169
void HardResetSimulation()
Definition ClothingSimulationInstance.h:116
IClothingSimulationInterface * GetClothingSimulation()
Definition ClothingSimulationInstance.h:86
UClothingSimulationInteractor * GetClothingSimulationInteractor() const
Definition ClothingSimulationInstance.h:104
FClothingSimulationInstance & operator=(const FClothingSimulationInstance &)=delete
const IClothingSimulationContext * GetClothingSimulationContext() const
Definition ClothingSimulationInstance.h:92
void AddExternalCollisions(const FClothCollisionData &Collisions)
Definition ClothingSimulationInstance.h:131
void ClearExternalCollisions()
Definition ClothingSimulationInstance.h:137
void Simulate()
Definition ClothingSimulationInstance.h:146
void GetCollisions(FClothCollisionData &Collisions, bool bIncludeExternal) const
Definition ClothingSimulationInstance.h:122
IClothingSimulationContext * GetClothingSimulationContext()
Definition ClothingSimulationInstance.h:98
void AppendSimulationData(TMap< int32, FClothSimulData > &CurrentSimulationData, const USkeletalMeshComponent *OwnerComponent, const USkinnedMeshComponent *LeaderPoseComponent) const
Definition ClothingSimulationInstance.h:159
UClothingSimulationFactory * GetClothingSimulationFactory() const
Definition ClothingSimulationInstance.h:74
const IClothingSimulationInterface * GetClothingSimulation() const
Definition ClothingSimulationInstance.h:80
FClothingSimulationInstance(const FClothingSimulationInstance &)=delete
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithCopy
Definition StructOpsTypeTraits.h:17
Definition StructOpsTypeTraits.h:46
Definition BoxSphereBounds.h:25