9#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
26 int32 NumIterations = 1,
32 bool bDoQuasistatics =
false,
99 MConstraintInits.Reset();
100 MConstraintRules.Reset();
101 MPostCollisionConstraintRules.Reset();
102 MConstraintPostprocessings.Reset();
103 MConstraintInitsActiveView.Reset();
104 MConstraintRulesActiveView.Reset();
105 MPostCollisionConstraintRulesActiveView.Reset();
106 MConstraintPostprocessingsActiveView.Reset();
185 template<
bool bForceRule,
bool bVelocityField,
bool bDampVelocityRule>
191 FSolverParticles MParticles;
193 FSolverCollisionParticles MCollisionParticles;
229 int32 MNumIterations;
236 bool bDoQuasistatics =
false;
237 bool bUsePerParticleDamping =
false;
242#if !defined(CHAOS_POST_ITERATION_UPDATES_ISPC_ENABLED)
243#define CHAOS_POST_ITERATION_UPDATES_ISPC_ENABLED 1
247#if !INTEL_ISPC || UE_BUILD_SHIPPING
250extern CHAOS_API bool bChaos_PostIterationUpdates_ISPC_Enabled;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CHAOS_POST_ITERATION_UPDATES_ISPC_ENABLED
Definition PBDEvolution.h:243
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition PBDEvolution.h:19
const TArray< FSolverVec3 > & GetCollisionContacts() const
Definition PBDEvolution.h:173
FSolverReal GetTime() const
Definition PBDEvolution.h:177
void SetLocalDamping(const FSolverReal LocalDamping, const uint32 GroupId=0)
Definition PBDEvolution.h:164
const FSolverCollisionParticles & CollisionParticles() const
Definition PBDEvolution.h:89
FSolverParticles & Particles()
Definition PBDEvolution.h:60
void SetUseCCD(const bool bUseCCD, const uint32 GroupId=0)
Definition PBDEvolution.h:167
const TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintInits() const
Definition PBDEvolution.h:128
const TArray< FSolverReal > & GetCollisionPhis() const
Definition PBDEvolution.h:175
int32 GetPostCollisionConstraintRuleRangeSize(int32 Offset) const
Definition PBDEvolution.h:118
const TArray< uint32 > & ParticleGroupIds() const
Definition PBDEvolution.h:67
TFunction< void(FSolverParticles &, const FSolverReal, const int32)> & GetForceFunction(const uint32 GroupId=0)
Definition PBDEvolution.h:140
CHAOS_API int32 AddCollisionParticleRange(int32 NumParticles, uint32 GroupId, bool bActivate)
Definition PBDEvolution.cpp:179
int32 GetConstraintInitRangeSize(int32 Offset) const
Definition PBDEvolution.h:116
CHAOS_API int32 AddCollisionParticle(uint32 GroupId, bool bActivate)
Definition PBDEvolution.cpp:201
FSolverCollisionParticles & CollisionParticles()
Definition PBDEvolution.h:90
TPBDActiveView< FSolverCollisionParticles > & CollisionParticlesActiveView()
Definition PBDEvolution.h:93
FSolverReal GetDamping(const uint32 GroupId=0) const
Definition PBDEvolution.h:160
FSolverReal GetCoefficientOfFriction(const uint32 GroupId=0) const
Definition PBDEvolution.h:157
CHAOS_API int32 AddPostCollisionConstraintRuleRange(int32 NumConstraints, bool bActivate)
Definition PBDEvolution.cpp:267
CHAOS_API int32 AddParticleRange(int32 NumParticles, uint32 GroupId, bool bActivate)
Definition PBDEvolution.cpp:136
const FSolverVec3 & GetGravity(const uint32 GroupId=0) const
Definition PBDEvolution.h:143
CHAOS_API int32 AddConstraintPostprocessingsRange(int32 NumConstraints, bool bActivate)
Definition PBDEvolution.cpp:276
~FPBDEvolution()
Definition PBDEvolution.h:34
const TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & PostCollisionConstraintRules() const
Definition PBDEvolution.h:132
const TPBDActiveView< FSolverParticles > & ParticlesActiveView()
Definition PBDEvolution.h:61
const FVelocityAndPressureField & GetVelocityAndPressureField(const uint32 GroupId=0) const
Definition PBDEvolution.h:149
TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & PostCollisionConstraintRules()
Definition PBDEvolution.h:133
FSolverReal GetCollisionThickness(const uint32 GroupId=0) const
Definition PBDEvolution.h:154
TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintInits()
Definition PBDEvolution.h:129
int32 GetIterations() const
Definition PBDEvolution.h:151
void SetCoefficientOfFriction(const FSolverReal CoefficientOfFriction, const uint32 GroupId=0)
Definition PBDEvolution.h:158
void SetParticleDamping(const FSolverReal Damping, const uint32 ParticleIndex=0)
Definition PBDEvolution.h:170
void SetCollisionThickness(const FSolverReal CollisionThickness, const uint32 GroupId=0)
Definition PBDEvolution.h:155
CHAOS_API int32 AddConstraintInitRange(int32 NumConstraints, bool bActivate)
Definition PBDEvolution.cpp:249
void ActivateParticleRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:49
CHAOS_API void AdvanceOneTimeStep(const FSolverReal Dt)
Definition PBDEvolution.cpp:468
CHAOS_API void ResetParticles()
Definition PBDEvolution.cpp:126
const TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintPostprocessings() const
Definition PBDEvolution.h:134
void SetIterations(const int32 Iterations)
Definition PBDEvolution.h:152
const TArray< FSolverVec3 > & GetCollisionNormals() const
Definition PBDEvolution.h:174
int32 GetCollisionParticleRangeSize(int32 Offset) const
Definition PBDEvolution.h:86
const FSolverParticles & GetParticles() const
Definition PBDEvolution.h:63
const TArray< bool > & GetCollisionStatus()
Definition PBDEvolution.h:172
CHAOS_API int32 AddConstraintRuleRange(int32 NumConstraints, bool bActivate)
Definition PBDEvolution.cpp:258
void SetDamping(const FSolverReal Damping, const uint32 GroupId=0)
Definition PBDEvolution.h:161
void ResetConstraintRules()
Definition PBDEvolution.h:97
CHAOS_API void ResetCollisionParticles(int32 NumParticles=0)
Definition PBDEvolution.cpp:173
FSolverParticles & GetParticles()
Definition PBDEvolution.h:64
const FSolverParticles & Particles() const
Definition PBDEvolution.h:59
int32 AddParticleRange(int32 NumItems, bool bActivate=true)
Definition PBDEvolution.h:55
const TFunction< void(FSolverParticles &, const FSolverReal, const int32)> & GetForceFunction(const uint32 GroupId=0) const
Definition PBDEvolution.h:141
const TPBDActiveView< FSolverCollisionParticles > & CollisionParticlesActiveView() const
Definition PBDEvolution.h:94
TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintRules()
Definition PBDEvolution.h:131
void DeactivateParticleRanges()
Definition PBDEvolution.h:52
FSolverReal GetLocalDamping(const uint32 GroupId=0) const
Definition PBDEvolution.h:163
bool GetUseCCD(const uint32 GroupId=0) const
Definition PBDEvolution.h:166
const TArray< uint32 > & CollisionParticleGroupIds() const
Definition PBDEvolution.h:92
TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintPostprocessings()
Definition PBDEvolution.h:135
int32 GetConstraintPostprocessingsRangeSize(int32 Offset) const
Definition PBDEvolution.h:119
void SetKinematicUpdateFunction(TFunction< void(FSolverParticles &, const FSolverReal, const FSolverReal, const int32)> KinematicUpdate)
Definition PBDEvolution.h:137
void ActivateCollisionParticleRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:83
void ActivateConstraintInitRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:122
TArray< uint32 > & CollisionParticleGroupIds()
Definition PBDEvolution.h:91
FSolverReal GetParticleDamping(const uint32 ParticleIndex=0) const
Definition PBDEvolution.h:169
void SetQuasistatics(const bool bDoQuasistaticsIn)
Definition PBDEvolution.h:146
int32 GetParticleRangeSize(int32 Offset) const
Definition PBDEvolution.h:46
void SetGravity(const FSolverVec3 &Acceleration, const uint32 GroupId=0)
Definition PBDEvolution.h:144
void ActivateConstraintPostprocessingsRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:125
void ActivateConstraintRuleRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:123
FVelocityAndPressureField & GetVelocityAndPressureField(const uint32 GroupId=0)
Definition PBDEvolution.h:148
CHAOS_API void RemoveCollisionParticle(int32 CollisionParticleIndex, int32 CollisionParticleViewIndex)
Definition PBDEvolution.cpp:234
void SetCollisionKinematicUpdateFunction(TFunction< void(FSolverCollisionParticles &, const FSolverReal, const FSolverReal, const int32)> KinematicUpdate)
Definition PBDEvolution.h:138
void ActivatePostCollisionConstraintRuleRange(int32 Offset, bool bActivate)
Definition PBDEvolution.h:124
const TArray< TFunction< void(FSolverParticles &, const FSolverReal)> > & ConstraintRules() const
Definition PBDEvolution.h:130
int32 GetConstraintRuleRangeSize(int32 Offset) const
Definition PBDEvolution.h:117
Definition SoftsSolverCollisionParticles.h:10
Definition PBDSoftsSolverParticles.h:20
Definition VelocityField.h:17
Definition ArrayCollectionArray.h:15
Definition ArrayCollection.h:10
uint32 Size() const
Definition ArrayCollection.h:66
Definition PBDActiveView.h:47
Definition AndroidPlatformMisc.h:14
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
FRealSingle FSolverReal
Definition SolverBody.h:38