13#include "ConstraintInstance.generated.h"
29 struct FSerializedDataBuffer;
62 float ProjectionLinearTolerance;
66 float ProjectionAngularTolerance;
70 float ProjectionLinearAlpha;
74 float ProjectionAngularAlpha;
82 float ShockPropagationAlpha;
86 float LinearBreakThreshold;
90 float LinearPlasticityThreshold;
94 float AngularBreakThreshold;
98 float AngularPlasticityThreshold;
101 UPROPERTY(EditAnywhere, AdvancedDisplay, Category =
Linear, meta = (ClampMin = "0.0"))
102 float ContactTransferScale;
114 UPROPERTY(EditAnywhere, Category = Constraint)
118 UPROPERTY(EditAnywhere, Category = Constraint)
259 UPROPERTY(VisibleAnywhere, Category=Constraint)
268 UPROPERTY(EditAnywhere, Category=Constraint)
275 UPROPERTY(EditAnywhere, Category=Constraint)
280 float LastKnownScale;
287 UPROPERTY(EditAnywhere, Category = Constraint)
291 UPROPERTY(EditAnywhere, Category = Constraint)
295 UPROPERTY(EditAnywhere, Category = Constraint)
301 UPROPERTY(EditAnywhere, Category= Constraint)
305 UPROPERTY(EditAnywhere, Category = Constraint)
309 UPROPERTY(EditAnywhere, Category = Constraint)
324 UPROPERTY(EditAnywhere, Category = Constraint)
346 const
FName& GetChildBoneName()
const {
return ConstraintBone1; }
354 return ProfileInstance.LinearLimit.Limit;
370 return ProfileInstance.LinearLimit.XMotion;
390 return ProfileInstance.LinearLimit.YMotion;
410 return ProfileInstance.LinearLimit.ZMotion;
430 return ProfileInstance.ConeLimit.Swing1Motion;
436 ProfileInstance.ConeLimit.Swing1Motion =
MotionType;
437 UpdateAngularLimit();
446 return ProfileInstance.ConeLimit.Swing1LimitDegrees;
454 ProfileInstance.ConeLimit.Swing1Motion =
MotionType;
456 UpdateAngularLimit();
462 return ProfileInstance.ConeLimit.Swing2Motion;
468 ProfileInstance.ConeLimit.Swing2Motion =
MotionType;
469 UpdateAngularLimit();
478 return ProfileInstance.ConeLimit.Swing2LimitDegrees;
486 ProfileInstance.ConeLimit.Swing2Motion =
MotionType;
488 UpdateAngularLimit();
494 return ProfileInstance.TwistLimit.TwistMotion;
500 ProfileInstance.TwistLimit.TwistMotion =
MotionType;
501 UpdateAngularLimit();
510 return ProfileInstance.TwistLimit.TwistLimitDegrees;
518 ProfileInstance.TwistLimit.TwistMotion =
MotionType;
520 UpdateAngularLimit();
541 ProfileInstance.LinearLimit.bSoftConstraint =
bIsSoftLimit;
542 ProfileInstance.LinearLimit.Stiffness = Stiffness;
543 ProfileInstance.LinearLimit.Damping = Damping;
544 ProfileInstance.LinearLimit.Restitution = Restitution;
545 ProfileInstance.LinearLimit.ContactDistance = ContactDistance;
567 ProfileInstance.TwistLimit.bSoftConstraint =
bIsSoftLimit;
568 ProfileInstance.TwistLimit.Stiffness = Stiffness;
569 ProfileInstance.TwistLimit.Damping = Damping;
570 ProfileInstance.TwistLimit.Restitution = Restitution;
571 ProfileInstance.TwistLimit.ContactDistance = ContactDistance;
572 UpdateAngularLimit();
593 ProfileInstance.ConeLimit.bSoftConstraint =
bIsSoftLimit;
594 ProfileInstance.ConeLimit.Stiffness = Stiffness;
595 ProfileInstance.ConeLimit.Damping = Damping;
596 ProfileInstance.ConeLimit.Restitution = Restitution;
597 ProfileInstance.ConeLimit.ContactDistance = ContactDistance;
598 UpdateAngularLimit();
615 return ProfileInstance.bLinearBreakable;
621 return ProfileInstance.LinearBreakThreshold;
639 return ProfileInstance.bLinearPlasticity;
645 return ProfileInstance.LinearPlasticityThreshold;
651 return ProfileInstance.LinearPlasticityType;
660 UpdateContactTransferScale();
666 return ProfileInstance.ContactTransferScale;
683 return ProfileInstance.bAngularBreakable;
689 return ProfileInstance.AngularBreakThreshold;
706 return ProfileInstance.bAngularPlasticity;
712 return ProfileInstance.AngularPlasticityThreshold;
736 return ProfileInstance.LinearDrive.XDrive.bEnablePositionDrive;
742 return ProfileInstance.LinearDrive.YDrive.bEnablePositionDrive;
748 return ProfileInstance.LinearDrive.ZDrive.bEnablePositionDrive;
754 return ProfileInstance.LinearDrive.IsPositionDriveEnabled();
763 return ProfileInstance.LinearDrive.PositionTarget;
772 return ProfileInstance.LinearDrive.XDrive.bEnableVelocityDrive;
778 return ProfileInstance.LinearDrive.YDrive.bEnableVelocityDrive;
784 return ProfileInstance.LinearDrive.ZDrive.bEnableVelocityDrive;
790 return ProfileInstance.LinearDrive.IsVelocityDriveEnabled();
799 return ProfileInstance.LinearDrive.VelocityTarget;
809 ENGINE_API void SetLinearDriveAccelerationMode(
bool bAccelerationMode);
829 return ProfileInstance.AngularDrive.SlerpDrive.bEnablePositionDrive;
835 return ProfileInstance.AngularDrive.IsOrientationDriveEnabled();
844 return ProfileInstance.AngularDrive.OrientationTarget;
859 return ProfileInstance.AngularDrive.SlerpDrive.bEnableVelocityDrive;
865 return ProfileInstance.AngularDrive.IsVelocityDriveEnabled();
874 return ProfileInstance.AngularDrive.AngularVelocityTarget;
887 ENGINE_API void SetAngularDriveAccelerationMode(
bool bAccelerationMode);
892 return ProfileInstance.AngularDrive.AngularDriveMode;
934 ENGINE_API bool IsValidConstraintInstance()
const;
954 return ProfileInstance.bDisableCollision;
978#if WITH_EDITORONLY_DATA
985 return ProfileInstance.bEnableProjection;
995 ENGINE_API void SetProjectionParams(
bool bEnableProjection,
float ProjectionLinearAlpha,
float ProjectionAngularAlpha,
float ProjectionLinearTolerance,
float ProjectionAngularTolerance);
998 ENGINE_API void GetProjectionParams(
float& ProjectionLinearAlpha,
float& ProjectionAngularAlpha,
float& ProjectionLinearTolerance,
float& ProjectionAngularTolerance)
const;
1001 ENGINE_API void SetShockPropagationParams(
bool bEnableShockPropagation,
float ShockPropagationAlpha);
1004 ENGINE_API float GetShockPropagationAlpha()
const;
1009 return ProfileInstance.bParentDominates;
1015 ENGINE_API void SetParentDominates(
bool bParentDominates);
1020 return ProfileInstance.bEnableMassConditioning;
1044 struct FPDIOrCollector
1052 , Collector(nullptr)
1064 bool HasCollector()
const
1083 ENGINE_API void UpdateContactTransferScale();
1088#if WITH_EDITORONLY_DATA
1102#if WITH_EDITORONLY_DATA
1104 uint32 bDisableCollision_DEPRECATED : 1;
1228#if WITH_EDITORONLY_DATA
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define WITH_EDITOR
Definition Build.h:67
EConstraintPlasticityType
Definition ChaosEngineInterface.h:173
EAngularConstraintMotion
Definition ChaosEngineInterface.h:114
ELinearConstraintMotion
Definition ChaosEngineInterface.h:187
EConstraintTransformComponentFlags
Definition ConstraintInstance.h:34
ENGINE_API FTransform CalculateRelativeBoneTransform(const FName ToBoneName, const FName FromBoneName, const FReferenceSkeleton &ReferenceSkeleton)
Definition ConstraintInstance.cpp:72
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ESceneDepthPriorityGroup
Definition EngineTypes.h:187
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
void DrawCone(FPrimitiveDrawInterface *PDI, const FMatrix &ConeToWorld, float Angle1, float Angle2, uint32 NumSides, bool bDrawSideLines, const FLinearColor &SideLineColor, const FMaterialRenderProxy *MaterialRenderProxy, uint8 DepthPriority)
Definition PrimitiveDrawingUtils.cpp:481
void DrawCylinder(FPrimitiveDrawInterface *PDI, const FVector &Base, const FVector &XAxis, const FVector &YAxis, const FVector &ZAxis, double Radius, double HalfHeight, uint32 Sides, const FMaterialRenderProxy *MaterialRenderProxy, uint8 DepthPriority)
Definition PrimitiveDrawingUtils.cpp:744
AUTORTFM_INFER constexpr auto Projection(Invocable0Type &&Invocable0, InvocableTypes &&... Invocables)
Definition Projection.h:108
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
if(Failed) console_printf("Failed.\n")
Definition SingleParticlePhysicsProxy.h:58
Definition Archive.h:1208
Definition MaterialRenderProxy.h:102
Definition MeshElementCollector.h:26
Definition NameTypes.h:617
Definition PhysScene_Chaos.h:116
Definition ChaosEngineInterface.h:247
Definition PrimitiveDrawInterface.h:19
Definition EnumAsByte.h:22
Definition AndroidPlatformMisc.h:14
Definition MaterialInterface.h:296
Definition PhysicsAsset.h:172
Definition SkeletalMeshComponent.h:307
Definition ConstraintDrives.h:11
Type
Definition ConstraintDrives.h:13
Type
Definition ChaosEngineInterface.h:130
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition PhysicsObjectInternal.h:16
Definition ConstraintDrives.h:125
Definition BodyInstance.h:320
Definition PhysicsInterfaceTypesCore.h:199
Definition ConstraintTypes.h:72
Definition PhysicsInterfaceUtils.h:23
Definition PhysScene_Chaos.h:83
Definition ConstraintInstance.h:1238
FConstraintInstanceAccessor()
Definition ConstraintInstance.h:1242
FConstraintInstanceAccessor(const TWeakObjectPtr< UObject > &Owner, uint32 Index=0, TFunction< void(void)> InOnRelease=TFunction< void(void)>())
Definition ConstraintInstance.h:1247
Definition ConstraintInstance.h:210
FOnPlasticDeformation OnPlasticDeformationDelegate
Definition ConstraintInstance.h:243
FPhysScene * PhysScene
Definition ConstraintInstance.h:225
FPhysicsConstraintHandle ConstraintHandle
Definition ConstraintInstance.h:222
FOnConstraintBroken OnConstraintBrokenDelegate
Definition ConstraintInstance.h:241
const FPhysScene * GetPhysicsScene() const
Definition ConstraintInstance.h:228
ENGINE_API void SetPlasticDeformationDelegate(FOnPlasticDeformation InPlasticDeformationDelegate)
int32 ConstraintIndex
Definition ConstraintInstance.h:219
FPhysScene * GetPhysicsScene()
Definition ConstraintInstance.h:227
FOnConstraintViolated OnConstraintViolatedDelegate
Definition ConstraintInstance.h:242
Definition ConstraintInstance.h:255
float GetSoftSwingLimitRestitution() const
Definition ConstraintInstance.h:585
float GetSoftSwingLimitDamping() const
Definition ConstraintInstance.h:582
float GetSoftLinearLimitContactDistance() const
Definition ConstraintInstance.h:536
void SetSoftSwingLimitParams(bool bIsSoftLimit, float Stiffness, float Damping, float Restitution, float ContactDistance)
Definition ConstraintInstance.h:591
void SetAngularSwing2Limit(EAngularConstraintMotion MotionType, float InSwing2LimitAngle)
Definition ConstraintInstance.h:484
float GetAngularBreakThreshold() const
Definition ConstraintInstance.h:687
EAngularConstraintMotion GetAngularSwing1Motion() const
Definition ConstraintInstance.h:428
bool IsLinearPositionDriveEnabled() const
Definition ConstraintInstance.h:752
void SetLinearLimits(ELinearConstraintMotion XConstraintType, ELinearConstraintMotion YConstraintType, ELinearConstraintMotion ZConstraintType, float InLinearLimitSize)
Definition ConstraintInstance.h:358
bool IsLinearVelocityDriveXEnabled() const
Definition ConstraintInstance.h:770
void SetLinearPlasticity(bool bInLinearPlasticity, float InLinearPlasticityThreshold, EConstraintPlasticityType InLinearPlasticityType)
Definition ConstraintInstance.h:628
float GetSoftTwistLimitContactDistance() const
Definition ConstraintInstance.h:562
bool HasAngularPlasticity() const
Definition ConstraintInstance.h:704
ELinearConstraintMotion GetLinearXMotion() const
Definition ConstraintInstance.h:368
bool GetIsSoftTwistLimit() const
Definition ConstraintInstance.h:550
void SetAngularSwing1Motion(EAngularConstraintMotion MotionType)
Definition ConstraintInstance.h:434
float GetLastKnownScale() const
Definition ConstraintInstance.h:1033
void SetSoftTwistLimitParams(bool bIsSoftLimit, float Stiffness, float Damping, float Restitution, float ContactDistance)
Definition ConstraintInstance.h:565
float GetAngularPlasticityThreshold() const
Definition ConstraintInstance.h:710
float GetLinearLimit() const
Definition ConstraintInstance.h:352
bool IsLinearPositionDriveZEnabled() const
Definition ConstraintInstance.h:746
void SetAngularTwistLimit(EAngularConstraintMotion MotionType, float InTwistLimitAngle)
Definition ConstraintInstance.h:516
bool IsLinearPositionDriveYEnabled() const
Definition ConstraintInstance.h:740
EAngularConstraintMotion GetAngularSwing2Motion() const
Definition ConstraintInstance.h:460
bool GetIsSoftSwingLimit() const
Definition ConstraintInstance.h:576
float GetSoftTwistLimitStiffness() const
Definition ConstraintInstance.h:553
void SetLinearXLimit(ELinearConstraintMotion XConstraintType, float InLinearLimitSize)
Definition ConstraintInstance.h:381
void SetLinearYLimit(ELinearConstraintMotion YConstraintType, float InLinearLimitSize)
Definition ConstraintInstance.h:401
void DrawConstraint(FPrimitiveDrawInterface *PDI, float Scale, float LimitDrawScale, bool bDrawLimits, bool bDrawSelected, const FTransform &Con1Frame, const FTransform &Con2Frame, bool bDrawAsPoint, bool bDrawViolatedLimits) const
Definition ConstraintInstance.h:968
bool IsParentDominatesEnabled() const
Definition ConstraintInstance.h:1007
float GetSoftLinearLimitStiffness() const
Definition ConstraintInstance.h:527
bool IsProjectionEnabled() const
Definition ConstraintInstance.h:983
float GetSoftSwingLimitStiffness() const
Definition ConstraintInstance.h:579
float GetAngularSwing2Limit() const
Definition ConstraintInstance.h:476
float GetSoftTwistLimitDamping() const
Definition ConstraintInstance.h:556
const FVector & GetLinearPositionTarget()
Definition ConstraintInstance.h:761
bool IsLinearPositionDriveXEnabled() const
Definition ConstraintInstance.h:734
float GetSoftTwistLimitRestitution() const
Definition ConstraintInstance.h:559
ELinearConstraintMotion GetLinearZMotion() const
Definition ConstraintInstance.h:408
void SetAngularSwing2Motion(EAngularConstraintMotion MotionType)
Definition ConstraintInstance.h:466
bool GetOrientationDriveSLERP()
Definition ConstraintInstance.h:827
void SetAngularTwistMotion(EAngularConstraintMotion MotionType)
Definition ConstraintInstance.h:498
float GetLinearBreakThreshold() const
Definition ConstraintInstance.h:619
void SetLinearYMotion(ELinearConstraintMotion YConstraintType)
Definition ConstraintInstance.h:394
void SetAngularSwing1Limit(EAngularConstraintMotion MotionType, float InSwing1LimitAngle)
Definition ConstraintInstance.h:452
void SetLinearZMotion(ELinearConstraintMotion ZConstraintType)
Definition ConstraintInstance.h:414
bool IsAngularOrientationDriveEnabled() const
Definition ConstraintInstance.h:833
const FRotator & GetAngularOrientationTarget() const
Definition ConstraintInstance.h:842
float GetAngularSwing1Limit() const
Definition ConstraintInstance.h:444
bool IsLinearVelocityDriveYEnabled() const
Definition ConstraintInstance.h:776
const FName & GetParentBoneName() const
Definition ConstraintInstance.h:349
bool IsLinearBreakable() const
Definition ConstraintInstance.h:613
bool IsLinearVelocityDriveZEnabled() const
Definition ConstraintInstance.h:782
float GetSoftLinearLimitRestitution() const
Definition ConstraintInstance.h:533
void DrawConstraint(int32 ViewIndex, class FMeshElementCollector &Collector, float Scale, float LimitDrawScale, bool bDrawLimits, bool bDrawSelected, const FTransform &Con1Frame, const FTransform &Con2Frame, bool bDrawAsPoint, bool bDrawViolatedLimits) const
Definition ConstraintInstance.h:961
bool IsCollisionDisabled() const
Definition ConstraintInstance.h:952
void SetContactTransferScale(float InContactTransferScale)
Definition ConstraintInstance.h:657
bool GetAngularVelocityDriveSLERP()
Definition ConstraintInstance.h:857
const FVector & GetLinearVelocityTarget()
Definition ConstraintInstance.h:797
TEnumAsByte< enum EConstraintPlasticityType > GetLinearPlasticityType() const
Definition ConstraintInstance.h:649
EAngularConstraintMotion GetAngularTwistMotion() const
Definition ConstraintInstance.h:492
const FVector & GetAngularVelocityTarget() const
Definition ConstraintInstance.h:872
bool GetIsSoftLinearLimit() const
Definition ConstraintInstance.h:524
float GetAngularTwistLimit() const
Definition ConstraintInstance.h:508
float GetContactTransferScale() const
Definition ConstraintInstance.h:664
void SetLinearXMotion(ELinearConstraintMotion XConstraintType)
Definition ConstraintInstance.h:374
EAngularDriveMode::Type GetAngularDriveMode()
Definition ConstraintInstance.h:890
bool IsAngularVelocityDriveEnabled() const
Definition ConstraintInstance.h:863
bool IsAngularBreakable() const
Definition ConstraintInstance.h:681
void SetLinearZLimit(ELinearConstraintMotion ZConstraintType, float InLinearLimitSize)
Definition ConstraintInstance.h:421
float GetLinearPlasticityThreshold() const
Definition ConstraintInstance.h:643
bool IsLinearVelocityDriveEnabled() const
Definition ConstraintInstance.h:788
void SetSoftLinearLimitParams(bool bIsSoftLimit, float Stiffness, float Damping, float Restitution, float ContactDistance)
Definition ConstraintInstance.h:539
void SetLinearBreakable(bool bInLinearBreakable, float InLinearBreakThreshold)
Definition ConstraintInstance.h:605
bool HasLinearPlasticity() const
Definition ConstraintInstance.h:637
void SetAngularBreakable(bool bInAngularBreakable, float InAngularBreakThreshold)
Definition ConstraintInstance.h:673
float GetSoftSwingLimitContactDistance() const
Definition ConstraintInstance.h:588
ELinearConstraintMotion GetLinearYMotion() const
Definition ConstraintInstance.h:388
float GetSoftLinearLimitDamping() const
Definition ConstraintInstance.h:530
bool IsMassConditioningEnabled() const
Definition ConstraintInstance.h:1018
void SetAngularPlasticity(bool bInAngularPlasticity, float InAngularPlasticityThreshold)
Definition ConstraintInstance.h:696
Definition ConstraintInstance.h:57
Definition PhysScene_Chaos.h:93
Definition ConstraintTypes.h:43
Definition ConstraintDrives.h:66
Definition UnrealType.h:7001
Definition ReferenceSkeleton.h:100
Definition ConstraintTypes.h:100
Definition StructOpsTypeTraits.h:11
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25