![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#include <ConstraintGroupSolver.h>
Inheritance diagram for Chaos::Private::FPBDConstraintGroupSolver:Protected Member Functions | |
| template<typename LambdaType > | |
| void | ApplyToConstraintRange (const int32 BeginConstraintIndex, const int32 EndConstraintIndex, const LambdaType &Lambda) |
| CHAOS_API void | SortSolverContainers () |
| virtual void | ResetImpl () |
| virtual void | SetConstraintSolverImpl (const int32 ContainerId) |
| virtual void | AddConstraintsImpl () |
| virtual void | GatherBodiesImpl (const FReal Dt, const int32 BeginBodyIndex, const int32 EndBodyIndex) |
All the data required to solver a set of constraints. All constraints in the groups are solved in sequence in a single thread. We can create one of these for each Island (or group of Islands, or subset of a color of constraints) for parallelism.
| Chaos::Private::FPBDConstraintGroupSolver::FPBDConstraintGroupSolver | ( | ) |
|
virtual |
| void Chaos::Private::FPBDConstraintGroupSolver::AddConstraintsAndBodies | ( | ) |
Set up the constraints solvers and body containers with pointers to their constraint and particles, but do not collect any data.
|
inlineprotectedvirtual |
Reimplemented in Chaos::Private::FPBDSceneConstraintGroupSolver, and Chaos::Private::FPBDIslandConstraintGroupSolver.
Apply positional constraints, and set the body velocities
Apply projection to attempt to fix up any errors left over from the Position and Velocity saolver phases
|
protected |
Apply any velocity constraints, and update the body velocities
Collect all the data for all solver bodies from their respective particles.
| void Chaos::Private::FPBDConstraintGroupSolver::GatherBodies | ( | const FReal | Dt, |
| const int32 | BeginBodyIndex, | ||
| const int32 | EndBodyIndex | ||
| ) |
Collect all the data for the specified range of solver bodies from their respective particles. Will be called from multiple threads with different non-overlapping indices.
|
inlineprotectedvirtual |
Reimplemented in Chaos::Private::FPBDIslandConstraintGroupSolver.
Collect all the data for all constraint solvers from their respective constraints.
| void Chaos::Private::FPBDConstraintGroupSolver::GatherConstraints | ( | const FReal | Dt, |
| const int32 | BeginConstraintIndex, | ||
| const int32 | EndConstraintIndex | ||
| ) |
Collect all the data for the specified range of constraint solvers from their respective constraints. Will be called from multiple threads with different non-overlapping indices.
|
inline |
Get the iterations settings for this group of islands
|
inline |
Get the number of solver bodies we have. This is all the bodies referenced by all constraints and is only non-zero after calling AddConstraintsAndBodies(). NOTE: it may be less than the number of particles in the IslandGroup (
|
inline |
Get the number of constraint solver we have, after AddConstraintsAndBodies() has been called.
For additional processing after gathering all the data. Calls PreApplyConstraints on each container solver.
| void Chaos::Private::FPBDConstraintGroupSolver::Reset | ( | ) |
Reset all state - called once per tick
Reimplemented in Chaos::Private::FPBDIslandConstraintGroupSolver.
Push results from all solver bodies back to their respective particles.
| void Chaos::Private::FPBDConstraintGroupSolver::ScatterBodies | ( | const FReal | Dt, |
| const int32 | BeginBodyIndex, | ||
| const int32 | EndBodyIndex | ||
| ) |
Push results from the specified range of solver bodies back to their respective particles. Will be called from multiple threads with different non-overlapping indices.
Push results from all constraint solvers back to their respective constraints.
| void Chaos::Private::FPBDConstraintGroupSolver::ScatterConstraints | ( | const FReal | Dt, |
| const int32 | BeginConstraintIndex, | ||
| const int32 | EndConstraintIndex | ||
| ) |
Push results from the specified range of constraint solvers back to their respective constraints.Will be called from multiple threads with different non-overlapping indices. The range covers all constraint types.
| void Chaos::Private::FPBDConstraintGroupSolver::SetConstraintSolver | ( | const int32 | ContainerId, |
| TUniquePtr< FConstraintContainerSolver > && | Solver | ||
| ) |
Attach a constraint solver to the specified ContainerId. This must be for the same constraint type as the container with that Id.
|
inlineprotectedvirtual |
Reimplemented in Chaos::Private::FPBDIslandConstraintGroupSolver.
| void Chaos::Private::FPBDConstraintGroupSolver::SetConstraintSolverPriority | ( | const int32 | ContainerId, |
| const int32 | Priority | ||
| ) |
Set the solver priority of the specified constraint type
|
inlinevirtual |
Set the iterations settings for this group of islands
Reimplemented in Chaos::Private::FPBDIslandConstraintGroupSolver.
|
protected |
| Chaos::Private::FPBDConstraintGroupSolver::UE_NONCOPYABLE | ( | FPBDConstraintGroupSolver | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |