UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDJointContainerSolver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
10
11namespace Chaos
12{
13 namespace Private
14 {
24 template <typename JointSolverType>
26 {
27 public:
30
31 // FConstraintContainerSolver impl
32 virtual int32 GetNumConstraints() const override final { return ContainerIndices.Num();}
33 virtual void Reset(const int32 InMaxCollisions) override final;
34 virtual void AddConstraints() override final;
36 virtual void AddBodies(FSolverBodyContainer& SolverBodyContainer) override final;
37 virtual void GatherInput(const FReal Dt) override final;
38 virtual void GatherInput(const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final;
39 virtual void ScatterOutput(const FReal Dt) override final;
40 virtual void ScatterOutput(const FReal Dt, const int32 BeginIndex, const int32 EndIndex) override final;
41 virtual void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
42 virtual void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
43 virtual void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final;
44
45 FPBDJointConstraints& GetContainer() const { return ConstraintContainer; }
46 const FPBDJointSolverSettings& GetSettings() const { return ConstraintContainer.GetSettings(); }
47 const FPBDJointSettings& GetConstraintSettings(const int32 InConstraintIndex) const { return ConstraintContainer.GetConstraintSettings(ContainerIndices[InConstraintIndex]);}
49 private:
50 bool UseLinearSolver() const;
51 void AddConstraint(const int32 InContainerConstraintIndex);
52 void ResizeSolverArrays();
53 void ApplyLinearProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts);
54 void ApplyNonLinearProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts);
55
56 FPBDJointConstraints& ConstraintContainer;
57
58 TArray<JointSolverType> ConstraintSolvers;
59
60 // Index remapping from respective internal index of each array to index in the joint container [0,NumJointsInWorld)
61 TArray<int32> ContainerIndices;
62 };
63
64 }
65}
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
Definition PBDJointConstraints.h:168
CHAOS_API const FPBDJointSolverSettings & GetSettings() const
Definition PBDJointConstraints.cpp:596
CHAOS_API const FPBDJointSettings & GetConstraintSettings(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:920
Definition PBDJointConstraintTypes.h:114
Definition PBDJointConstraintTypes.h:219
Definition SolverBodyContainer.h:37
Definition IslandManager.h:151
Definition PBDJointContainerSolver.h:26
virtual int32 GetNumConstraints() const override final
Definition PBDJointContainerSolver.h:32
~TPBDJointContainerSolver()
Definition PBDJointContainerSolver.cpp:120
virtual void GatherInput(const FReal Dt) override final
Definition PBDJointContainerSolver.cpp:210
int32 GetContainerConstraintIndex(const int32 InConstraintIndex) const
Definition PBDJointContainerSolver.h:48
FPBDJointConstraints & GetContainer() const
Definition PBDJointContainerSolver.h:45
virtual void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDJointContainerSolver.cpp:360
const FPBDJointSolverSettings & GetSettings() const
Definition PBDJointContainerSolver.h:46
virtual void ScatterOutput(const FReal Dt) override final
Definition PBDJointContainerSolver.cpp:240
virtual void AddBodies(FSolverBodyContainer &SolverBodyContainer) override final
Definition PBDJointContainerSolver.cpp:204
const FPBDJointSettings & GetConstraintSettings(const int32 InConstraintIndex) const
Definition PBDJointContainerSolver.h:47
virtual void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDJointContainerSolver.cpp:325
virtual void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts) override final
Definition PBDJointContainerSolver.cpp:366
virtual void AddConstraints() override final
Definition PBDJointContainerSolver.cpp:132
Definition ArrayView.h:139
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
Definition OverriddenPropertySet.cpp:45