19 #include "Components/ActorComponent.h"
21 #include "CoreMinimal.h"
23 #include "Kismet/KismetMathLibrary.h"
27 #include <Containers/EnumAsByte.h>
41 #include "two_points_interpolation_constant_acc.hpp"
45 #include "RRPhysicsJointComponent.generated.h"
80 virtual bool IsValid()
override;
106 virtual void SetVelocity(
const FVector& InLinearVelocity,
const FVector& InAngularVelocity)
override;
120 virtual void SetVelocityTarget(
const FVector& InLinearVelocity,
const FVector& InAngularVelocity)
override;
134 virtual void SetPose(
const FVector& InPosition,
const FRotator& InOrientation)
override;
148 virtual void SetPoseTarget(
const FVector& InPosition,
const FRotator& InOrientation)
override;
166 virtual void Teleport(
const FVector& InPosition,
const FRotator& InOrientation)
override;
185 virtual void SetJoint();
196 UPhysicsConstraintComponent* Constraint =
nullptr;
211 bool bSmoothing =
false;
266 float LinearVelocitySmoothingAcc = 10.f;
277 float AngularVelocitySmoothingAcc = 10.f;
288 float LinearSpring = 1000;
299 float LinearDamper = 10;
310 float LinearForceLimit = UE_BIG_NUMBER;
321 float AngularSpring = 100000;
332 float AngularDamper = 10000;
343 float AngularForceLimit = UE_BIG_NUMBER;
356 bool bManualConstraintSetting =
false;
369 FVector MidLinearVelocityTarget = FVector::ZeroVector;
380 FVector MidAngularVelocityTarget = FVector::ZeroVector;
391 FVector MidPositionTarget = FVector::ZeroVector;
402 FRotator MidOrientationTarget = FRotator::ZeroRotator;
406 virtual void UpdateState(
const float DeltaTime)
override;
435 virtual void UpdateIntegral(
const FVector& InPositionDiff,
const FVector& InOrientationDiff,
const float DeltaTime);
456 virtual void UpdateVelocityTargetFromPose(
const FVector InPositionDiff,
const FVector InOrientationDiff);
477 virtual FRotator GetOrientationTargetFromEuler(
const FVector& InOrientationTarget);
500 FVector PErrInt = FVector::ZeroVector;
511 FVector AErrInt = FVector::ZeroVector;