23 const int32 CurrentSize = ParticleToCachedSolve.Num();
24 const int32 SizeLeniency = FMath::CeilToInt(0.1f *
static_cast<float>(CurrentSize));
25 ParticleCacheAllocationSize = FMath::Max(CurrentSize, ParticleCacheAllocationSize);
32 ParticleToCachedSolve.Empty(PreferredSize);
33 ParticleCacheAllocationSize = PreferredSize;
37 ParticleToCachedSolve.Reset();
40 SavedConstraints.Reset();
41 WeakSinglePointConstraints.
Reset();
46 FPBDSolveCache& Cache = ParticleToCachedSolve.FindOrAdd(Particle.
UniqueIdx());
47 Cache.P = Particle.
GetP();
48 Cache.Q = Particle.
GetQ();
49 Cache.V = Particle.
GetV();
50 Cache.W = Particle.
GetW();
56 const FPBDSolveCache* Cache = ParticleToCachedSolve.Find(Particle.
UniqueIdx());
57 if (Cache && (Particle.
GetP() != Cache->P || Particle.
GetQ() != Cache->Q || Particle.
GetV() != Cache->V || Particle.
GetW() != Cache->W))
59 Particle.
SetP(Cache->P);
60 Particle.
SetQ(Cache->Q);
61 Particle.
SetV(Cache->V);
62 Particle.
SetW(Cache->W);
83 WeakPairs.Add(FWeakConstraintPair{Constraint.GetParticle0()->WeakParticleHandle(),Constraint.GetParticle1()->WeakParticleHandle()});
85 auto*
A = Constraint.GetParticle0();
86 auto*
B = Constraint.GetParticle1();
89 MarkSoftIfDesync(*
A,*
B);
128 return SavedConstraints;
158 struct FWeakConstraintPair
160 FWeakParticleHandle
A;
161 FWeakParticleHandle
B;
164 struct FPBDSolveCache
175 int32 ParticleCacheAllocationSize = 0;
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition EvolutionResimCache.h:14
void SaveConstraints(TArrayView< const FPBDCollisionConstraint *const > CollisionsArray)
Definition EvolutionResimCache.h:68
const TArray< FPBDCollisionConstraint > & GetAndSanitizeConstraints()
Definition EvolutionResimCache.h:98
bool ReloadParticlePostSolve(FPBDRigidParticleHandle &Particle) const
Definition EvolutionResimCache.h:53
void ResetCache()
Definition EvolutionResimCache.h:18
virtual ~FEvolutionResimCache()=default
void SaveParticlePostSolve(const FPBDRigidParticleHandle &Particle)
Definition EvolutionResimCache.h:44
FEvolutionResimCache()
Definition EvolutionResimCache.h:16
A contact constraint.
Definition PBDCollisionConstraint.h:225
static CHAOS_API FPBDCollisionConstraint MakeCopy(const FPBDCollisionConstraint &Source)
Return a constraint copied from the Source constraint, for use in the Resim Cache or other system.
Definition PBDCollisionConstraint.cpp:172
Definition ResimCacheBase.h:11
Definition ParticleHandle.h:436
FUniqueIdx UniqueIdx() const
Definition ParticleHandle.h:561
const TVector< T, d > GetW() const
Definition ParticleHandle.h:957
void SetW(const TVector< T, d > &InW, bool bInvalidate=false)
Definition ParticleHandle.h:958
const TVector< T, d > GetV() const
Definition ParticleHandle.h:948
void SetV(const TVector< T, d > &InV, bool bInvalidate=false)
Definition ParticleHandle.h:949
Definition ParticleHandle.h:987
const TRotation< T, d > GetQ() const
Definition ParticleHandle.h:1113
void SetQ(const TRotation< T, d > &InQ)
Definition ParticleHandle.h:1114
void SetP(const TVector< T, d > &InP)
Definition ParticleHandle.h:1107
const TVector< T, d > & GetP() const
Definition ParticleHandle.h:1106
Definition Constraints.Build.cs:6
Definition ArrayView.h:139
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition UnrealString.h.inl:34
Definition SkeletalMeshComponent.h:307
TVector< FReal, 3 > FVec3
Definition Core.h:17
const TCHAR * B(bool b)
Definition SkinnedMeshComponent.cpp:386
int32 P[512]
Definition FieldSystemNoiseAlgo.cpp:11