UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TransformConstraint.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Constraint.h"
7
9
11#include "Delegates/Delegate.h"
12
13#include "TransformConstraint.generated.h"
14
15enum class EHandleEvent : uint8;
18class USceneComponent;
20class UWorld;
25UCLASS(Abstract, Blueprintable, MinimalAPI)
27{
29
30public:
31
33 CONSTRAINTS_API void Setup();
34
36 CONSTRAINTS_API virtual void PostLoad() override;
37 CONSTRAINTS_API virtual void PostDuplicate(bool bDuplicateForPIE) override;
38
40 CONSTRAINTS_API virtual uint32 GetTargetHash() const override;
41
43 CONSTRAINTS_API virtual bool ReferencesObject(TWeakObjectPtr<UObject> InObject) const override;
45 CONSTRAINTS_API virtual bool HasBoundObjects() const override;
46
48 CONSTRAINTS_API virtual void ResolveBoundObjects(FMovieSceneSequenceID LocalSequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState> SharedPlaybackState, UObject* SubObject = nullptr) override;
49
51 virtual bool IsValid(const bool bDeepCheck = true) const override;
52
54 CONSTRAINTS_API virtual bool IsFullyActive() const override;
55
57 CONSTRAINTS_API virtual bool NeedsCompensation() const;
58
61
63 CONSTRAINTS_API virtual void Evaluate(bool bTickHandlesAlso = false) const override;
64
66 CONSTRAINTS_API virtual void SetActive(const bool bIsActive) override;
67
69 UPROPERTY(BlueprintReadWrite, Category = "Handle")
71
73 UPROPERTY(BlueprintReadWrite, Category = "Handle")
75
77 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="Type!=ETransformConstraintType::LookAt"))
78 bool bMaintainOffset = true;
79
81 // UPROPERTY(EditAnywhere, BlueprintReadWrite,Category="Weight", meta = (Input, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
82 //@benoit when not EditAnywhere?
83 UPROPERTY(meta = (Input, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
84 float Weight = 1.f;
85
87 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="(Type!=ETransformConstraintType::LookAt) && bMaintainOffset"))
88 bool bDynamicOffset = false;
89
91 CONSTRAINTS_API int64 GetType() const;
92
94 CONSTRAINTS_API FTransform GetChildGlobalTransform() const;
95
97 CONSTRAINTS_API FTransform GetChildLocalTransform() const;
98
100 CONSTRAINTS_API FTransform GetParentGlobalTransform() const;
101
103 CONSTRAINTS_API FTransform GetParentLocalTransform() const;
104
106 CONSTRAINTS_API EMovieSceneTransformChannel GetChannelsToKey() const;
107
113
115 CONSTRAINTS_API FTickFunction* GetChildHandleTickFunction() const;
116 CONSTRAINTS_API FTickFunction* GetParentHandleTickFunction() const;
117
121 CONSTRAINTS_API void EnsurePrimaryDependency(const UWorld* InWorld) const;
122
124
126 CONSTRAINTS_API void UnregisterDelegates() const;
127 CONSTRAINTS_API void RegisterDelegates();
128
129
134 virtual void ComputeOffset() PURE_VIRTUAL(ComputeOffset, return;);
135
140 CONSTRAINTS_API void SetupDependencies(const UWorld* InWorld);
141
143 CONSTRAINTS_API void SetChildGlobalTransform(const FTransform& InGlobal) const;
144
146 CONSTRAINTS_API void SetChildLocalTransform(const FTransform& InLocal) const;
147
149 UPROPERTY()
151
153 CONSTRAINTS_API void OnActiveStateChanged() const;
154
156 CONSTRAINTS_API FTickFunction* GetHandleTickFunction(const TObjectPtr<UTransformableHandle>& InHandle) const;
157
159 void PreEvaluate() const;
160
162 void PostEvaluate() const;
163
164public:
166 CONSTRAINTS_API virtual void InitConstraint(UWorld * InWorld) override;
167 CONSTRAINTS_API virtual void TeardownConstraint(UWorld * InWorld) override;
168 CONSTRAINTS_API virtual void AddedToWorld(UWorld* InWorld) override;
169
171 UPROPERTY(EditAnywhere, Transient, Category="Offset", meta = (DisplayPriority=0))
172 bool bUseCurrentOffset = true;
173
174#if WITH_EDITOR
175public:
177 CONSTRAINTS_API virtual FString GetLabel() const override;
178 CONSTRAINTS_API virtual FString GetFullLabel() const override;
179
181 CONSTRAINTS_API virtual FString GetTypeLabel() const override;
182
183 // UObject interface
184 CONSTRAINTS_API virtual bool CanEditChange(const FProperty* InProperty) const override;
185 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
186 CONSTRAINTS_API virtual void PostEditUndo() override;
187 // End of UObject interface
188
195
196protected:
198#endif
199};
200
205UCLASS(Blueprintable, MinimalAPI)
207{
209
210public:
212
214 CONSTRAINTS_API virtual FConstraintTickFunction::ConstraintFunction GetFunction() const override;
215
217 CONSTRAINTS_API virtual void OnHandleModified(UTransformableHandle* InHandle, EHandleEvent InEvent) override;
218
219protected:
220
223 {
224 uint32 CachedInputHash = 0;
225 };
227 CONSTRAINTS_API uint32 CalculateInputHash() const;
228
230 CONSTRAINTS_API virtual void ComputeOffset() override;
231
232public:
234 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="bMaintainOffset"))
235 FVector OffsetTranslation = FVector::ZeroVector;
236
238 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Axis Filter")
240
241#if WITH_EDITOR
242public:
243 // UObject interface
244 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
245 // End of UObject interface
246#endif
247};
248
253UCLASS(Blueprintable, MinimalAPI)
255{
257
258public:
260
262 CONSTRAINTS_API virtual FConstraintTickFunction::ConstraintFunction GetFunction() const override;
263
265 CONSTRAINTS_API virtual void OnHandleModified(UTransformableHandle* InHandle, EHandleEvent InEvent) override;
266
267protected:
268
271 {
272 uint32 CachedInputHash = 0;
273 };
275 CONSTRAINTS_API uint32 CalculateInputHash() const;
276
278 CONSTRAINTS_API virtual void ComputeOffset() override;
279
280public:
282 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="bMaintainOffset"))
283 FQuat OffsetRotation = FQuat::Identity;
284
286 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Axis Filter")
288
289#if WITH_EDITOR
290public:
291 // UObject interface
292 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
293 // End of UObject interface
294#endif
295};
296
301UCLASS(Blueprintable, MinimalAPI)
303{
305
306public:
308
310 CONSTRAINTS_API virtual FConstraintTickFunction::ConstraintFunction GetFunction() const override;
311
313 CONSTRAINTS_API virtual void OnHandleModified(UTransformableHandle* InHandle, EHandleEvent InEvent) override;
314
315protected:
317 CONSTRAINTS_API virtual void ComputeOffset() override;
318
321 {
322 uint32 CachedInputHash = 0;
323 };
325 CONSTRAINTS_API uint32 CalculateInputHash() const;
326
327public:
329 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="bMaintainOffset"))
330 FVector OffsetScale = FVector::OneVector;
331
333 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Axis Filter")
335
336#if WITH_EDITOR
337public:
338 // UObject interface
339 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
340 // End of UObject interface
341#endif
342};
343
348UCLASS(Blueprintable, MinimalAPI)
350{
352
353public:
355
357 CONSTRAINTS_API virtual FConstraintTickFunction::ConstraintFunction GetFunction() const override;
358
359 bool IsScalingEnabled() const
360 {
361 return bScaling;
362 }
363
364 void SetScaling(const bool bInScale)
365 {
366 bScaling = bInScale;
367 }
368
370
372 CONSTRAINTS_API virtual void OnHandleModified(UTransformableHandle* InHandle, EHandleEvent InEvent) override;
373
374protected:
377 {
378 uint32 CachedInputHash = 0;
379 };
381 CONSTRAINTS_API uint32 CalculateInputHash() const;
382
384 CONSTRAINTS_API virtual void ComputeOffset() override;
385
386public:
388 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Offset", meta=(EditCondition="bMaintainOffset"))
389 FTransform OffsetTransform = FTransform::Identity;
390
392 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Properties")
393 bool bScaling = false;
394
396 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Axis Filter")
397 FTransformFilter TransformFilter;
398
399#if WITH_EDITOR
400public:
401 // UObject interface
402 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
403 // End of UObject interface
404#endif
405};
406
411UCLASS(Blueprintable, MinimalAPI)
413{
415
416public:
418
420 CONSTRAINTS_API virtual FConstraintTickFunction::ConstraintFunction GetFunction() const override;
421
423 CONSTRAINTS_API virtual bool NeedsCompensation() const override;
424
425protected:
429 CONSTRAINTS_API virtual void ComputeOffset() override;
430
432 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Axis")
433 FVector Axis = FVector::XAxisVector;
434
435private:
436
438 static FQuat FindQuatBetweenNormals(const FVector& A, const FVector& B);
439
440#if WITH_EDITOR
441public:
442 // UObject interface
443 CONSTRAINTS_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
444 // End of UObject interface
445#endif
446};
447
449{
450 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
452 UWorld* World,
453 const AActor* InChild,
455
456 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
458 USceneComponent* InSceneComponent,
459 const FName& InSocketName);
460
461 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
465 const bool bUseDefault = false);
466
467 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
473 const bool bMaintainOffset = true,
474 const bool bUseDefault = false);
475
476 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
477 static CONSTRAINTS_API bool AddConstraint(
482 const bool bMaintainOffset = true,
483 const bool bUseDefault = false);
484
485 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
491
492 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
497
498 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
500
501 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
503 UWorld* World,
506 const bool bIncludeTarget = false);
507
508 UE_DEPRECATED(5.6, "This function was moved to the UE::TransformConstraintUtil namespace.")
509 static CONSTRAINTS_API void UpdateTransformBasedOnConstraint(FTransform& CurrentTransform, USceneComponent* SceneComponent);
510};
#define GET_MEMBER_NAME_CHECKED(ClassName, MemberName)
Definition AssertionMacros.h:493
ETransformConstraintType
Definition Constraint.h:410
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
return true
Definition ExternalRpcRegistry.cpp:601
EMovieSceneTransformChannel
Definition MovieSceneSection.h:212
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
EHandleEvent
Definition TransformableHandle.h:29
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition Array.h:670
Definition SharedPointer.h:153
Definition Object.h:95
Definition ConstraintsManager.h:74
Definition TransformConstraint.h:413
Definition TransformConstraint.h:350
void SetScaling(const bool bInScale)
Definition TransformConstraint.h:364
static FName GetScalingPropertyName()
Definition TransformConstraint.h:369
FDynamicCache Cache
Definition TransformConstraint.h:380
bool IsScalingEnabled() const
Definition TransformConstraint.h:359
Definition TransformConstraint.h:255
FDynamicCache Cache
Definition TransformConstraint.h:274
Definition TransformConstraint.h:303
FDynamicCache Cache
Definition TransformConstraint.h:324
Definition TransformConstraint.h:27
Definition TransformConstraint.h:207
FDynamicCache Cache
Definition TransformConstraint.h:226
Definition TransformableHandle.h:157
Definition TransformableHandle.h:45
Definition World.h:918
virtual UE_API void PostDuplicate(bool bDuplicateForPIE) override
Definition World.cpp:1309
@ false
Definition radaudio_common.h:23
Definition Constraint.h:43
Definition MovieSceneSequenceID.h:13
Definition UnrealType.h:6865
Definition EngineBaseTypes.h:173
Definition TransformConstraint.h:449
static CONSTRAINTS_API UTickableTransformConstraint * CreateAndAddFromObjects(UWorld *InWorld, UObject *InParent, const FName &InParentSocketName, UObject *InChild, const FName &InChildSocketName, const ETransformConstraintType InType, const bool bMaintainOffset=true, const bool bUseDefault=false)
Definition TransformConstraint.cpp:1503
static CONSTRAINTS_API UTickableTransformConstraint * CreateFromType(UWorld *InWorld, const ETransformConstraintType InType, const bool bUseDefault=false)
Definition TransformConstraint.cpp:1495
static CONSTRAINTS_API void GetParentConstraints(UWorld *World, const AActor *InChild, TArray< TWeakObjectPtr< UTickableConstraint > > &OutConstraints)
Definition TransformConstraint.cpp:1487
static CONSTRAINTS_API UTransformableComponentHandle * CreateHandleForSceneComponent(USceneComponent *InSceneComponent, const FName &InSocketName)
Definition TransformConstraint.cpp:1480
static CONSTRAINTS_API void UpdateTransformBasedOnConstraint(FTransform &CurrentTransform, USceneComponent *SceneComponent)
Definition TransformConstraint.cpp:1526
static CONSTRAINTS_API TOptional< FTransform > GetRelativeTransform(UWorld *InWorld, const uint32 InHandleHash)
Definition TransformConstraint.cpp:1540
static CONSTRAINTS_API TOptional< FTransform > GetConstraintsRelativeTransform(const TArray< TWeakObjectPtr< UTickableConstraint > > &InConstraints, const FTransform &InChildLocal, const FTransform &InChildWorld)
Definition TransformConstraint.cpp:1545
static CONSTRAINTS_API int32 GetLastActiveConstraintIndex(const TArray< TWeakObjectPtr< UTickableConstraint > > &InConstraints)
Definition TransformConstraint.cpp:1552
static CONSTRAINTS_API bool AddConstraint(UWorld *InWorld, UTransformableHandle *InParentHandle, UTransformableHandle *InChildHandle, UTickableTransformConstraint *Constraint, const bool bMaintainOffset=true, const bool bUseDefault=false)
Definition TransformConstraint.cpp:1515
static CONSTRAINTS_API void GetChildrenConstraints(UWorld *World, const UTickableTransformConstraint *InConstraint, TArray< TWeakObjectPtr< UTickableConstraint > > &OutConstraints, const bool bIncludeTarget=false)
Definition TransformConstraint.cpp:1557
static CONSTRAINTS_API FTransform ComputeRelativeTransform(const FTransform &InChildLocal, const FTransform &InChildWorld, const FTransform &InSpaceWorld, const UTickableTransformConstraint *InConstraint)
Definition TransformConstraint.cpp:1531
Definition Constraint.h:137
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition WeakObjectPtrTemplates.h:25
Definition TransformConstraint.h:377
Definition TransformConstraint.h:271
Definition TransformConstraint.h:321
Definition TransformConstraint.h:223