UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 > Class Template Reference

#include <ABTestingConstraintContainerSolver.h>

+ Inheritance diagram for Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >:

Public Types

enum class  ESolverPhase {
  PreApplyPositionConstraints , PostApplyPositionConstraints , PreApplyVelocityConstraints , PostApplyVelocityConstraints ,
  PreApplyProjectionConstraints , PostApplyProjectionConstraints
}
 
using FContainerSolverTypeA = T1
 
using FContainerSolverTypeB = T2
 
using FABTestFunctor = std::function< void(const ESolverPhase Phase, const FContainerSolverTypeA &SolverA, const FContainerSolverTypeB &SolverB, const FSolverBodyContainer &SolverBodyContainerA, const FSolverBodyContainer &SolverBodyContainerB)>
 

Public Member Functions

 TABTestingConstraintContainerSolver (TUniquePtr< FContainerSolverTypeA > &&InSolverA, TUniquePtr< FContainerSolverTypeB > &&InSolverB, const int32 InPriority, const FABTestFunctor &InABTestFunctor)
 
virtual void Reset (const int32 MaxConstraints) override final
 
virtual int32 GetNumConstraints () const override final
 
virtual void AddConstraints () override final
 
virtual void AddConstraints (const TArrayView< Private::FPBDIslandConstraint * > &Constraints) override final
 
virtual void AddBodies (FSolverBodyContainer &SolverBodyContainer) override final
 
virtual void GatherInput (const FReal Dt) override final
 
