UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDConstraintBaseData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
7#include "Chaos/Core.h"
8#include "Chaos/Transform.h"
9#include "Chaos/Vector.h"
10
13#include "Properties.h"
14
15namespace Chaos
16{
17
26
27#define CONSTRAINT_JOINT_PROPERPETY_IMPL(TYPE, FNAME, ENAME, VNAME)\
28 void Set##FNAME(TYPE InValue){ if (InValue != VNAME){VNAME = InValue;MDirtyFlags.MarkDirty(ENAME);SetProxy(Proxy);}}\
29 TYPE Get##FNAME() const{return VNAME;}\
30
31#define CONSTRAINT_JOINT_PROPERPETY_IMPL2(TYPE, FNAME, PROP, VNAME)\
32 void Set##FNAME(TYPE InValue){ PROP.Modify(/*bInvalidate=*/true, DirtyFlags, Proxy, [&InValue](auto& Data) { Data.VNAME = InValue; }); }\
33 TYPE Get##FNAME() const{return PROP.Read().VNAME;}\
34
36{
37public:
38 virtual ~FConstraintBase() {}
39
41
43
44 EConstraintType GetType() const { return Type; }
45 bool IsType(EConstraintType InType) { return (Type == InType); }
46 CHAOS_API bool IsValid() const;
47
48 bool IsDirty() const { return DirtyFlags.IsDirty(); }
52
53 //template <typename CastType>
54 //static CastType CastTo<CastType>(EConstraintType InType) { (InType == Type) ? static_cast<CastType*> : nullptr; }
55
56 template<typename T = IPhysicsProxyBase> T* GetProxy() { return static_cast<T*>(Proxy); }
57
59
66
67protected:
71
73};
74
75} // Chaos
76
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 PBDConstraintBaseData.h:36
bool IsDirty() const
Definition PBDConstraintBaseData.h:48
EConstraintType Type
Definition PBDConstraintBaseData.h:68
class IPhysicsProxyBase * Proxy
Definition PBDConstraintBaseData.h:69
void SyncRemoteData(FDirtyPropertiesManager &Manager, int32 DataIdx, FDirtyChaosProperties &RemoteData)
Definition PBDConstraintBaseData.h:60
EConstraintType GetType() const
Definition PBDConstraintBaseData.h:44
virtual ~FConstraintBase()
Definition PBDConstraintBaseData.h:38
virtual void SyncRemoteDataImp(FDirtyPropertiesManager &Manager, int32 DataIdx, FDirtyChaosProperties &RemoteData)=0
TVector< TGeometryParticleHandle< FReal, 3 > *, 2 > FParticleHandlePair
Definition PBDConstraintBaseData.h:40
const FDirtyChaosPropertyFlags & GetDirtyFlags() const
Definition PBDConstraintBaseData.h:51
T * GetProxy()
Definition PBDConstraintBaseData.h:56
FDirtyChaosPropertyFlags DirtyFlags
Definition PBDConstraintBaseData.h:70
void ClearDirtyFlags()
Definition PBDConstraintBaseData.h:50
bool IsDirty(const EChaosPropertyFlags CheckBits) const
Definition PBDConstraintBaseData.h:49
CHAOS_API bool IsValid() const
Definition PBDConstraintBaseData.cpp:13
CHAOS_API void SetProxy(IPhysicsProxyBase *InProxy)
Definition PBDConstraintBaseData.cpp:18
bool IsType(EConstraintType InType)
Definition PBDConstraintBaseData.h:45
Definition ParticleDirtyFlags.h:1129
Definition ParticleDirtyFlags.h:1039
bool IsDirty() const
Definition ParticleDirtyFlags.h:922
void Clear()
Definition ParticleDirtyFlags.h:947
Definition Vector.h:41
Definition PhysicsProxyBase.h:97
Definition SkeletalMeshComponent.h:307
EChaosPropertyFlags
Definition ParticleDirtyFlags.h:869
EConstraintType
Definition PBDConstraintBaseData.h:19