#pragma once

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

// Package: GameplayTasks

#include "Basic.hpp"

#include "CoreUObject_classes.hpp"
#include "GameplayTasks_structs.hpp"
#include "Engine_classes.hpp"


namespace SDK
{

// Class GameplayTasks.GameplayTask
// 0x0040 (0x0068 - 0x0028)
class UGameplayTask : public UObject
{
public:
	uint8                                         Pad_28[0x8];                                       // 0x0028(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	class FName                                   InstanceName;                                      // 0x0030(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_38[0x2];                                       // 0x0038(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	ETaskResourceOverlapPolicy                    ResourceOverlapPolicy;                             // 0x003A(0x0001)(ZeroConstructor, Config, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_3B[0x25];                                      // 0x003B(0x0025)(Fixing Size After Last Property [ Dumper-7 ])
	class UGameplayTask*                          ChildTask;                                         // 0x0060(0x0008)(ZeroConstructor, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)

public:
	void EndTask();
	void ReadyForActivation();

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

// Class GameplayTasks.GameplayTaskOwnerInterface
// 0x0000 (0x0000 - 0x0000)
class IGameplayTaskOwnerInterface final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("GameplayTaskOwnerInterface")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"GameplayTaskOwnerInterface")
	}
	static class IGameplayTaskOwnerInterface* GetDefaultObj()
	{
		return GetDefaultObjImpl<IGameplayTaskOwnerInterface>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_IGameplayTaskOwnerInterface;

// Class GameplayTasks.GameplayTaskResource
// 0x0010 (0x0038 - 0x0028)
class UGameplayTaskResource : public UObject
{
public:
	int32                                         ManualResourceID;                                  // 0x0028(0x0004)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Config, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	int8                                          AutoResourceID;                                    // 0x002C(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_2D[0x3];                                       // 0x002D(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	uint8                                         bManuallySetID : 1;                                // 0x0030(0x0001)(BitIndex: 0x00, PropSize: 0x0001 (Edit, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic))
	uint8                                         Pad_31[0x7];                                       // 0x0031(0x0007)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class GameplayTasks.GameplayTasksComponent
// 0x0078 (0x0118 - 0x00A0)
class UGameplayTasksComponent : public UActorComponent
{
public:
	uint8                                         Pad_A0[0x18];                                      // 0x00A0(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UGameplayTask*>                  TaskPriorityQueue;                                 // 0x00B8(0x0010)(ZeroConstructor, Protected, UObjectWrapper, NativeAccessSpecifierProtected)
	uint8                                         Pad_C8[0x10];                                      // 0x00C8(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UGameplayTask*>                  TickingTasks;                                      // 0x00D8(0x0010)(ZeroConstructor, Protected, UObjectWrapper, NativeAccessSpecifierProtected)
	TArray<class UGameplayTask*>                  KnownTasks;                                        // 0x00E8(0x0010)(ZeroConstructor, Transient, Protected, UObjectWrapper, NativeAccessSpecifierProtected)
	TMulticastInlineDelegate<void(const struct FGameplayResourceSet& NewlyClaimed, const struct FGameplayResourceSet& FreshlyReleased)> OnClaimedResourcesChange; // 0x00F8(0x0010)(BlueprintVisible, ZeroConstructor, InstancedReference, NativeAccessSpecifierPublic)
	TArray<class UGameplayTask*>                  SimulatedTasks;                                    // 0x0108(0x0010)(Net, ZeroConstructor, RepNotify, UObjectWrapper, NativeAccessSpecifierPrivate)

public:
	static EGameplayTaskRunResult K2_RunGameplayTask(TScriptInterface<class IGameplayTaskOwnerInterface> TaskOwner, class UGameplayTask* Task, uint8 Priority, const TArray<TSubclassOf<class UGameplayTaskResource>>& AdditionalRequiredResources, const TArray<TSubclassOf<class UGameplayTaskResource>>& AdditionalClaimedResources);

	void OnRep_SimulatedTasks(const TArray<class UGameplayTask*>& PreviousSimulatedTasks);

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

// Class GameplayTasks.GameplayTask_ClaimResource
// 0x0000 (0x0068 - 0x0068)
class UGameplayTask_ClaimResource final : public UGameplayTask
{
public:
	static class UGameplayTask_ClaimResource* ClaimResource(TScriptInterface<class IGameplayTaskOwnerInterface> InTaskOwner, TSubclassOf<class UGameplayTaskResource> ResourceClass, const uint8 Priority, const class FName TaskInstanceName);
	static class UGameplayTask_ClaimResource* ClaimResources(TScriptInterface<class IGameplayTaskOwnerInterface> InTaskOwner, const TArray<TSubclassOf<class UGameplayTaskResource>>& ResourceClasses, const uint8 Priority, const class FName TaskInstanceName);

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

// Class GameplayTasks.GameplayTask_SpawnActor
// 0x0058 (0x00C0 - 0x0068)
class UGameplayTask_SpawnActor final : public UGameplayTask
{
public:
	TMulticastInlineDelegate<void(class AActor* SpawnedActor)> Success;                              // 0x0068(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(class AActor* SpawnedActor)> DidNotSpawn;                          // 0x0078(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_88[0x30];                                      // 0x0088(0x0030)(Fixing Size After Last Property [ Dumper-7 ])
	TSubclassOf<class AActor>                     ClassToSpawn;                                      // 0x00B8(0x0008)(ZeroConstructor, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)

public:
	static class UGameplayTask_SpawnActor* SpawnActor(TScriptInterface<class IGameplayTaskOwnerInterface> TaskOwner, const struct FVector& SpawnLocation, const struct FRotator& SpawnRotation, TSubclassOf<class AActor> Class_0, bool bSpawnOnlyOnAuthority);

	bool BeginSpawningActor(class UObject* WorldContextObject, class AActor** SpawnedActor);
	void FinishSpawningActor(class UObject* WorldContextObject, class AActor* SpawnedActor);

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

// Class GameplayTasks.GameplayTask_TimeLimitedExecution
// 0x0038 (0x00A0 - 0x0068)
class UGameplayTask_TimeLimitedExecution final : public UGameplayTask
{
public:
	TMulticastInlineDelegate<void()>              OnFinished;                                        // 0x0068(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void()>              OnTimeExpired;                                     // 0x0078(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_88[0x18];                                      // 0x0088(0x0018)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class GameplayTasks.GameplayTask_WaitDelay
// 0x0020 (0x0088 - 0x0068)
class UGameplayTask_WaitDelay final : public UGameplayTask
{
public:
	TMulticastInlineDelegate<void()>              OnFinish;                                          // 0x0068(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_78[0x10];                                      // 0x0078(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UGameplayTask_WaitDelay* TaskWaitDelay(TScriptInterface<class IGameplayTaskOwnerInterface> TaskOwner, float Time, const uint8 Priority);

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

}

