![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#include <SolverConstraintContainer.h>
Inheritance diagram for Chaos::FConstraintContainerSolver:Base class for all the solver for a set of constraints of a specific type.
A SolverContainer is used to solve a set constraints in sequential order. There will be one solver container for each thread on which we solve constraints (see FPBDIslandConstraintGroupSolver). How constraints are assigned to groups depends on the constraint type and settings, but usually a group contains all constraints from one or more islands (unless we are coloring).
NOTE: there are two main use-case for FConstraintContainerSolver objects: the main physics scene and RBAN. The main scene uses the IslandManager to break the scene up into groups of constraints that can be solved in parallel (Islands). Those islands are then put into IslandGroups, and each IslandGroup is solved in a task, therefore we will have one FConstraintContainerSolver per type of constraint per IslandGroup. RBAN does not attempt to partition its scene into islands and just solves all constraints on its main thread, so it only has one FConstraintContainerSolver (per constraint type).
|
inline |
|
inlinevirtual |
|
pure virtual |
Add all the required bodies to the body container (required for the constraints added with AddConstraints)
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
RBAN API. Add all (active) constraints to the solver.
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Island API. Add a set of constraints to the solver. This can be called multiple times: once for each island in an IslandGroup, but there will never be more constraints added than specified in Reset(). NOTE: this should not do any actual data gathering - it should just add to the list of constraints in this group. All data gathering is handled in GatherInput.
Implemented in Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Apply the position solve to all constraints in the container
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Apply the projection solve to all constraints in the container
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Apply the velocity solve to all constraints in the container
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
inline |
Get the solver priority
|
inlinevirtual |
Reimplemented in Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >.
|
inlinevirtual |
Reimplemented in Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >.
|
inlinevirtual |
Reimplemented in Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >.
Set the maximum number of constraints the solver will have to handle. This will be called only once per tick, so containers resized here will not have to resize again this tick so that pointers to elements in the container will remain valid for the tick (but not beyond).
Implemented in Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TPBDJointContainerSolver< JointSolverType >, Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, and Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >.
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
|
pure virtual |
Implemented in Chaos::Private::FCharacterGroundConstraintContainerSolver, Chaos::FPBDCollisionContainerSolver, Chaos::Private::FPBDCollisionContainerSolverJacobi, Chaos::Private::FPBDCollisionContainerSolverSimd, Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >, Chaos::TIndexedConstraintContainerSolver< ConstraintContainerType >, Chaos::TSimpleConstraintContainerSolver< ConstraintContainerType >, and Chaos::Private::TPBDJointContainerSolver< JointSolverType >.
Set the solver priority. Solvers are sorted by priority. Lower values are solved first so solvers with higher priorty values with "win" over lower ones.