UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ConstraintSubsystem.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"
7#include "UObject/Object.h"
10#include "ConstraintsManager.h"
11#include "Engine/World.h"
12#include "ConstraintSubsystem.generated.h"
13
15class ULevel;
16
17USTRUCT()
19{
20public:
22
25
28
29 CONSTRAINTS_API void RemoveConstraints(UWorld* World);
30
31 FConstraintsEvaluationGraph& GetEvaluationGraph();
32 void InvalidateGraph();
33
35 TSharedPtr<FConstraintsEvaluationGraph> EvaluationGraph = nullptr;
36};
37
38
39UCLASS()
41{
43
44public:
48
50
51 static UConstraintSubsystem* Get();
52 virtual void Initialize(FSubsystemCollectionBase& Collection) override;
53 virtual void Deinitialize() override;
54
55 /* Set tick dependencies between two constraints. */
56 CONSTRAINTS_API void SetConstraintDependencies(
59
61 CONSTRAINTS_API const TArray<TWeakObjectPtr<UTickableConstraint>>& GetConstraintsArray(const UWorld* InWorld) const;
62
66
67 FConstraintsEvaluationGraph& GetEvaluationGraph(UWorld* InWorld);
68
69 void InvalidateConstraints();
70
71#if WITH_EDITOR
72 virtual void PostEditUndo() override;
73#endif
74public:
76 UPROPERTY(BlueprintAssignable, Category = Constraints, meta = (DisplayName = "OnConstraintAdded"))
77 FOnConstraintAddedToSystem OnConstraintAddedToSystem_BP;
78
80 UPROPERTY(BlueprintAssignable, Category = Constraints, meta = (DisplayName = "OnConstraintRemoved"))
81 FOnConstraintRemovedFromSystem OnConstraintRemovedFromSystem_BP;
82
85
88 void RegisterConfig()
89 {
91 "The template class ConstraintType must be a subclass of UTickableConstraint.");
92
94 {
95 UClass* ConstraintClass = ConstraintType::StaticClass();
96 if (ensureAlways(!ConstraintClass->HasAnyClassFlags(CLASS_Abstract)))
97 {
98 if (!ConstraintsConfig.Contains(ConstraintClass))
99 {
100 ConstraintsConfig.Emplace(
103 }
104 }
105 }
106 }
107
108private:
110 TArray<FConstraintsInWorld> ConstraintsInWorld;
111
112 //handles for handling world creation init and teardown
113 static FDelegateHandle OnWorldInitHandle;
114 static void OnWorldInit(UWorld* World, const UWorld::InitializationValues IVS);
115
116 static FDelegateHandle OnWorldCleanupHandle;
117 static void OnWorldCleanup(UWorld* World, bool bSessionEnded, bool bCleanupResources);
118
119 //handle for handling GC
120 static FDelegateHandle OnPostGarbageCollectHandle;
121 static void OnPostGarbageCollect();
122
123 void InitializeInternal();
124
125 mutable bool bNeedsCleanup = false;
126
127 const FConstraintsInWorld* ConstraintsInWorldFind(const UWorld* InWorld) const;
128 FConstraintsInWorld* ConstraintsInWorldFind(const UWorld* InWorld);
129 FConstraintsInWorld& ConstraintsInWorldFindOrAdd(UWorld* InWorld);
130
131 int32 GetConstraintsInWorldIndex(const UWorld* InWorld) const;
132
133 void CleanupInvalidConstraints() const;
134
138};
#define ensureAlways( InExpression)
Definition AssertionMacros.h:466
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 UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
@ CLASS_Abstract
Definition ObjectMacros.h:203
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
@ RF_Transactional
Object is transactional.
Definition ObjectMacros.h:562
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
Definition Constraints.Build.cs:6
Definition IDelegateInstance.h:14
Definition SubsystemCollection.h:15
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition Class.h:3793
Definition ConstraintSubsystem.h:41
DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_ThreeParams(FOnConstraintRemovedFromSystem, UConstraintSubsystem, OnConstraintRemovedFromSystem_BP, UConstraintSubsystem *, Mananger, UTickableConstraint *, Constraint, bool, bDoNotCompensate)
DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnConstraintAddedToSystem, UConstraintSubsystem, OnConstraintAddedToSystem_BP, UConstraintSubsystem *, Mananger, UTickableConstraint *, Constraint)
Definition EngineSubsystem.h:22
Definition Level.h:423
Definition ConstraintsManager.h:74
Definition World.h:918
Definition ConstraintsManager.h:25
Definition ConstraintsEvaluationGraph.h:44
Definition ConstraintSubsystem.h:19
Definition WorldInitializationValues.h:9
Definition UnrealTypeTraits.h:40
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25