#pragma once

/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/

// Package: Constraints

#include "Basic.hpp"

#include "Constraints_structs.hpp"
#include "Engine_classes.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "MovieScene_structs.hpp"
#include "AnimationCore_structs.hpp"


namespace SDK
{

// Class Constraints.ConstraintSubsystem
// 0x0020 (0x0050 - 0x0030)
class UConstraintSubsystem final : public UEngineSubsystem
{
public:
	FMulticastSparseDelegateProperty_             OnConstraintAddedToSystem_BP;                      // 0x0030(0x0001)(InstancedReference, BlueprintAssignable, NoDestructor, NativeAccessSpecifierPublic)
	FMulticastSparseDelegateProperty_             OnConstraintRemovedFromSystem_BP;                  // 0x0031(0x0001)(InstancedReference, BlueprintAssignable, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_32[0x6];                                       // 0x0032(0x0006)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FConstraintsInWorld>            ConstraintsInWorld;                                // 0x0038(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPrivate)
	uint8                                         Pad_48[0x8];                                       // 0x0048(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ConstraintSubsystem")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ConstraintSubsystem")
	}
	static class UConstraintSubsystem* GetDefaultObj()
	{
		return GetDefaultObjImpl<UConstraintSubsystem>();
	}
};
DUMPER7_ASSERTS_UConstraintSubsystem;

// Class Constraints.ConstraintsActor
// 0x0008 (0x02B0 - 0x02A8)
class AConstraintsActor final : public AActor
{
public:
	class UConstraintsManager*                    ConstraintsManager;                                // 0x02A8(0x0008)(ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ConstraintsActor")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ConstraintsActor")
	}
	static class AConstraintsActor* GetDefaultObj()
	{
		return GetDefaultObjImpl<AConstraintsActor>();
	}
};
DUMPER7_ASSERTS_AConstraintsActor;

// Class Constraints.TickableConstraint
// 0x0068 (0x0090 - 0x0028)
class UTickableConstraint : public UObject
{
public:
	bool                                          Active;                                            // 0x0028(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bValid;                                            // 0x0029(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2A[0x66];                                      // 0x002A(0x0066)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableConstraint")
	}
	static class UTickableConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableConstraint;

// Class Constraints.ConstraintsManager
// 0x0020 (0x0048 - 0x0028)
class UConstraintsManager final : public UObject
{
public:
	FMulticastSparseDelegateProperty_             OnConstraintAdded_BP;                              // 0x0028(0x0001)(InstancedReference, BlueprintAssignable, NoDestructor, NativeAccessSpecifierPublic)
	FMulticastSparseDelegateProperty_             OnConstraintRemoved_BP;                            // 0x0029(0x0001)(InstancedReference, BlueprintAssignable, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_2A[0xE];                                       // 0x002A(0x000E)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UTickableConstraint*>            Constraints;                                       // 0x0038(0x0010)(ZeroConstructor, UObjectWrapper, NativeAccessSpecifierPrivate)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ConstraintsManager")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ConstraintsManager")
	}
	static class UConstraintsManager* GetDefaultObj()
	{
		return GetDefaultObjImpl<UConstraintsManager>();
	}
};
DUMPER7_ASSERTS_UConstraintsManager;

// Class Constraints.ConstraintsScriptingLibrary
// 0x0000 (0x0028 - 0x0028)
class UConstraintsScriptingLibrary final : public UBlueprintFunctionLibrary
{
public:
	static bool AddConstraint(class UWorld* InWorld, class UTransformableHandle* InParentHandle, class UTransformableHandle* InChildHandle, class UTickableTransformConstraint* InConstraint, const bool bMaintainOffset);
	static class UTickableTransformConstraint* CreateFromType(class UWorld* InWorld, const ETransformConstraintType InType);
	static class UTransformableComponentHandle* CreateTransformableComponentHandle(class UWorld* InWorld, class USceneComponent* InSceneComponent, const class FName& InSocketName);
	static class UTransformableHandle* CreateTransformableHandle(class UWorld* InWorld, class UObject* InObject, const class FName& InAttachmentName);
	static TArray<class UTickableConstraint*> GetConstraintsArray(class UWorld* InWorld);
	static bool RemoveConstraint(class UWorld* InWorld, int32 InIndex);
	static bool RemoveThisConstraint(class UWorld* InWorld, class UTickableConstraint* InTickableConstraint);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ConstraintsScriptingLibrary")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ConstraintsScriptingLibrary")
	}
	static class UConstraintsScriptingLibrary* GetDefaultObj()
	{
		return GetDefaultObjImpl<UConstraintsScriptingLibrary>();
	}
};
DUMPER7_ASSERTS_UConstraintsScriptingLibrary;

