15#define CHAOS_PARTICLE_ACTORTRANSFORM 1
22 template<
typename T_PARTICLEHANDLE>
24 template<
typename T_PARTICLEHANDLE>
26 template<
typename T_PARTICLEHANDLE>
29 template<
typename T_PARTICLEHANDLE>
39 template<
typename T_PARTICLEHANDLE>
41 template<
typename T_PARTICLEHANDLE>
43 template<
typename T_PARTICLEHANDLE>
45 template<
typename T_PARTICLEHANDLE>
56 template <
typename TSpatialAccessor>
60 template<
typename T_PARTICLEHANDLE>
63 return FRigidTransform3(TSpatialAccessor::GetPosition(Particle), TSpatialAccessor::GetRotation(Particle));
66 template<
typename T_PARTICLEHANDLE>
69 TSpatialAccessor::Position(Particle) =
ActorWorldT.GetTranslation();
70 TSpatialAccessor::Rotation(Particle) =
ActorWorldT.GetRotation();
73 template<
typename T_PARTICLEHANDLE>
79 template<
typename T_PARTICLEHANDLE>
85 template<
typename T_PARTICLEHANDLE>
91 template<
typename T_PARTICLEHANDLE>
100 template<
typename T_PARTICLEHANDLE>
103 return Particle->RotationOfMass().UnrotateVector(P - Particle->CenterOfMass());
109 template<
typename T_PARTICLEHANDLE>
112 return Particle->RotationOfMass().Inverse()* Q;
118 template<
typename T_PARTICLEHANDLE>
127 template<
typename T_PARTICLEHANDLE>
130 return Particle->V() + FVec3::CrossProduct(Particle->W(),
RelPos);
133 template<
typename T_PARTICLEHANDLE>
136 return Particle->PreV() + FVec3::CrossProduct(Particle->PreW(),
RelPos);
139 template<
typename T_PARTICLEHANDLE>
142 return TSpatialAccessor::GetPosition(Particle) + TSpatialAccessor::GetRotation(Particle).RotateVector(Particle->CenterOfMass());
147 return TSpatialAccessor::Position(Particles,
Index) + TSpatialAccessor::Rotation(Particles,
Index).RotateVector(Particles.
CenterOfMass(
Index));
150 template<
typename T_PARTICLEHANDLE>
153 return TSpatialAccessor::GetRotation(Particle) * Particle->RotationOfMass();
161 template<
typename T_PARTICLEHANDLE>
170 template<
typename T_PARTICLEHANDLE>
174 const FVec3 P =
PCoM - Q.RotateVector(Particle->CenterOfMass());
176 TSpatialAccessor::Position(Particle) = P;
177 TSpatialAccessor::Rotation(Particle) = Q;
185 TSpatialAccessor::Position(Particles,
Index) = P;
186 TSpatialAccessor::Rotation(Particles,
Index) = Q;
189 template<
typename T_PARTICLEHANDLE>
199 template<
typename T_PARTICLEHANDLE>
205 Particle->AddForce(
Force);
206 Particle->AddTorque(
Torque);
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition ParticleUtilities.h:37
static const FVec3 & GetPosition(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:42
static FVec3 & Position(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:40
static FRotation3 & Rotation(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:44
static const FVec3 & Position(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:48
static const FRotation3 GetRotation(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:46
static FRotation3 Rotation(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:49
Definition ParticleUtilities.h:20
static const FRotation3 GetRotation(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:30
static const FVec3 & GetPosition(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:25
static const FVec3 & Position(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:32
static FVec3 & Position(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:23
static const FRotation3 Rotation(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:33
Definition ParticleUtilities.h:58
static FRotation3 GetCoMWorldRotation(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:151
static FMatrix33 GetWorldInertia(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:86
static FRigidTransform3 ParticleLocalToCoMLocal(T_PARTICLEHANDLE Particle, const FRigidTransform3 &T)
Definition ParticleUtilities.h:119
static void SetActorWorldTransform(T_PARTICLEHANDLE Particle, const FRigidTransform3 &ActorWorldT)
Definition ParticleUtilities.h:67
static FVec3 ParticleLocalToCoMLocal(T_PARTICLEHANDLE Particle, const FVec3 &P)
Definition ParticleUtilities.h:101
static FRigidTransform3 GetActorWorldTransform(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:61
static FRigidTransform3 GetCoMWorldTransform(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:162
static FMatrix33 GetWorldInvInertia(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:92
static FVec3 GetVelocityAtCoMRelativePosition(T_PARTICLEHANDLE Particle, const FVec3 &RelPos)
Definition ParticleUtilities.h:128
static void AddForceAtPositionWorld(T_PARTICLEHANDLE Particle, const FVec3 &Force, const FVec3 &Position)
Definition ParticleUtilities.h:200
static const FRigidTransform3 & ActorWorldToParticleWorld(T_PARTICLEHANDLE Particle, const FRigidTransform3 &ActorWorldT)
Definition ParticleUtilities.h:80
static void SetCoMWorldTransform(T_PARTICLEHANDLE Particle, const FVec3 &PCoM, const FRotation3 &QCoM)
Definition ParticleUtilities.h:171
static FVec3 GetCoMWorldPosition(T_PARTICLEHANDLE Particle)
Definition ParticleUtilities.h:140
static FRotation3 GetCoMWorldRotation(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:156
static void SetCoMWorldTransform(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index, const FVec3 &PCoM, const FRotation3 &QCoM)
Definition ParticleUtilities.h:180
static const FRigidTransform3 & ActorLocalToParticleLocal(T_PARTICLEHANDLE Particle, const FRigidTransform3 &ActorLocalT)
Definition ParticleUtilities.h:74
static FRotation3 ParticleLocalToCoMLocal(T_PARTICLEHANDLE Particle, const FRotation3 &Q)
Definition ParticleUtilities.h:110
static FVec3 GetPreviousVelocityAtCoMRelativePosition(T_PARTICLEHANDLE Particle, const FVec3 &RelPos)
Definition ParticleUtilities.h:134
static void AddForceAtPositionLocal(T_PARTICLEHANDLE Particle, const FVec3 &LocalForce, const FVec3 &LocalPosition)
Definition ParticleUtilities.h:190
static FVec3 GetCoMWorldPosition(TPBDRigidParticles< FReal, 3 > &Particles, const int32 Index)
Definition ParticleUtilities.h:145
Definition PBDRigidParticles.h:22
FORCEINLINE const TVector< T, d > & GetP(const int32 index) const
Definition PBDRigidParticles.h:66
FORCEINLINE const TRotation< T, d > GetQ(const int32 index) const
Definition PBDRigidParticles.h:73
const TVector< T, d > & GetX(const int32 Index) const
Definition Particles.h:156
FORCEINLINE const TRotation< T, d > & RotationOfMass(const int32 Index) const
Definition RigidParticles.h:192
FORCEINLINE const TVector< T, d > & CenterOfMass(const int32 Index) const
Definition RigidParticles.h:189
FORCEINLINE const TRotation< T, d > GetR(const int32 Index) const
Definition SimpleGeometryParticles.h:54
FMatrix33 ComputeWorldSpaceInertia(const FRotation3 &CoMRotation, const FMatrix33 &I)
Definition Utilities.h:327
Definition SkeletalMeshComponent.h:307
TRigidTransform< FReal, 3 > FRigidTransform3
Definition Core.h:22
U16 Index
Definition radfft.cpp:71