UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDLongRangeConstraints.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
6#include "ChaosStats.h"
7
8DECLARE_CYCLE_STAT(TEXT("Chaos PBD Long Range Constraint"), STAT_PBD_LongRange, STATGROUP_Chaos);
9
10namespace Chaos::Softs
11{
12
14{
15public:
17 typedef typename Base::FTether FTether;
18
23
42
65
89
90 virtual ~FPBDLongRangeConstraints() override {}
91
93
96 const TMap<FString, TConstArrayView<FRealSingle>>& WeightMaps,
97 FSolverReal MeshScale);
98
99 template<typename SolverParticlesOrRange>
100 CHAOS_API void Apply(SolverParticlesOrRange& Particles, const FSolverReal Dt) const;
101
104
105private:
108 using Base::Tethers;
109 using Base::Stiffness;
110 using Base::TetherScale;
113
116};
117
118} // End namespace Chaos::Softs
119
120#if !defined(CHAOS_LONG_RANGE_ISPC_ENABLED_DEFAULT)
121#define CHAOS_LONG_RANGE_ISPC_ENABLED_DEFAULT 1
122#endif
123
124#if !defined(USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
125#define USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING 0
126#endif
127
128// Support run-time toggling on supported platforms in non-shipping configurations
129#if !INTEL_ISPC || (UE_BUILD_SHIPPING && !USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
130static constexpr bool bChaos_LongRange_ISPC_Enabled = INTEL_ISPC && CHAOS_LONG_RANGE_ISPC_ENABLED_DEFAULT;
131#else
132extern CHAOS_API bool bChaos_LongRange_ISPC_Enabled;
133#endif
#define UE_CHAOS_DECLARE_INDEXED_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:893
@ ForceInit
Definition CoreMiscDefines.h:155
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_CYCLE_STAT(CounterName, StatId, GroupId)
Definition Stats.h:669
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CHAOS_LONG_RANGE_ISPC_ENABLED_DEFAULT
Definition PBDLongRangeConstraints.h:121
Definition CollectionPropertyFacade.h:49
Definition PBDLongRangeConstraintsBase.h:17
const int32 ParticleOffset
Definition PBDLongRangeConstraintsBase.h:129
static constexpr FSolverReal MaxTetherScale
Definition PBDLongRangeConstraintsBase.h:22
FPBDWeightMap TetherScale
Definition PBDLongRangeConstraintsBase.h:132
const TArray< TConstArrayView< FTether > > & Tethers
Definition PBDLongRangeConstraintsBase.h:128
static constexpr FSolverReal MinTetherScale
Definition PBDLongRangeConstraintsBase.h:21
void SetProperties(const FSolverVec2 &InStiffness, const FSolverVec2 &InTetherScale, FSolverReal MeshScale=(FSolverReal) 1.)
Definition PBDLongRangeConstraintsBase.h:56
const int32 ParticleCount
Definition PBDLongRangeConstraintsBase.h:130
FPBDStiffness Stiffness
Definition PBDLongRangeConstraintsBase.h:131
Definition PBDLongRangeConstraints.h:14
CHAOS_API void Apply(SolverParticlesOrRange &Particles, const FSolverReal Dt) const
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(TetherScale, float)
virtual ~FPBDLongRangeConstraints() override
Definition PBDLongRangeConstraints.h:90
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(TetherStiffness, float)
static bool IsEnabled(const FCollectionPropertyConstFacade &PropertyCollection)
Definition PBDLongRangeConstraints.h:19
FPBDLongRangeConstraints(const FSolverParticlesRange &Particles, const TArray< TConstArrayView< TTuple< int32, int32, FRealSingle > > > &InTethers, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, FSolverReal MeshScale)
Definition PBDLongRangeConstraints.h:24
FPBDLongRangeConstraints(const FSolverParticles &Particles, const int32 InParticleOffset, const int32 InParticleCount, const TArray< TConstArrayView< TTuple< int32, int32, FRealSingle > > > &InTethers, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, FSolverReal MeshScale)
Definition PBDLongRangeConstraints.h:43
CHAOS_API void SetProperties(const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, FSolverReal MeshScale)
Definition PBDLongRangeConstraints.cpp:21
FPBDLongRangeConstraintsBase Base
Definition PBDLongRangeConstraints.h:16
Base::FTether FTether
Definition PBDLongRangeConstraints.h:17
FPBDLongRangeConstraints(const FSolverParticles &Particles, const int32 InParticleOffset, const int32 InParticleCount, const TArray< TConstArrayView< TTuple< int32, int32, FRealSingle > > > &InTethers, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &ScaleMultipliers, const FSolverVec2 &InStiffness=FSolverVec2::UnitVector, const FSolverVec2 &InScale=FSolverVec2::UnitVector, FSolverReal MeshScale=(FSolverReal) 1.)
Definition PBDLongRangeConstraints.h:66
Definition PBDStiffness.h:21
Definition SoftsSolverParticlesRange.h:12
Definition PBDSoftsSolverParticles.h:20
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
Definition Tuple.h:652