// Class Constraints.TransformableHandle
// 0x0038 (0x0060 - 0x0028)
class UTransformableHandle : public UObject
{
public:
	uint8                                         Pad_28[0x4];                                       // 0x0028(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	struct FMovieSceneObjectBindingID             ConstraintBindingID;                               // 0x002C(0x0018)(BlueprintVisible, BlueprintReadOnly, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_44[0x1C];                                      // 0x0044(0x001C)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TransformableHandle")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TransformableHandle")
	}
	static class UTransformableHandle* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTransformableHandle>();
	}
};
DUMPER7_ASSERTS_UTransformableHandle;

// Class Constraints.TransformableComponentHandle
// 0x0010 (0x0070 - 0x0060)
class UTransformableComponentHandle final : public UTransformableHandle
{
public:
	TWeakObjectPtr<class USceneComponent>         Component;                                         // 0x0060(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, InstancedReference, IsPlainOldData, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class FName                                   SocketName;                                        // 0x0068(0x0008)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TransformableComponentHandle")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TransformableComponentHandle")
	}
	static class UTransformableComponentHandle* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTransformableComponentHandle>();
	}
};
DUMPER7_ASSERTS_UTransformableComponentHandle;

// Class Constraints.TickableTransformConstraint
// 0x0020 (0x00B0 - 0x0090)
class UTickableTransformConstraint : public UTickableConstraint
{
public:
	class UTransformableHandle*                   ParentTRSHandle;                                   // 0x0090(0x0008)(BlueprintVisible, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class UTransformableHandle*                   ChildTRSHandle;                                    // 0x0098(0x0008)(BlueprintVisible, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bMaintainOffset;                                   // 0x00A0(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_A1[0x3];                                       // 0x00A1(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         Weight;                                            // 0x00A4(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bDynamicOffset;                                    // 0x00A8(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	ETransformConstraintType                      Type;                                              // 0x00A9(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_AA[0x6];                                       // 0x00AA(0x0006)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableTransformConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableTransformConstraint")
	}
	static class UTickableTransformConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableTransformConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableTransformConstraint;

// Class Constraints.TickableTranslationConstraint
// 0x0028 (0x00D8 - 0x00B0)
class UTickableTranslationConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_B0[0x8];                                       // 0x00B0(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                OffsetTranslation;                                 // 0x00B8(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00D0(0x0003)(Edit, BlueprintVisible, DisableEditOnInstance, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_D3[0x5];                                       // 0x00D3(0x0005)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableTranslationConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableTranslationConstraint")
	}
	static class UTickableTranslationConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableTranslationConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableTranslationConstraint;

// Class Constraints.TickableRotationConstraint
// 0x0040 (0x00F0 - 0x00B0)
class UTickableRotationConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_B0[0x10];                                      // 0x00B0(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	struct FQuat                                  OffsetRotation;                                    // 0x00C0(0x0020)(Edit, BlueprintVisible, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00E0(0x0003)(Edit, BlueprintVisible, DisableEditOnInstance, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_E3[0xD];                                       // 0x00E3(0x000D)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableRotationConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableRotationConstraint")
	}
	static class UTickableRotationConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableRotationConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableRotationConstraint;

// Class Constraints.TickableScaleConstraint
// 0x0028 (0x00D8 - 0x00B0)
class UTickableScaleConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_B0[0x8];                                       // 0x00B0(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                OffsetScale;                                       // 0x00B8(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00D0(0x0003)(Edit, BlueprintVisible, DisableEditOnInstance, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_D3[0x5];                                       // 0x00D3(0x0005)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableScaleConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableScaleConstraint")
	}
	static class UTickableScaleConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableScaleConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableScaleConstraint;

// Class Constraints.TickableParentConstraint
// 0x0080 (0x0130 - 0x00B0)
class UTickableParentConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_B0[0x10];                                      // 0x00B0(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	struct FTransform                             OffsetTransform;                                   // 0x00C0(0x0060)(Edit, BlueprintVisible, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bScaling;                                          // 0x0120(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FTransformFilter                       TransformFilter;                                   // 0x0121(0x0009)(Edit, BlueprintVisible, DisableEditOnInstance, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_12A[0x6];                                      // 0x012A(0x0006)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableParentConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableParentConstraint")
	}
	static class UTickableParentConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableParentConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableParentConstraint;

// Class Constraints.TickableLookAtConstraint
// 0x0018 (0x00C8 - 0x00B0)
class UTickableLookAtConstraint final : public UTickableTransformConstraint
{
public:
	struct FVector                                Axis;                                              // 0x00B0(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TickableLookAtConstraint")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TickableLookAtConstraint")
	}
	static class UTickableLookAtConstraint* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTickableLookAtConstraint>();
	}
};
DUMPER7_ASSERTS_UTickableLookAtConstraint;

}

