#pragma once

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

// Package: AnimationSharing

#include "Basic.hpp"

#include "CoreUObject_classes.hpp"
#include "Engine_classes.hpp"
#include "AnimationSharing_structs.hpp"


SDK_NAMESPACE_START

// Class AnimationSharing.AnimationSharingStateProcessor
// 0x0028 (0x0050 - 0x0028)
class UAnimationSharingStateProcessor final : public UObject
{
public:
	TSoftObjectPtr<class UEnum>                   AnimationStateEnum;                                // 0x0028(0x0028)(Edit, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)

public:
	class UEnum* GetAnimationStateEnum();
	void ProcessActorState(int32* OutState, class AActor* InActor, uint8 CurrentState, uint8 OnDemandState, bool* bShouldProcess);

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

// Class AnimationSharing.AnimSharingStateInstance
// 0x0020 (0x0400 - 0x03E0)
class UAnimSharingStateInstance final : public UAnimInstance
{
public:
	class UAnimSequence*                          AnimationToPlay;                                   // 0x03D8(0x0008)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)
	float                                         PermutationTimeOffset;                             // 0x03E0(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	float                                         PlayRate;                                          // 0x03E4(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	bool                                          bStateBool;                                        // 0x03E8(0x0001)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_3E9[0x7];                                      // 0x03E9(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	class UAnimSharingInstance*                   Instance;                                          // 0x03F0(0x0008)(ZeroConstructor, Transient, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPrivate, TObjectPtr)
	uint8                                         Pad_3F8[0x8];                                      // 0x03F8(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void GetInstancedActors(TArray<class AActor*>* Actors);

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

// Class AnimationSharing.AnimSharingTransitionInstance
// 0x0010 (0x03F0 - 0x03E0)
class UAnimSharingTransitionInstance final : public UAnimInstance
{
public:
	TWeakObjectPtr<class USkeletalMeshComponent>  FromComponent;                                     // 0x03D8(0x0008)(Edit, BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, InstancedReference, IsPlainOldData, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	TWeakObjectPtr<class USkeletalMeshComponent>  ToComponent;                                       // 0x03E0(0x0008)(Edit, BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, InstancedReference, IsPlainOldData, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	float                                         BlendTime;                                         // 0x03E8(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	bool                                          bBlendBool;                                        // 0x03EC(0x0001)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_3ED[0x3];                                      // 0x03ED(0x0003)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class AnimationSharing.AnimSharingAdditiveInstance
// 0x0010 (0x03F0 - 0x03E0)
class UAnimSharingAdditiveInstance final : public UAnimInstance
{
public:
	TWeakObjectPtr<class USkeletalMeshComponent>  BaseComponent;                                     // 0x03D8(0x0008)(Edit, BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, InstancedReference, IsPlainOldData, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	TWeakObjectPtr<class UAnimSequence>           AdditiveAnimation;                                 // 0x03E0(0x0008)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	float                                         Alpha;                                             // 0x03E8(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	bool                                          bStateBool;                                        // 0x03EC(0x0001)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Transient, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_3ED[0x3];                                      // 0x03ED(0x0003)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class AnimationSharing.AnimSharingInstance
// 0x00F8 (0x0120 - 0x0028)
class UAnimSharingInstance final : public UObject
{
public:
	TArray<class AActor*>                         RegisteredActors;                                  // 0x0028(0x0010)(Edit, ZeroConstructor, Transient, EditConst, UObjectWrapper, NativeAccessSpecifierPublic, TObjectPtr)
	uint8                                         Pad_38[0x50];                                      // 0x0038(0x0050)(Fixing Size After Last Property [ Dumper-7 ])
	class UAnimationSharingStateProcessor*        StateProcessor;                                    // 0x0088(0x0008)(Edit, ZeroConstructor, Transient, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic, TObjectPtr)
	uint8                                         Pad_90[0x38];                                      // 0x0090(0x0038)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UAnimSequence*>                  UsedAnimationSequences;                            // 0x00C8(0x0010)(Edit, ZeroConstructor, Transient, EditConst, UObjectWrapper, NativeAccessSpecifierPublic, TObjectPtr)
	uint8                                         Pad_D8[0x10];                                      // 0x00D8(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	class UEnum*                                  StateEnum;                                         // 0x00E8(0x0008)(Edit, ZeroConstructor, Transient, EditConst, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic, TObjectPtr)
	class AActor*                                 SharingActor;                                      // 0x00F0(0x0008)(Edit, ZeroConstructor, Transient, EditConst, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic, TObjectPtr)
	uint8                                         Pad_F8[0x28];                                      // 0x00F8(0x0028)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class AnimationSharing.AnimationSharingManager
// 0x0060 (0x0088 - 0x0028)
class UAnimationSharingManager final : public UObject
{
public:
	TArray<class USkeleton*>                      Skeletons;                                         // 0x0028(0x0010)(ZeroConstructor, Transient, Protected, UObjectWrapper, NativeAccessSpecifierProtected, TObjectPtr)
	TArray<class UAnimSharingInstance*>           PerSkeletonData;                                   // 0x0038(0x0010)(Edit, ZeroConstructor, Transient, EditConst, Protected, UObjectWrapper, NativeAccessSpecifierProtected, TObjectPtr)
	uint8                                         Pad_48[0x40];                                      // 0x0048(0x0040)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static bool AnimationSharingEnabled();
	static bool CreateAnimationSharingManager(class UObject* WorldContextObject, const class UAnimationSharingSetup* Setup);
	static class UAnimationSharingManager* GetAnimationSharingManager(class UObject* WorldContextObject);

	void RegisterActorWithSkeletonBP(class AActor* InActor, const class USkeleton* SharingSkeleton);

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

// Class AnimationSharing.AnimationSharingSetup
// 0x0020 (0x0048 - 0x0028)
class UAnimationSharingSetup final : public UObject
{
public:
	TArray<struct FPerSkeletonAnimationSharingSetup> SkeletonSetups;                                 // 0x0028(0x0010)(Edit, ZeroConstructor, Config, NativeAccessSpecifierPublic)
	struct FAnimationSharingScalability           ScalabilitySettings;                               // 0x0038(0x0010)(Edit, Config, NoDestructor, NativeAccessSpecifierPublic)

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

SDK_NAMESPACE_END
