#pragma once

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

// Package: NBControlRig

#include "Basic.hpp"

#include "Engine_classes.hpp"
#include "CoreUObject_structs.hpp"
#include "NBControlRig_structs.hpp"


namespace SDK
{

// Class NBControlRig.ANS_FullBodyIKBase
// 0x0008 (0x0038 - 0x0030)
class UANS_FullBodyIKBase : public UAnimNotifyState
{
public:
	float                                         BlendOutTime;                                      // 0x0030(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_34[0x4];                                       // 0x0034(0x0004)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void OnUpdateFullBodyIKContext(struct FFullBodyIKContext* FullBodyIKCtxU, class USkeletalMeshComponent* MeshComp) const;

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

// Class NBControlRig.IKControllerComponent
// 0x0158 (0x01F8 - 0x00A0)
class UIKControllerComponent : public UActorComponent
{
public:
	struct FAimIKContext                          AimIKContext;                                      // 0x00A0(0x0050)(Edit, BlueprintVisible, NoDestructor, NativeAccessSpecifierPublic)
	float                                         AimIKAlpha;                                        // 0x00F0(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         CurrentAimIKAlpha;                                 // 0x00F4(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FVector                                AimTargetPosition;                                 // 0x00F8(0x0018)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void()>              OnFullBodyIKAlphaUpdatedDelegate;                  // 0x0110(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	struct FFullBodyIKContext                     FullBodyIKContext;                                 // 0x0120(0x0018)(Edit, BlueprintVisible, NativeAccessSpecifierPublic)
	float                                         FullBodyIKAlpha;                                   // 0x0138(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         CurrentFullBodyIKAlpha;                            // 0x013C(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         FullBodyInterpSpeed;                               // 0x0140(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_144[0xC];                                      // 0x0144(0x000C)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         FullBodyIKBlendInTime;                             // 0x0150(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_154[0xA4];                                     // 0x0154(0x00A4)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void CalculateCustomAimTargetPosition(const struct FVector& InAimTargetPosition, struct FVector* OutAimTargetPosition, bool* bUpdated);
	bool CanApplyFullBodyIK();
	void DisableIK(const class UAnimNotifyState* InAnimNotifyState, EIKType IKType, float BlendOutTime);
	void EnableIK(const class UAnimNotifyState* InAnimNotifyState, EIKType IKType, const struct FIKContext& IKContext);
	void SetUpdateAimTargetPosition(bool bEnable);

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

}

