#pragma once

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

// Package: Constraints

#include "Basic.hpp"

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


namespace SDK
{

// Class Constraints.ConstraintsActor
// 0x0008 (0x02C0 - 0x02B8)
class AConstraintsActor final : public AActor
{
public:
	class UConstraintsManager*                    ConstraintsManager;                                // 0x02B8(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
// 0x0048 (0x0070 - 0x0028)
class UTickableConstraint : public UObject
{
public:
	struct FConstraintTickFunction                ConstraintTick;                                    // 0x0028(0x0040)(NativeAccessSpecifierPublic)
	bool                                          Active;                                            // 0x0068(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_69[0x7];                                       // 0x0069(0x0007)(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 class UConstraintsManager* GetManager(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
// 0x0030 (0x0058 - 0x0028)
class UTransformableHandle : public UObject
{
public:
	struct FMovieSceneObjectBindingID             ConstraintBindingID;                               // 0x0028(0x0018)(BlueprintVisible, BlueprintReadOnly, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_40[0x18];                                      // 0x0040(0x0018)(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 (0x0068 - 0x0058)
class UTransformableComponentHandle final : public UTransformableHandle
{
public:
	TWeakObjectPtr<class USceneComponent>         Component;                                         // 0x0058(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, InstancedReference, IsPlainOldData, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class FName                                   SocketName;                                        // 0x0060(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 (0x0090 - 0x0070)
class UTickableTransformConstraint : public UTickableConstraint
{
public:
	class UTransformableHandle*                   ParentTRSHandle;                                   // 0x0070(0x0008)(BlueprintVisible, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class UTransformableHandle*                   ChildTRSHandle;                                    // 0x0078(0x0008)(BlueprintVisible, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bMaintainOffset;                                   // 0x0080(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_81[0x3];                                       // 0x0081(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         Weight;                                            // 0x0084(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bDynamicOffset;                                    // 0x0088(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	ETransformConstraintType                      Type;                                              // 0x0089(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_8A[0x6];                                       // 0x008A(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 (0x00B8 - 0x0090)
class UTickableTranslationConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_90[0x8];                                       // 0x0090(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                OffsetTranslation;                                 // 0x0098(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00B0(0x0003)(BlueprintVisible, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_B3[0x5];                                       // 0x00B3(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 (0x00D0 - 0x0090)
class UTickableRotationConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_90[0x10];                                      // 0x0090(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	struct FQuat                                  OffsetRotation;                                    // 0x00A0(0x0020)(Edit, BlueprintVisible, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00C0(0x0003)(BlueprintVisible, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_C3[0xD];                                       // 0x00C3(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 (0x00B8 - 0x0090)
class UTickableScaleConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_90[0x8];                                       // 0x0090(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                OffsetScale;                                       // 0x0098(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FFilterOptionPerAxis                   AxisFilter;                                        // 0x00B0(0x0003)(BlueprintVisible, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_B3[0x5];                                       // 0x00B3(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 (0x0110 - 0x0090)
class UTickableParentConstraint final : public UTickableTransformConstraint
{
public:
	uint8                                         Pad_90[0x10];                                      // 0x0090(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	struct FTransform                             OffsetTransform;                                   // 0x00A0(0x0060)(Edit, BlueprintVisible, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bScaling;                                          // 0x0100(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FTransformFilter                       TransformFilter;                                   // 0x0101(0x0009)(BlueprintVisible, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_10A[0x6];                                      // 0x010A(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 (0x00A8 - 0x0090)
class UTickableLookAtConstraint final : public UTickableTransformConstraint
{
public:
	struct FVector                                Axis;                                              // 0x0090(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;

}

