UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDCollisionContainerSolverJacobi.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
9
10namespace Chaos
11{
12 class FPBDCollisionConstraint;
13 class FPBDCollisionConstraints;
14 class FSolverBody;
15 class FSolverBodyContainer;
16
17 namespace Private
18 {
26 {
27 public:
29
32
33 int32 NumSolvers() const { return CollisionConstraints.Num(); }
34
35 virtual void Reset(const int32 InMaxCollisions) override final;
36
37 virtual int32 GetNumConstraints() const override final { return NumSolvers(); }
38
39 //
40 // IslandGroup API
41 //
42 virtual void AddConstraints() override final;
44 virtual void AddBodies(FSolverBodyContainer& SolverBodyContainer) override final;
45 virtual void GatherInput(const FReal Dt) override final;
46 virtual void GatherInput(const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final;
47 virtual void ScatterOutput(const FReal Dt) override final;
48 virtual void ScatterOutput(const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final;
49 virtual void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
50 virtual void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
51 virtual void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
52
53 private:
54 void CachePrefetchSolver(const int32 ConstraintIndex) const;
55 void AddConstraint(FPBDCollisionConstraint& Constraint);
56 void UpdatePositionShockPropagation(const FReal Dt, const int32 It, const int32 NumIts, const int32 BeginIndex, const int32 EndIndex, const FPBDCollisionSolverSettings& SolverSettings);
57 void UpdateVelocityShockPropagation(const FReal Dt, const int32 It, const int32 NumIts, const int32 BeginIndex, const int32 EndIndex, const FPBDCollisionSolverSettings& SolverSettings);
58 bool SolvePositionImpl(const FReal Dt, const int32 It, const int32 NumIts, const int32 BeginIndex, const int32 EndIndex, const FPBDCollisionSolverSettings& SolverSettings);
59 bool SolveVelocityImpl(const FReal Dt, const int32 It, const int32 NumIts, const int32 BeginIndex, const int32 EndIndex, const FPBDCollisionSolverSettings& SolverSettings);
60 void UpdateCollisions(const FReal InDt, const int32 BeginIndex, const int32 EndIndex);
61
62 const FPBDCollisionConstraints& ConstraintContainer;
63 TArray<Private::FPBDCollisionSolverJacobi> CollisionSolvers;
64 TArray<FPBDCollisionConstraint*> CollisionConstraints;
65 TArray<bool> bCollisionConstraintPerIterationCollisionDetection;
66 bool bPerIterationCollisionDetection;
67 };
68
69 } // namespace Private
70} // namespace Chaos
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 SolverConstraintContainer.h:29
A contact constraint.
Definition PBDCollisionConstraint.h:225
Definition PBDCollisionConstraints.h:49
Settings to control the low-level collision solver behaviour.
Definition PBDCollisionSolverSettings.h:12
Definition SolverBodyContainer.h:37
Definition PBDCollisionContainerSolverJacobi.h:26
virtual void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDCollisionContainerSolverJacobi.cpp:437
~FPBDCollisionContainerSolverJacobi()
Definition PBDCollisionContainerSolverJacobi.cpp:269
virtual void AddConstraints() override final
Definition PBDCollisionContainerSolverJacobi.cpp:292
virtual void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDCollisionContainerSolverJacobi.cpp:427
UE_NONCOPYABLE(FPBDCollisionContainerSolverJacobi)
virtual void GatherInput(const FReal Dt) override final
Definition PBDCollisionContainerSolverJacobi.cpp:350
int32 NumSolvers() const
Definition PBDCollisionContainerSolverJacobi.h:33
virtual int32 GetNumConstraints() const override final
Definition PBDCollisionContainerSolverJacobi.h:37
virtual void ScatterOutput(const FReal Dt) override final
Definition PBDCollisionContainerSolverJacobi.cpp:400
virtual void AddBodies(FSolverBodyContainer &SolverBodyContainer) override final
Definition PBDCollisionContainerSolverJacobi.cpp:331
virtual void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDCollisionContainerSolverJacobi.cpp:432
Definition PBDCollisionSolverJacobi.h:651
Definition IslandManager.h:151
Definition ArrayView.h:139
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
Definition OverriddenPropertySet.cpp:45