UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerParticlePBDUpdateFromDeltaPosition.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
8
9namespace Chaos
10{
12{
13 public:
16
17 template<class T_PARTICLES>
18 inline void ApplyHelper(T_PARTICLES& InParticles, const FReal Dt, const int32 Index) const
19 {
20 InParticles.SetV(Index, (InParticles.GetP(Index) - InParticles.GetX(Index)) / Dt);
21 }
22
23 inline void Apply(FPBDParticles& InParticles, const FReal Dt, const int32 Index) const override //-V762
24 {
25 InParticles.V(Index) = (InParticles.GetP(Index) - InParticles.GetX(Index)) / Dt;
27 }
28
29 inline void Apply(TPBDRigidParticles<FReal, 3>& InParticles, const FReal Dt, const int32 Index) const override //-V762
30 {
33 }
34
35 inline void Apply(FPBDRigidParticleHandle* Particle, const FReal Dt) const override //-V762
36 {
37 const FVec3& CenterOfMass = Particle->CenterOfMass();
38 const FVec3 CenteredX = Particle->XCom();
39 const FVec3 CenteredP = Particle->PCom();
40 Particle->SetV(FVec3::CalculateVelocity(CenteredX, CenteredP, Dt));
41 Particle->SetWf(FRotation3f::CalculateAngularVelocity(Particle->GetRf(), Particle->GetQf(), FRealSingle(Dt)));
42 }
43
44 inline void Apply(TTransientPBDRigidParticleHandle<FReal, 3>& Particle, const FReal Dt) const override //-V762
45 {
46 const FVec3& CenterOfMass = Particle.CenterOfMass();
47 const FVec3 CenteredX = Particle.XCom();
48 const FVec3 CenteredP = Particle.PCom();
49 Particle.SetV(FVec3::CalculateVelocity(CenteredX, CenteredP, Dt));
50 Particle.SetWf(FRotation3f::CalculateAngularVelocity(Particle.GetRf(), Particle.GetQf(), FRealSingle(Dt)));
51 }
52};
53
54template<class T, int d>
55using TPerParticlePBDUpdateFromDeltaPosition UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FPerParticlePBDUpdateFromDeltaPosition instead") = FPerParticlePBDUpdateFromDeltaPosition;
56}
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
Definition PerParticlePBDUpdateFromDeltaPosition.h:12
void Apply(FPBDParticles &InParticles, const FReal Dt, const int32 Index) const override
Definition PerParticlePBDUpdateFromDeltaPosition.h:23
void Apply(TPBDRigidParticles< FReal, 3 > &InParticles, const FReal Dt, const int32 Index) const override
Definition PerParticlePBDUpdateFromDeltaPosition.h:29
virtual ~FPerParticlePBDUpdateFromDeltaPosition()
Definition PerParticlePBDUpdateFromDeltaPosition.h:15
void Apply(FPBDRigidParticleHandle *Particle, const FReal Dt) const override
Definition PerParticlePBDUpdateFromDeltaPosition.h:35
void Apply(TTransientPBDRigidParticleHandle< FReal, 3 > &Particle, const FReal Dt) const override
Definition PerParticlePBDUpdateFromDeltaPosition.h:44
void ApplyHelper(T_PARTICLES &InParticles, const FReal Dt, const int32 Index) const
Definition PerParticlePBDUpdateFromDeltaPosition.h:18
FPerParticlePBDUpdateFromDeltaPosition()
Definition PerParticlePBDUpdateFromDeltaPosition.h:14
Definition PerParticleRule.h:18
Definition PBDParticles.h:12
Definition ParticleHandle.h:987
Definition PBDRigidParticles.h:22
static TVector< FRealSingle, 3 > CalculateAngularVelocity(const TRotation< FRealSingle, 3 > &InR0, const TRotation< FRealSingle, 3 > &InR1, const FRealSingle InDt)
Definition Rotation.h:230
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
U16 Index
Definition radfft.cpp:71