UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerParticleDampVelocity.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
7#include "Chaos/Vector.h"
9
10namespace Chaos::Softs
11{
12
14{
15public:
16
26
28
29 void UpdatePositionBasedState(const FSolverParticles& Particles, const int32 Offset, const int32 Range);
31
32 // Apply damping without first checking for kinematic particles
33 void ApplyFast(FSolverParticles& Particles, const FSolverReal /*Dt*/, const int32 Index) const
34 {
35 Apply(Particles.GetX(Index), Particles.V(Index));
36 }
37
38 void Apply(const FSolverVec3& X, FSolverVec3& V) const
39 {
40 const FSolverVec3 R = X - Xcm;
41 const FSolverVec3 Dv = LinearCoefficient * (Vcm - V) + AngularCoefficient * FSolverVec3::CrossProduct(R, Omega);
42 V += Dv;
43 }
44
45 bool IsEnabled() const
46 {
47 return LinearCoefficient > 0.f || AngularCoefficient > 0.f;
48 }
49
51 {
52 return LocalDampingSpace == EChaosSoftsLocalDampingSpace::CenterOfMass;
53 }
54
55 void SetProperties(
60
61private:
63 bool bPropertyIndicesInitialized = false;
64 FSolverReal LinearCoefficient;
65 FSolverReal AngularCoefficient;
66 FSolverVec3 Xcm, Vcm, Omega;
67
72};
73
74} // End namespace Chaos::Softs
75
76#if !defined(CHAOS_DAMP_VELOCITY_ISPC_ENABLED_DEFAULT)
77#define CHAOS_DAMP_VELOCITY_ISPC_ENABLED_DEFAULT 1
78#endif
79
80#if !defined(USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
81#define USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING 0
82#endif
83
84// Support run-time toggling on supported platforms in non-shipping configurations
85#if INTEL_ISPC
86#if UE_BUILD_SHIPPING && !USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING
88#else
90#endif // UE_BUILD_SHIPPING && !USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING
91#endif
#define UE_CHAOS_DECLARE_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:969
@ 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
#define CHAOS_DAMP_VELOCITY_ISPC_ENABLED_DEFAULT
Definition PerParticleDampVelocity.h:77
EChaosSoftsLocalDampingSpace
Definition SoftsSimulationSpace.h:22
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition CollectionPropertyFacade.h:49
Definition PerParticleDampVelocity.h:14
bool RequiresUpdatePositionBasedState() const
Definition PerParticleDampVelocity.h:50
bool IsEnabled() const
Definition PerParticleDampVelocity.h:45
void UpdatePositionBasedState(const FSolverParticles &Particles, const int32 Offset, const int32 Range)
Definition PerParticleDampVelocity.cpp:89
void SetProperties(const FCollectionPropertyConstFacade &PropertyCollection, const FSolverVec3 &ReferenceLocation, const FSolverVec3 &ReferenceVelocity, const FSolverVec3 &ReferenceAngularVelocity)
Definition PerParticleDampVelocity.cpp:27
FPerParticleDampVelocity(const FSolverReal InCoefficient=(FSolverReal) 0.01)
Definition PerParticleDampVelocity.h:17
void ApplyFast(FSolverParticles &Particles, const FSolverReal, const int32 Index) const
Definition PerParticleDampVelocity.h:33
void Apply(const FSolverVec3 &X, FSolverVec3 &V) const
Definition PerParticleDampVelocity.h:38
~FPerParticleDampVelocity()
Definition PerParticleDampVelocity.h:27
Definition SoftsSolverParticlesRange.h:12
Definition PBDSoftsSolverParticles.h:20
const TVector< T, d > & V(const int32 Index) const
Definition DynamicParticles.h:31
const TVector< T, d > & GetX(const int32 Index) const
Definition Particles.h:156
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
@ X
Definition SimulationModuleBase.h:152
U16 Index
Definition radfft.cpp:71