virtual void GatherInput (const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final
 
virtual void ScatterOutput (const FReal Dt) override final
 
virtual void ScatterOutput (const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final
 
virtual void PreApplyPositionConstraints (const FReal Dt) override final
 
virtual void ApplyPositionConstraints (const FReal Dt, const int32 It, const int32 NumIts) override final
 
virtual void PreApplyVelocityConstraints (const FReal Dt) override final
 
virtual void ApplyVelocityConstraints (const FReal Dt, const int32 It, const int32 NumIts) override final
 
virtual void PreApplyProjectionConstraints (const FReal Dt) override final
 
virtual void ApplyProjectionConstraints (const FReal Dt, const int32 It, const int32 NumIts) override final
 
- Public Member Functions inherited from Chaos::FConstraintContainerSolver
 FConstraintContainerSolver (const int32 InPriority)
 
virtual ~FConstraintContainerSolver ()
 
void SetPriority (const int32 InPriority)
 
int32 GetPriority () const
 

Protected Member Functions

void CallABTestFunctor (const ESolverPhase Phase)
 

Protected Attributes

TUniquePtr< FContainerSolverTypeASolverA
 
TUniquePtr< FContainerSolverTypeBSolverB
 
FSolverBodyContainerSolverBodyContainerA
 
FSolverBodyContainer SolverBodyContainerB
 
FABTestFunctor ABTestFunctor
 

Detailed Description

template<typename T1, typename T2>
class Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >

Used for testing a new solver that is supposed to produce the same output as anotehr solver. E.g., for testing the Simd version of a solver against the non-simd version.

The first solver passed in is assumed to be the reference - its results will be used to generate the outputs. The second solver results will be compared and discarded.

Member Typedef Documentation

◆ FABTestFunctor

◆ FContainerSolverTypeA

template<typename T1 , typename T2 >
using Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::FContainerSolverTypeA = T1

◆ FContainerSolverTypeB

template<typename T1 , typename T2 >
using Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::FContainerSolverTypeB = T2

Member Enumeration Documentation

◆ ESolverPhase

Enumerator
PreApplyPositionConstraints 
PostApplyPositionConstraints 
PreApplyVelocityConstraints 
PostApplyVelocityConstraints 
PreApplyProjectionConstraints 
PostApplyProjectionConstraints 

Constructor & Destructor Documentation

◆ TABTestingConstraintContainerSolver()

template<typename T1 , typename T2 >
Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::TABTestingConstraintContainerSolver ( TUniquePtr< FContainerSolverTypeA > &&  InSolverA,
TUniquePtr< FContainerSolverTypeB > &&  InSolverB,
const int32  InPriority,
const FABTestFunctor InABTestFunctor 
)
inline

Member Function Documentation

◆ AddBodies()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::AddBodies ( FSolverBodyContainer SolverBodyContainer)
inlinefinaloverridevirtual

Add all the required bodies to the body container (required for the constraints added with AddConstraints)

Implements Chaos::FConstraintContainerSolver.

◆ AddConstraints() [1/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::AddConstraints ( )
inlinefinaloverridevirtual

RBAN API. Add all (active) constraints to the solver.

Implements Chaos::FConstraintContainerSolver.

◆ AddConstraints() [2/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::AddConstraints ( const TArrayView< Private::FPBDIslandConstraint * > &  Constraints)
inlinefinaloverridevirtual

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.

Implements Chaos::FConstraintContainerSolver.

◆ ApplyPositionConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::ApplyPositionConstraints ( const FReal  Dt,
const int32  It,
const int32  NumIts 
)
inlinefinaloverridevirtual

Apply the position solve to all constraints in the container

Implements Chaos::FConstraintContainerSolver.

◆ ApplyProjectionConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::ApplyProjectionConstraints ( const FReal  Dt,
const int32  It,
const int32  NumIts 
)
inlinefinaloverridevirtual

Apply the projection solve to all constraints in the container

Implements Chaos::FConstraintContainerSolver.

◆ ApplyVelocityConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::ApplyVelocityConstraints ( const FReal  Dt,
const int32  It,
const int32  NumIts 
)
inlinefinaloverridevirtual

Apply the velocity solve to all constraints in the container

Implements Chaos::FConstraintContainerSolver.

◆ CallABTestFunctor()

template<typename T1 , typename T2 >
void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::CallABTestFunctor ( const ESolverPhase  Phase)
inlineprotected

◆ GatherInput() [1/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::GatherInput ( const FReal  Dt)
inlinefinaloverridevirtual

◆ GatherInput() [2/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::GatherInput ( const FReal  Dt,
const int32  BeginIndex,
const int32  EndIndex 
)
inlinefinaloverridevirtual

◆ GetNumConstraints()

template<typename T1 , typename T2 >
virtual int32 Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::GetNumConstraints ( ) const
inlinefinaloverridevirtual

◆ PreApplyPositionConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::PreApplyPositionConstraints ( const FReal  Dt)
inlinefinaloverridevirtual

Reimplemented from Chaos::FConstraintContainerSolver.

◆ PreApplyProjectionConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::PreApplyProjectionConstraints ( const FReal  Dt)
inlinefinaloverridevirtual

Reimplemented from Chaos::FConstraintContainerSolver.

◆ PreApplyVelocityConstraints()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::PreApplyVelocityConstraints ( const FReal  Dt)
inlinefinaloverridevirtual

Reimplemented from Chaos::FConstraintContainerSolver.

◆ Reset()

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::Reset ( const int32  MaxConstraints)
inlinefinaloverridevirtual

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).

Implements Chaos::FConstraintContainerSolver.

◆ ScatterOutput() [1/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::ScatterOutput ( const FReal  Dt)
inlinefinaloverridevirtual

◆ ScatterOutput() [2/2]

template<typename T1 , typename T2 >
virtual void Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::ScatterOutput ( const FReal  Dt,
const int32  BeginIndex,
const int32  EndIndex 
)
inlinefinaloverridevirtual

Member Data Documentation

◆ ABTestFunctor

◆ SolverA

◆ SolverB

◆ SolverBodyContainerA

template<typename T1 , typename T2 >
FSolverBodyContainer* Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::SolverBodyContainerA
protected

◆ SolverBodyContainerB

template<typename T1 , typename T2 >
FSolverBodyContainer Chaos::Private::TABTestingConstraintContainerSolver< T1, T2 >::SolverBodyContainerB
protected

The documentation for this class was generated from the following file: