UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDNullConstraints.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Declares.h"
7
8
9// @todo(chaos): These classes should be in the unit testing suite, but we must currently explicitly instantiate the ConstraintRules in the Chaos unit
10// because the template code is in a source file. We need to support custom constraints anyway and the NullConstraint could use that when it exists.
11
12namespace Chaos
13{
14 class FPBDNullConstraintHandle;
15 class FPBDNullConstraints;
16
34
38 class FPBDNullConstraints : public TPBDIndexedConstraintContainer<FPBDNullConstraints>
39 {
40 public:
42
44
45 int32 NumConstraints() const { return Constraints.Num(); }
46
47 FPBDNullConstraint& GetConstraint(const int32 ConstraintIndex)
48 {
49 return Constraints[ConstraintIndex];
50 }
51
52 const FPBDNullConstraint& GetConstraint(const int32 ConstraintIndex) const
53 {
54 return Constraints[ConstraintIndex];
55 }
56
58
60 {
61 return Constraints[ConstraintIndex].ConstrainedParticles;
62 }
63
68
73
74 //
75 // FConstraintContainer Implementation
76 //
77 virtual int32 GetNumConstraints() const override final { return NumConstraints(); }
78 virtual void ResetConstraints() override final {}
79 virtual void AddConstraintsToGraph(Private::FPBDIslandManager& IslandManager) override final;
80 virtual void PrepareTick() override final {}
81 virtual void UnprepareTick() override final {}
82
83 //
84 // TSimpleConstraintContainerSolver API - used by RBAN solvers
85 //
86 void AddBodies(FSolverBodyContainer& SolverBodyContainer) {}
87 void GatherInput(const FReal Dt) {}
88 void ScatterOutput(const FReal Dt) {}
89 void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) {}
90 void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) {}
91 void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts) {}
92
93 //
94 // TIndexedConstraintContainerSolver API - used by World solvers
95 //
96 void AddBodies(const TArrayView<int32>& ConstraintIndices, FSolverBodyContainer& SolverBodyContainer) {}
97 void GatherInput(const TArrayView<int32>& ConstraintIndices, const FReal Dt) {}
98 void ScatterOutput(const TArrayView<int32>& ConstraintIndices, const FReal Dt) {}
99 void ApplyPositionConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
100 void ApplyVelocityConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
101 void ApplyProjectionConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
102
106 };
107
108 class FPBDNullConstraintHandle final : public TIndexedContainerConstraintHandle<FPBDNullConstraints>
109 {
110 public:
115
116 virtual void SetEnabled(bool bInEnabled) override
117 {
119 }
120
121 virtual bool IsEnabled() const override
122 {
124 }
125
130
131 virtual bool IsSleeping() const override
132 {
134 }
135
140
142 {
143 static FConstraintHandleTypeID STypeID(TEXT("FPBDNullConstraintHandle"), &FIndexedConstraintHandle::StaticType());
144 return STypeID;
145 }
146 };
147
148
149}
#define TEXT(x)
Definition Platform.h:1272
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
return true
Definition ExternalRpcRegistry.cpp:601
A type id for constraint handles to support safe up/down casting (including intermediate classes in t...
Definition ConstraintHandle.h:49
static const FConstraintHandleTypeID & StaticType()
Definition IndexedConstraintContainer.h:50
int32 GetConstraintIndex() const
Definition IndexedConstraintContainer.h:40
Definition PBDNullConstraints.h:109
virtual void SetIsSleeping(bool bInIsSleeping) override
Definition PBDNullConstraints.h:126
FPBDNullConstraintHandle(FPBDNullConstraints *InConstraintContainer, int32 ConstraintIndex)
Definition PBDNullConstraints.h:111
virtual FParticlePair GetConstrainedParticles() const override
Definition PBDNullConstraints.h:136
virtual bool IsEnabled() const override
Definition PBDNullConstraints.h:121
virtual void SetEnabled(bool bInEnabled) override
Definition PBDNullConstraints.h:116
static const FConstraintHandleTypeID & StaticType()
Definition PBDNullConstraints.h:141
virtual bool IsSleeping() const override
Definition PBDNullConstraints.h:131
A dummy constraint used for unit testing.
Definition PBDNullConstraints.h:21
bool bSleeping
Definition PBDNullConstraints.h:32
FParticlePair ConstrainedParticles
Definition PBDNullConstraints.h:30
bool bEnabled
Definition PBDNullConstraints.h:31
FPBDNullConstraint(const TVec2< FGeometryParticleHandle * > &InConstrainedParticles)
Definition PBDNullConstraints.h:23
Definition PBDNullConstraints.h:39
void ScatterOutput(const FReal Dt)
Definition PBDNullConstraints.h:88
void AddBodies(FSolverBodyContainer &SolverBodyContainer)
Definition PBDNullConstraints.h:86
TArray< FPBDNullConstraint > Constraints
Definition PBDNullConstraints.h:103
void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:89
virtual void ResetConstraints() override final
Definition PBDNullConstraints.h:78
TArray< FPBDNullConstraintHandle * > & GetConstraintHandles()
Definition PBDNullConstraints.h:64
void ApplyVelocityConstraints(const TArrayView< int32 > &ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:100
void AddBodies(const TArrayView< int32 > &ConstraintIndices, FSolverBodyContainer &SolverBodyContainer)
Definition PBDNullConstraints.h:96
virtual void AddConstraintsToGraph(Private::FPBDIslandManager &IslandManager) override final
Definition PBDNullConstraints.cpp:31
FParticlePair GetConstrainedParticles(int32 ConstraintIndex) const
Definition PBDNullConstraints.h:59
FPBDNullConstraints()
Definition PBDNullConstraints.cpp:8
virtual void UnprepareTick() override final
Definition PBDNullConstraints.h:81
void GatherInput(const TArrayView< int32 > &ConstraintIndices, const FReal Dt)
Definition PBDNullConstraints.h:97
void GatherInput(const FReal Dt)
Definition PBDNullConstraints.h:87
void ApplyProjectionConstraints(const TArrayView< int32 > &ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:101
void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:90
void ScatterOutput(const TArrayView< int32 > &ConstraintIndices, const FReal Dt)
Definition PBDNullConstraints.h:98
int32 NumConstraints() const
Definition PBDNullConstraints.h:45
void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:91
FPBDNullConstraintHandle * AddConstraint(const TVec2< FGeometryParticleHandle * > &InConstraintedParticles)
Definition PBDNullConstraints.cpp:13
TConstraintHandleAllocator< FPBDNullConstraints > HandleAllocator
Definition PBDNullConstraints.h:105
const TArray< FPBDNullConstraintHandle * > & GetConstraintHandles() const
Definition PBDNullConstraints.h:69
const FPBDNullConstraint & GetConstraint(const int32 ConstraintIndex) const
Definition PBDNullConstraints.h:52
void ApplyPositionConstraints(const TArrayView< int32 > &ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDNullConstraints.h:99
virtual void PrepareTick() override final
Definition PBDNullConstraints.h:80
FPBDNullConstraint & GetConstraint(const int32 ConstraintIndex)
Definition PBDNullConstraints.h:47
TArray< FPBDNullConstraintHandle * > Handles
Definition PBDNullConstraints.h:104
virtual int32 GetNumConstraints() const override final
Definition PBDNullConstraints.h:77
Definition SolverBodyContainer.h:37
Definition IslandManager.h:453
Definition ConstraintHandle.h:290
Definition IndexedConstraintContainer.h:68
int32 ConstraintIndex
Definition IndexedConstraintContainer.h:59
FConstraintContainer * ConcreteContainer()
Definition IndexedConstraintContainer.h:108
Definition IndexedConstraintContainer.h:268
Definition Vector.h:41
Definition Constraints.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
@ false
Definition radaudio_common.h:23