UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDJointConstraints.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"
5
14
15namespace Chaos
16{
17
18namespace Private
19 {
20 template <typename JointSolverType>
21 class TPBDJointContainerSolver;
22 }
23
27 class FPBDJointConstraintHandle final : public TIndexedContainerConstraintHandle<FPBDJointConstraints>
28 {
29 public:
32
35
36 CHAOS_API void SetConstraintEnabled(bool bEnabled);
37
39
40
41
42 CHAOS_API bool IsConstraintEnabled() const;
43 CHAOS_API bool IsConstraintBroken() const;
52 CHAOS_API float GetLinearViolation() const;
53 CHAOS_API float GetAngularViolation() const;
54
56 const FPBDJointSettings& GetJointSettings() const { return GetSettings(); } //needed for property macros
57
58 void SetJointState(const class FPBDJointState& NewState);
59
60 // Note that this is the "regular" way to change any settings, but note that if it results
61 // in a change of state/mode there may be some overhead. For simple/numerical changes, it
62 // may be faster to call one of the specific "Set" functions.
63 CHAOS_API void SetSettings(const FPBDJointSettings& Settings);
64
65 // Individual properties can be set if the settings don't need to be Sanitized().
66
71
74
77
79 CHAOS_API void SetLinearDriveDamping(const FVec3 Damping);
80 CHAOS_API void SetLinearDriveMaxForce(const FVec3 MaxForce);
82
84 CHAOS_API void SetAngularDriveDamping(const FVec3 Damping);
85 CHAOS_API void SetAngularDriveMaxTorque(const FVec3 MaxTorque);
87
88 CHAOS_API void SetCollisionEnabled(const bool bCollisionEnabled);
90
99 const FVec3 LinearStiffness, const FVec3 LinearDamping, const FVec3 MaxForce,
100 const FVec3 AngularStiffness, const FVec3 AngularDamping, const FVec3 MaxTorque);
101
103
105 {
106 static FConstraintHandleTypeID STypeID(TEXT("FJointConstraintHandle"), &FIndexedConstraintHandle::StaticType());
107 return STypeID;
108 }
109
112
113 CHAOS_API void SetEnabledDuringResim(bool bEnabled);
114 CHAOS_API bool IsEnabledDuringResim() const;
116
117 UE_DEPRECATED(5.2, "No longer used")
119 UE_DEPRECATED(5.2, "No longer used")
121 UE_DEPRECATED(5.2, "No longer used")
123
126
127 protected:
130 private:
131 // Our own direct access to the settings, to modify things that don't need to go through sanitize
132 FPBDJointSettings& GetConstraintSettingsInternal();
133
134 bool bLinearPlasticityInitialized;
135 bool bAngularPlasticityInitialized;
136 };
137
163
168 {
169 public:
171
175
177
179
184
185 /*
186 * Modify the solver settings
187 */
189
194 UE_DEPRECATED(5.5, "No longer used, see per-constraint flag in FPBDJointSettings::bUseLinearSolver")
196
200 void SetUseSimd(const bool bInEnable) { Settings.bUseSimd = bInEnable; }
201
205 void SetSortEnabled(const bool bInEnable) { Settings.bSortEnabled = bInEnable; }
206
211
220
221 void SetConstraintState(int32 ConstraintIndex, const FPBDJointState& InState);
222
226 CHAOS_API void RemoveConstraint(int ConstraintIndex);
228
229 /*
230 * Disconnect the constraints from the attached input particles.
231 * This will set the constrained Particle elements to nullptr and
232 * set the Enable flag to false.
233 *
234 * The constraint is unuseable at this point and pending deletion.
235 */
237
238 /*
239 * Whether the constraint is enabled
240 */
241 CHAOS_API bool IsConstraintEnabled(int32 ConstraintIndex) const;
242
243 /*
244 * Whether the constraint is broken
245 */
246 CHAOS_API bool IsConstraintBroken(int32 ConstraintIndex) const;
247
248 /*
249 * Whether the constraint was broken this frame (transient flag for use by event system)
250 */
251 CHAOS_API bool IsConstraintBreaking(int32 ConstraintIndex) const;
252
253 /*
254 * Clear the transient constraint braking state (called by event system when it has used the flag)
255 */
256 CHAOS_API void ClearConstraintBreaking(int32 ConstraintIndex);
257
258 /*
259 * Whether the constraint was violated beyond a threshold this frame (transient flag for use by event system)
260 */
261 CHAOS_API bool IsConstraintViolating(int32 ConstraintIndex) const;
262
263 /*
264 * Clear the transient constraint violation state (called by event system when it has used the flag)
265 */
266 CHAOS_API void ClearConstraintViolating(int32 ConstraintIndex);
267
268 /*
269 * Whether the drive target has changed
270 */
271 CHAOS_API bool IsDriveTargetChanged(int32 ConstraintIndex) const;
272
273 /*
274 * Clear the drive target state
275 */
276 CHAOS_API void ClearDriveTargetChanged(int32 ConstraintIndex);
277
278 /*
279 * Enable or disable a constraints
280 */
281 CHAOS_API void SetConstraintEnabled(int32 ConstraintIndex, bool bEnabled);
282
283 /*
284 * Set Drive Target Changed State
285 */
286 CHAOS_API void SetDriveTargetChanged(int32 ConstraintIndex, bool bTargetChanged);
287
288 /*
289 * Force a constraints to break
290 */
291 CHAOS_API void BreakConstraint(int32 ConstraintIndex);
292
296 CHAOS_API void FixConstraint(int32 ConstraintIndex);
297
303 CHAOS_API void SetBreakCallback(const FJointBreakCallback& Callback);
304
309
314 {
315 return Handles;
316 }
317
322 {
323 return Handles;
324 }
325
330
335
339 CHAOS_API const FParticlePair& GetConstrainedParticles(int32 ConstraintIndex) const;
340
344 CHAOS_API const FPBDJointSettings& GetConstraintSettings(int32 ConstraintIndex) const;
345
350
355
360
364 CHAOS_API void SetUseLinearSolver(int32 ConstraintIndex, bool InbUseLinearSolver);
365
369 CHAOS_API FVec3 GetConstraintLinearImpulse(int32 ConstraintIndex) const;
370
374 CHAOS_API FVec3 GetConstraintAngularImpulse(int32 ConstraintIndex) const;
375
376 CHAOS_API float GetConstraintLinearViolation(int32 ConstraintIndex) const;
377 CHAOS_API float GetConstraintAngularViolation(int32 ConstraintIndex) const;
378
379 CHAOS_API ESyncState GetConstraintSyncState(int32 ConstraintIndex) const;
380 CHAOS_API void SetConstraintSyncState(int32 ConstraintIndex, ESyncState SyncState);
381
382 CHAOS_API void SetConstraintEnabledDuringResim(int32 ConstraintIndex, bool bEnabled);
383
384 CHAOS_API bool IsConstraintEnabledDuringResim(int32 ConstraintIndex) const;
385
386 CHAOS_API EResimType GetConstraintResimType(int32 ConstraintIndex) const;
387
388 //
389 // FConstraintContainer Implementation
390 //
393 virtual int32 GetNumConstraints() const override final { return NumConstraints(); }
394 virtual void ResetConstraints() override final {}
395 CHAOS_API virtual void AddConstraintsToGraph(Private::FPBDIslandManager& IslandManager) override final;
396 CHAOS_API virtual void PrepareTick() override final;
398
399 // Called by the joint solver at the end of the constraint solver phase
400 CHAOS_API void SetSolverResults(const int32 ConstraintIndex, const FVec3& LinearImpulse, const FVec3& AngularImpulse, const float LinearViolation, const float AngularViolation, const bool bIsBroken, const bool bIsViolating, const FSolverBody* SolverBody0, const FSolverBody* SolverBody1);
401
402 // @todo(chaos): only needed for RBAN, and should be private or moved to the solver
403 CHAOS_API int32 GetConstraintIsland(int32 ConstraintIndex) const;
404 CHAOS_API int32 GetConstraintLevel(int32 ConstraintIndex) const;
405 CHAOS_API int32 GetConstraintColor(int32 ConstraintIndex) const;
406
407 // This will force a re-evaluation of the sorting of constraints - needed if objects switch
408 // between kinematic/dynamic, for example.
409 void MarkJointsDirty() { bJointsDirty = true; }
410
411 // @todo(chaos): functionality no longer supported here (see TPBDJointContainerSolver)
412 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
413 void AddBodies(FSolverBodyContainer& SolverBodyContainer) {}
414 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
416 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
418 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
419 void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts) {}
420 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
421 void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts) {}
422 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
424 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
425 void AddBodies(const TArrayView<int32>& ConstraintIndices, FSolverBodyContainer& SolverBodyContainer) {}
426 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
427 void GatherInput(const TArrayView<int32>& ConstraintIndices, const FReal Dt) {}
428 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
429 void ScatterOutput(const TArrayView<int32>& ConstraintIndices, const FReal Dt) {}
430 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
431 void ApplyPositionConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
432 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
433 void ApplyVelocityConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
434 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
435 void ApplyProjectionConstraints(const TArrayView<int32>& ConstraintIndices, const FReal Dt, const int32 It, const int32 NumIts) {}
436 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
437 void GatherInput(const int32 ConstraintIndex, const FReal Dt) {}
438 UE_DEPRECATED(5.2, "Joint Solver API moved to TPBDJointContainerSolver")
439 void ScatterOutput(const int32 ConstraintIndex, const FReal Dt) {}
440
441 bool GetUseLinearSolver() { return bUseLinearSolver; }
442
443 void SetUseLinearSolver(const bool bUseLinearSolverIn) { bUseLinearSolver = bUseLinearSolverIn; }
444
445 private:
447
449
450 CHAOS_API void GetConstrainedParticleIndices(const int32 ConstraintIndex, int32& Index0, int32& Index1) const;
451 CHAOS_API void CalculateConstraintSpace(int32 ConstraintIndex, FVec3& OutX0, FMatrix33& OutR0, FVec3& OutX1, FMatrix33& OutR1) const;
452
453 CHAOS_API void ColorConstraints();
454 CHAOS_API void SortConstraints();
455
456 CHAOS_API bool ShouldBeInGraph(const int32 ConstraintIndex) const;
457
458 CHAOS_API void ApplyPlasticityLimits(const int32 ConstraintIndex, const FSolverBody& SolverBody0, const FSolverBody& SolverBody1);
459
460 CHAOS_API void SetConstraintBroken(int32 ConstraintIndex, bool bBroken);
461 CHAOS_API void SetConstraintBreaking(int32 ConstraintIndex, bool bBreaking);
462
464
466 TArray<FParticlePair> ConstraintParticles;
467 TArray<FPBDJointState> ConstraintStates;
468
469 FHandles Handles;
470 FConstraintHandleAllocator HandleAllocator;
471 bool bJointsDirty;
472
473 FJointBreakCallback BreakCallback;
474
475 bool bUseLinearSolver;
476
477 };
478
491
492
493}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#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
Definition ChaosConstraintSettings.h:16
A type id for constraint handles to support safe up/down casting (including intermediate classes in t...
Definition ConstraintHandle.h:49
FPBDConstraintContainer * ConstraintContainer
Definition ConstraintHandle.h:213
static const FConstraintHandleTypeID & StaticType()
Definition IndexedConstraintContainer.h:50
Definition PBDConstraintContainer.h:19
Definition PBDJointConstraints.h:28
CHAOS_API void SetParentInvMassScale(const FReal ParentInvMassScale)
Definition PBDJointConstraints.cpp:253
CHAOS_API void SetAngularDrivePositionTarget(const FQuat Target)
Definition PBDJointConstraints.cpp:193
CHAOS_API void SetAngularDriveMaxTorque(const FVec3 MaxTorque)
Definition PBDJointConstraints.cpp:238
void SetJointState(const class FPBDJointState &NewState)
Definition PBDJointConstraints.cpp:289
CHAOS_API void ClearDriveTargetChanged()
Definition PBDJointConstraints.cpp:105
CHAOS_API int32 GetConstraintColor() const
Definition PBDJointConstraints.cpp:70
CHAOS_API bool IsConstraintBroken() const
Definition PBDJointConstraints.cpp:75
CHAOS_API const FPBDJointSettings & GetSettings() const
Definition PBDJointConstraints.cpp:283
CHAOS_API FVec3 GetLinearImpulse() const
Definition PBDJointConstraints.cpp:115
CHAOS_API bool IsEnabledDuringResim() const
Definition PBDJointConstraints.cpp:150
CHAOS_API void CalculateConstraintSpace(FVec3 &OutXa, FMatrix33 &OutRa, FVec3 &OutXb, FMatrix33 &OutRb) const
Definition PBDJointConstraints.cpp:52
CHAOS_API void SetLinearDriveVelocityTarget(const FVec3 Target)
Definition PBDJointConstraints.cpp:198
CHAOS_API void SetConstraintEnabled(bool bEnabled)
Definition PBDJointConstraints.cpp:327
CHAOS_API void SetParentConnectorLocation(const FVec3 Location)
Definition PBDJointConstraints.cpp:168
CHAOS_API float GetAngularViolation() const
Definition PBDJointConstraints.cpp:130
FPBDJointConstraintHandle()
Definition PBDJointConstraints.cpp:36
CHAOS_API bool IsConstraintBreaking() const
Definition PBDJointConstraints.cpp:80
const FPBDJointSettings & GetJointSettings() const
Definition PBDJointConstraints.h:56
CHAOS_API float GetLinearViolation() const
Definition PBDJointConstraints.cpp:125
CHAOS_API void SetLinearDriveForceMode(EJointForceMode ForceMode)
Definition PBDJointConstraints.cpp:223
CHAOS_API void SetLinearDriveMaxForce(const FVec3 MaxForce)
Definition PBDJointConstraints.cpp:218
CHAOS_API void SetAngularDriveVelocityTarget(const FVec3 Target)
Definition PBDJointConstraints.cpp:203
bool IsInContainer(FPBDConstraintContainer *TestContainer)
Definition PBDJointConstraints.h:125
CHAOS_API bool IsConstraintEnabled() const
Definition PBDJointConstraints.cpp:110
CHAOS_API EResimType ResimType() const
Definition PBDJointConstraints.cpp:155
CHAOS_API void ClearConstraintBreaking()
Definition PBDJointConstraints.cpp:85
static const FConstraintHandleTypeID & StaticType()
Definition PBDJointConstraints.h:104
CHAOS_API void SetLinearDrivePositionTarget(const FVec3 Target)
Definition PBDJointConstraints.cpp:188
CHAOS_API ESyncState SyncState() const
Definition PBDJointConstraints.cpp:135
CHAOS_API void SetDriveParams(const FVec3 LinearStiffness, const FVec3 LinearDamping, const FVec3 MaxForce, const FVec3 AngularStiffness, const FVec3 AngularDamping, const FVec3 MaxTorque)
Definition PBDJointConstraints.cpp:258
CHAOS_API void SetLinearDriveDamping(const FVec3 Damping)
Definition PBDJointConstraints.cpp:213
void SetConstraintContainer(FPBDConstraintContainer *NewConstraintContainer)
Definition PBDJointConstraints.h:124
CHAOS_API void SetLinearDriveStiffness(const FVec3 Stiffness)
Definition PBDJointConstraints.cpp:208
CHAOS_API bool IsConstraintViolating() const
Definition PBDJointConstraints.cpp:90
CHAOS_API int32 GetConstraintLevel() const
Definition PBDJointConstraints.cpp:64
CHAOS_API void SetEnabledDuringResim(bool bEnabled)
Definition PBDJointConstraints.cpp:145
CHAOS_API void SetAngularDriveStiffness(const FVec3 Stiffness)
Definition PBDJointConstraints.cpp:228
CHAOS_API void SetSettings(const FPBDJointSettings &Settings)
Definition PBDJointConstraints.cpp:294
CHAOS_API int32 GetConstraintIsland() const
Definition PBDJointConstraints.cpp:58
CHAOS_API TVec2< FGeometryParticleHandle * > GetConstrainedParticles() const override final
Definition PBDJointConstraints.cpp:322
CHAOS_API bool IsDriveTargetChanged() const
Definition PBDJointConstraints.cpp:100
CHAOS_API void SetChildConnectorRotation(const FQuat Rotation)
Definition PBDJointConstraints.cpp:183
CHAOS_API void SetAngularDriveForceMode(EJointForceMode ForceMode)
Definition PBDJointConstraints.cpp:243
CHAOS_API FVec3 GetAngularImpulse() const
Definition PBDJointConstraints.cpp:120
CHAOS_API void SetAngularDriveDamping(const FVec3 Damping)
Definition PBDJointConstraints.cpp:233
CHAOS_API void SetSyncState(ESyncState SyncState)
Definition PBDJointConstraints.cpp:140
CHAOS_API void ClearConstraintViolating()
Definition PBDJointConstraints.cpp:95
CHAOS_API void SetParentConnectorRotation(const FQuat Rotation)
Definition PBDJointConstraints.cpp:173
CHAOS_API void SetChildConnectorLocation(const FVec3 Location)
Definition PBDJointConstraints.cpp:178
CHAOS_API void SetCollisionEnabled(const bool bCollisionEnabled)
Definition PBDJointConstraints.cpp:248
Definition PBDJointConstraints.h:168
FPBDJointConstraintHandle FConstraintContainerHandle
Definition PBDJointConstraints.h:172
CHAOS_API const FParticlePair & GetConstrainedParticles(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:914
void ApplyVelocityConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDJointConstraints.h:421
CHAOS_API const FPBDJointSolverSettings & GetSettings() const
Definition PBDJointConstraints.cpp:596
CHAOS_API void DisconnectConstraints(const TSet< TGeometryParticleHandle< FReal, 3 > * > &RemovedParticles)
Definition PBDJointConstraints.cpp:704
virtual int32 GetNumConstraints() const override final
Definition PBDJointConstraints.h:393
CHAOS_API void ClearBreakCallback()
Definition PBDJointConstraints.cpp:896
friend class FPBDJointConstraintHandle
Definition PBDJointConstraints.h:446
void SetConstraintState(int32 ConstraintIndex, const FPBDJointState &InState)
Definition PBDJointConstraints.cpp:664
CHAOS_API float GetConstraintLinearViolation(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:974
CHAOS_API void SetConstraintSettings(int32 ConstraintIndex, const FPBDJointSettings &InConstraintSettings)
Definition PBDJointConstraints.cpp:926
CHAOS_API void SetUseLinearSolver(int32 ConstraintIndex, bool InbUseLinearSolver)
Definition PBDJointConstraints.cpp:942
CHAOS_API void SetConstraintSyncState(int32 ConstraintIndex, ESyncState SyncState)
Definition PBDJointConstraints.cpp:989
virtual CHAOS_API TUniquePtr< FConstraintContainerSolver > CreateGroupSolver(const int32 Priority) override final
Definition PBDJointConstraints.cpp:584
virtual CHAOS_API ~FPBDJointConstraints()
Definition PBDJointConstraints.cpp:568
CHAOS_API bool IsConstraintViolating(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:811
CHAOS_API EResimType GetConstraintResimType(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:1004
void ApplyProjectionConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDJointConstraints.h:423
void ScatterOutput(const FReal Dt)
Definition PBDJointConstraints.h:417
CHAOS_API FConstraintContainerHandle * AddConstraint(const FParticlePair &InConstrainedParticles, const FRigidTransform3 &WorldConstraintFrame)
Definition PBDJointConstraints.cpp:622
CHAOS_API bool IsConstraintBroken(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:796
CHAOS_API void SetLinearDrivePositionTarget(int32 ConstraintIndex, FVec3 InLinearDrivePositionTarget)
Definition PBDJointConstraints.cpp:932
CHAOS_API int32 GetConstraintIsland(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:947
bool GetUseLinearSolver()
Definition PBDJointConstraints.h:441
virtual CHAOS_API void AddConstraintsToGraph(Private::FPBDIslandManager &IslandManager) override final
Definition PBDJointConstraints.cpp:1049
virtual CHAOS_API TUniquePtr< FConstraintContainerSolver > CreateSceneSolver(const int32 Priority) override final
Definition PBDJointConstraints.cpp:572
CHAOS_API FVec3 GetConstraintLinearImpulse(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:964
CHAOS_API void SetConstraintEnabled(int32 ConstraintIndex, bool bEnabled)
Definition PBDJointConstraints.cpp:831
void ApplyPositionConstraints(const FReal Dt, const int32 It, const int32 NumIts)
Definition PBDJointConstraints.h:419
CHAOS_API int32 GetConstraintLevel(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:953
const FHandles & GetConstConstraintHandles() const
Definition PBDJointConstraints.h:321
CHAOS_API void FixConstraint(int32 ConstraintIndex)
Definition PBDJointConstraints.cpp:883
CHAOS_API void SetAngularDrivePositionTarget(int32 ConstraintIndex, FRotation3 InAngularDrivePositionTarget)
Definition PBDJointConstraints.cpp:937
virtual CHAOS_API void UnprepareTick() override final
Definition PBDJointConstraints.cpp:1025
CHAOS_API void SetSettings(const FPBDJointSolverSettings &InSettings)
Definition PBDJointConstraints.cpp:602
CHAOS_API const FPBDJointSettings & GetConstraintSettings(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:920
void RemoveConstraints(const TSet< TGeometryParticleHandle< FReal, 3 > * > &RemovedParticles)
Definition PBDJointConstraints.h:227
CHAOS_API void ClearConstraintViolating(int32 ConstraintIndex)
Definition PBDJointConstraints.cpp:816
void SetUseSimd(const bool bInEnable)
Definition PBDJointConstraints.h:200
void SetUseLinearJointSolver(const bool bInEnable)
Definition PBDJointConstraints.h:195
CHAOS_API int32 GetConstraintColor(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:959
void GatherInput(const FReal Dt)
Definition PBDJointConstraints.h:415
CHAOS_API void SetBreakCallback(const FJointBreakCallback &Callback)
Definition PBDJointConstraints.cpp:890
virtual void ResetConstraints() override final
Definition PBDJointConstraints.h:394
CHAOS_API const FConstraintContainerHandle * GetConstraintHandle(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:902
CHAOS_API ESyncState GetConstraintSyncState(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:984
void SetSortEnabled(const bool bInEnable)
Definition PBDJointConstraints.h:205
CHAOS_API bool IsDriveTargetChanged(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:821
CHAOS_API FVec3 GetConstraintAngularImpulse(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:969
CHAOS_API void SetSolverResults(const int32 ConstraintIndex, const FVec3 &LinearImpulse, const FVec3 &AngularImpulse, const float LinearViolation, const float AngularViolation, const bool bIsBroken, const bool bIsViolating, const FSolverBody *SolverBody0, const FSolverBody *SolverBody1)
Definition PBDJointConstraints.cpp:1070
CHAOS_API float GetConstraintAngularViolation(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:979
void AddBodies(FSolverBodyContainer &SolverBodyContainer)
Definition PBDJointConstraints.h:413
CHAOS_API bool IsConstraintEnabled(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:791
CHAOS_API int32 NumConstraints() const
Definition PBDJointConstraints.cpp:608
virtual CHAOS_API void PrepareTick() override final
Definition PBDJointConstraints.cpp:1009
CHAOS_API void ClearDriveTargetChanged(int32 ConstraintIndex)
Definition PBDJointConstraints.cpp:826
CHAOS_API bool IsConstraintEnabledDuringResim(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:999
CHAOS_API void SetConstraintEnabledDuringResim(int32 ConstraintIndex, bool bEnabled)
Definition PBDJointConstraints.cpp:994
void SetUseLinearSolver(const bool bUseLinearSolverIn)
Definition PBDJointConstraints.h:443
CHAOS_API void BreakConstraint(int32 ConstraintIndex)
Definition PBDJointConstraints.cpp:872
CHAOS_API FPBDJointConstraints()
Definition PBDJointConstraints.cpp:560
CHAOS_API void ClearConstraintBreaking(int32 ConstraintIndex)
Definition PBDJointConstraints.cpp:806
CHAOS_API bool IsConstraintBreaking(int32 ConstraintIndex) const
Definition PBDJointConstraints.cpp:801
void MarkJointsDirty()
Definition PBDJointConstraints.h:409
CHAOS_API void SetDriveTargetChanged(int32 ConstraintIndex, bool bTargetChanged)
Definition PBDJointConstraints.cpp:867
FHandles & GetConstraintHandles()
Definition PBDJointConstraints.h:313
CHAOS_API void RemoveConstraint(int ConstraintIndex)
Definition PBDJointConstraints.cpp:669
Definition PBDJointConstraintTypes.h:114
Definition PBDJointConstraintTypes.h:219
bool bUseSimd
Definition PBDJointConstraintTypes.h:247
bool bSortEnabled
Definition PBDJointConstraintTypes.h:250
Definition PBDJointConstraints.h:142
float LinearViolation
Definition PBDJointConstraints.h:157
int32 Level
Definition PBDJointConstraints.h:147
bool bEnabledDuringResim
Definition PBDJointConstraints.h:161
bool bDriveTargetChanged
Definition PBDJointConstraints.h:154
CHAOS_API FPBDJointState()
Definition PBDJointConstraints.cpp:491
FVec3 AngularImpulse
Definition PBDJointConstraints.h:156
EResimType ResimType
Definition PBDJointConstraints.h:159
FVec3 LinearImpulse
Definition PBDJointConstraints.h:155
ESyncState SyncState
Definition PBDJointConstraints.h:160
int32 Color
Definition PBDJointConstraints.h:148
bool bBreaking
Definition PBDJointConstraints.h:152
bool bDisabled
Definition PBDJointConstraints.h:150
int32 Island
Definition PBDJointConstraints.h:146
float AngularViolation
Definition PBDJointConstraints.h:158
int32 IslandSize
Definition PBDJointConstraints.h:149
bool bBroken
Definition PBDJointConstraints.h:151
bool bViolating
Definition PBDJointConstraints.h:153
Definition SolverBodyContainer.h:37
Definition SolverBody.h:99
Definition IslandManager.h:453
Definition ParticleHandle.h:436
Definition IndexedConstraintContainer.h:68
int32 ConstraintIndex
Definition IndexedConstraintContainer.h:59
FConstraintContainer * ConcreteContainer()
Definition IndexedConstraintContainer.h:108
Definition ArrayView.h:139
Definition UniquePtr.h:107
Definition SkeletalMeshComponent.h:307
ESyncState
Definition GeometryParticlesfwd.h:29
EResimType
Definition GeometryParticles.h:143
FRealDouble FReal
Definition Real.h:22
EJointForceMode
Definition PBDJointConstraintTypes.h:30
Definition OverriddenPropertySet.cpp:45
Definition PBDJointConstraints.h:480
FPBDJointConstraints NonLinearConstraints
Definition PBDJointConstraints.h:489
CHAOS_API void MergeLinearConstraintsIntoNonLinearConstraints()
Definition PBDJointConstraints.cpp:1423
CHAOS_API FPBDJointCombinedConstraints()
Definition PBDJointConstraints.cpp:1367
void ConvertLinearConstraintToNonLinear(const int32 LinearConstraintIndex)
Definition PBDJointConstraints.cpp:1374
CHAOS_API void MergeNonLinearConstraintsIntoLinearConstraints()
Definition PBDJointConstraints.cpp:1431
void ConvertNonLinearConstraintToLinear(const int32 NonLinearConstraintIndex)
Definition PBDJointConstraints.cpp:1399
int32 NumConstraints()
Definition PBDJointConstraints.h:486
FPBDJointConstraints LinearConstraints
Definition PBDJointConstraints.h:488