UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
KinematicTargets.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4// HEADER_UNIT_SKIP - Internal
5
7#include "Chaos/Transform.h"
11
12namespace Chaos
13{
18 {
19 None,
20 Reset,
21 Position,
22 Velocity,
23 };
24
25 class FKinematicTarget;
26
27 template<class T, int d>
28 using TKinematicTarget UE_DEPRECATED(5.5, "Deprecated. this class is to be deleted, use class FKinematicTarget instead") = FKinematicTarget;
29
34 {
35 public:
36
41
46
48 : Rotation(FRotation3f::FromIdentity())
49 , Position(0)
51 {
52 }
53
55 bool IsSet() const { return (Mode == EKinematicTargetMode::Position) || (Mode == EKinematicTargetMode::Velocity); }
56
58 EKinematicTargetMode GetMode() const { return Mode; }
59
60 UE_DEPRECATED(5.5, "This method is Deprecated and it will be removed in a future release. Use GetTransform instead")
62 FRigidTransform3 GetTarget() const { check(Mode == EKinematicTargetMode::Position); return {Position, Rotation}; }
63
64 UE_DEPRECATED(5.5, "This method is Deprecated and it will be removed in a future release. Use GetPosition instead")
66 FVec3 GetTargetPosition() const { check(Mode == EKinematicTargetMode::Position); return Position; }
67
68 UE_DEPRECATED(5.5, "This method is Deprecated and it will be removed in a future release. Use GetRotation instead")
70 FRotation3 GetTargetRotation() const { check(Mode == EKinematicTargetMode::Position); return Rotation; }
71
73 FRigidTransform3 GetTransform() const { check(Mode == EKinematicTargetMode::Position); return {Position, Rotation}; }
74
76 FVec3 GetPosition() const { check(Mode == EKinematicTargetMode::Position); return Position; }
77
79 FRotation3f GetRotation() const { check(Mode == EKinematicTargetMode::Position); return Rotation; }
80
82 void Clear()
83 {
84 Position = FVec3();
86 Mode = EKinematicTargetMode::None;
87 }
88
90 void SetTargetMode(const FVec3& X, const FRotation3f& R)
91 {
92 Position = X;
93 Rotation = R;
94 Mode = EKinematicTargetMode::Position;
95 }
96
99 {
100 Position = InTarget.GetLocation();
101 Rotation = InTarget.GetRotation();
102 Mode = EKinematicTargetMode::Position;
103 }
104
106 void SetVelocityMode() { Mode = EKinematicTargetMode::Velocity; }
107
108 // For internal use only
110
112 {
116
117 const bool bRemovedScaleFN = (Ar.CustomVer(FFortniteReleaseBranchCustomObjectVersion::GUID) >= FFortniteReleaseBranchCustomObjectVersion::ChaosKinematicTargetRemoveScale);
119 const bool bRotationStoredAsSinglePrecision = (Ar.CustomVer(FFortniteMainBranchObjectVersion::GUID) >= FFortniteMainBranchObjectVersion::ChaosStoreKinematicTargetRotationAsSinglePrecision);
120
122 {
123 Ar << KinematicTarget.Position;
124
126 {
127 Ar << KinematicTarget.Rotation;
128 }
129 else
130 {
132 if (Ar.IsLoading())
133 {
135 KinematicTarget.Rotation = RotationDoublePrecision;
136 }
137 else
138 {
139 RotationDoublePrecision = KinematicTarget.Rotation;
141 }
142 }
143
144 Ar << KinematicTarget.Mode;
145 }
146 else
147 {
149 Ar << Transform << KinematicTarget.Mode;
150
151 KinematicTarget.Position = FVec3(Transform.GetLocation());
152 KinematicTarget.Rotation = TRotation3<FRealSingle>(Transform.GetRotation());
153 }
154
155 return Ar;
156 }
157
158 bool IsEqual(const FKinematicTarget& other) const
159 {
160 return (
161 Mode == other.Mode &&
162 Position == other.Position &&
163 Rotation == other.Rotation
164 );
165 }
166
167 template <typename TOther>
168 bool IsEqual(const TOther& other) const
169 {
170 return IsEqual(other.KinematicTarget());
171 }
172
174 {
175 return IsEqual(other);
176 }
177
178 template <typename TOther>
179 void CopyFrom(const TOther& Other)
180 {
181 Position = Other.KinematicTarget().Position;
182 Rotation = Other.KinematicTarget().Rotation;
183 Mode = Other.KinematicTarget().Mode;
184 }
185
187 {
188 return FKinematicTarget();
189 }
190
191 private:
193 : Rotation(InTransform.GetRotation())
194 , Position(InTransform.GetTranslation())
196 {
197 }
198
199 FKinematicTarget(const FVec3& InPosition, const FRotation3f& InRotation)
202 , Mode(EKinematicTargetMode::Position)
203 {
204 }
205
209 };
210
211}
212
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
Definition ChaosArchive.h:167
bool operator==(const FKinematicTarget &other) const
Definition KinematicTargets.h:173
static FKinematicTarget ZeroValue()
Definition KinematicTargets.h:186
EKinematicTargetMode GetMode() const
Definition KinematicTargets.h:58
bool IsEqual(const TOther &other) const
Definition KinematicTargets.h:168
void SetTargetMode(const FVec3 &X, const FRotation3f &R)
Definition KinematicTargets.h:90
static FKinematicTarget MakePositionTarget(const FRigidTransform3 &InTransform)
Definition KinematicTargets.h:37
void SetTargetMode(const FRigidTransform3 &InTarget)
Definition KinematicTargets.h:98
FKinematicTarget()
Definition KinematicTargets.h:47
friend FChaosArchive & operator<<(FChaosArchive &Ar, FKinematicTarget &KinematicTarget)
Definition KinematicTargets.h:111
FRotation3f GetRotation() const
Definition KinematicTargets.h:79
static FKinematicTarget MakePositionTarget(const FVec3 &InPosition, const FRotation3f &InRotation)
Definition KinematicTargets.h:42
FRigidTransform3 GetTransform() const
Definition KinematicTargets.h:73
bool IsSet() const
Definition KinematicTargets.h:55
void SetMode(EKinematicTargetMode InMode)
Definition KinematicTargets.h:109
void CopyFrom(const TOther &Other)
Definition KinematicTargets.h:179
void Clear()
Definition KinematicTargets.h:82
bool IsEqual(const FKinematicTarget &other) const
Definition KinematicTargets.h:158
FVec3 GetPosition() const
Definition KinematicTargets.h:76
void SetVelocityMode()
Definition KinematicTargets.h:106
Definition Rotation.h:49
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition SkeletalMeshComponent.h:307
@ Velocity
Definition SimulationModuleBase.h:147
TVector< FReal, 3 > FVec3
Definition Core.h:17
EKinematicTargetMode
Definition KinematicTargets.h:18
TRotation< FRealSingle, 3 > FRotation3f
Definition Core.h:28
CORE_API static const FGuid GUID
Definition FortniteMainBranchObjectVersion.h:21
CORE_API static const FGuid GUID
Definition FortniteReleaseBranchCustomObjectVersion.h:22
Definition PhysSubstepTasks.h:18
FKinematicTarget()
Definition PhysSubstepTasks.h:19
@ ChaosKinematicTargetRemoveScale
Definition PhysicsObjectVersion.h:58
CORE_API static const FGuid GUID
Definition PhysicsObjectVersion.h:78