#pragma once

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

// Package: DataRegistry

#include "Basic.hpp"

#include "CoreUObject_classes.hpp"
#include "DataRegistry_structs.hpp"
#include "Engine_structs.hpp"
#include "Engine_classes.hpp"
#include "DeveloperSettings_classes.hpp"


namespace SDK
{

// Class DataRegistry.DataRegistry
// 0x0098 (0x00C0 - 0x0028)
class UDataRegistry final : public UObject
{
public:
	class FName                                   RegistryType;                                      // 0x0028(0x0008)(Edit, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, AssetRegistrySearchable, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FDataRegistryIdFormat                  IdFormat;                                          // 0x0030(0x0008)(Edit, DisableEditOnInstance, NoDestructor, Protected, NativeAccessSpecifierProtected)
	class UScriptStruct*                          ItemStruct;                                        // 0x0038(0x0008)(Edit, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, AssetRegistrySearchable, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	TArray<class UDataRegistrySource*>            DataSources;                                       // 0x0040(0x0010)(Edit, ExportObject, ZeroConstructor, DisableEditOnInstance, ContainsInstancedReference, Protected, NativeAccessSpecifierProtected)
	TArray<class UDataRegistrySource*>            RuntimeSources;                                    // 0x0050(0x0010)(Edit, ExportObject, ZeroConstructor, Transient, DisableEditOnInstance, EditConst, ContainsInstancedReference, Protected, NativeAccessSpecifierProtected)
	float                                         TimerUpdateFrequency;                              // 0x0060(0x0004)(Edit, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FDataRegistryCachePolicy               DefaultCachePolicy;                                // 0x0064(0x0014)(Edit, DisableEditOnInstance, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_78[0x48];                                      // 0x0078(0x0048)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistry">();
	}
	static class UDataRegistry* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistry>();
	}
};
static_assert(alignof(UDataRegistry) == 0x000008, "Wrong alignment on UDataRegistry");
static_assert(sizeof(UDataRegistry) == 0x0000C0, "Wrong size on UDataRegistry");
static_assert(offsetof(UDataRegistry, RegistryType) == 0x000028, "Member 'UDataRegistry::RegistryType' has a wrong offset!");
static_assert(offsetof(UDataRegistry, IdFormat) == 0x000030, "Member 'UDataRegistry::IdFormat' has a wrong offset!");
static_assert(offsetof(UDataRegistry, ItemStruct) == 0x000038, "Member 'UDataRegistry::ItemStruct' has a wrong offset!");
static_assert(offsetof(UDataRegistry, DataSources) == 0x000040, "Member 'UDataRegistry::DataSources' has a wrong offset!");
static_assert(offsetof(UDataRegistry, RuntimeSources) == 0x000050, "Member 'UDataRegistry::RuntimeSources' has a wrong offset!");
static_assert(offsetof(UDataRegistry, TimerUpdateFrequency) == 0x000060, "Member 'UDataRegistry::TimerUpdateFrequency' has a wrong offset!");
static_assert(offsetof(UDataRegistry, DefaultCachePolicy) == 0x000064, "Member 'UDataRegistry::DefaultCachePolicy' has a wrong offset!");

// Class DataRegistry.DataRegistrySettings
// 0x0018 (0x0050 - 0x0038)
class UDataRegistrySettings final : public UDeveloperSettings
{
public:
	TArray<struct FDirectoryPath>                 DirectoriesToScan;                                 // 0x0038(0x0010)(Edit, ZeroConstructor, Config, NativeAccessSpecifierPublic)
	bool                                          bInitializeAllLoadedRegistries;                    // 0x0048(0x0001)(Edit, ZeroConstructor, Config, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bIgnoreMissingCookedAssetRegistryData;             // 0x0049(0x0001)(Edit, ZeroConstructor, Config, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_4A[0x6];                                       // 0x004A(0x0006)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistrySettings">();
	}
	static class UDataRegistrySettings* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistrySettings>();
	}
};
static_assert(alignof(UDataRegistrySettings) == 0x000008, "Wrong alignment on UDataRegistrySettings");
static_assert(sizeof(UDataRegistrySettings) == 0x000050, "Wrong size on UDataRegistrySettings");
static_assert(offsetof(UDataRegistrySettings, DirectoriesToScan) == 0x000038, "Member 'UDataRegistrySettings::DirectoriesToScan' has a wrong offset!");
static_assert(offsetof(UDataRegistrySettings, bInitializeAllLoadedRegistries) == 0x000048, "Member 'UDataRegistrySettings::bInitializeAllLoadedRegistries' has a wrong offset!");
static_assert(offsetof(UDataRegistrySettings, bIgnoreMissingCookedAssetRegistryData) == 0x000049, "Member 'UDataRegistrySettings::bIgnoreMissingCookedAssetRegistryData' has a wrong offset!");

// Class DataRegistry.DataRegistrySource
// 0x0010 (0x0038 - 0x0028)
class UDataRegistrySource : public UObject
{
public:
	uint8                                         Pad_28[0x8];                                       // 0x0028(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	class UDataRegistrySource*                    ParentSource;                                      // 0x0030(0x0008)(ExportObject, ZeroConstructor, InstancedReference, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistrySource">();
	}
	static class UDataRegistrySource* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistrySource>();
	}
};
static_assert(alignof(UDataRegistrySource) == 0x000008, "Wrong alignment on UDataRegistrySource");
static_assert(sizeof(UDataRegistrySource) == 0x000038, "Wrong size on UDataRegistrySource");
static_assert(offsetof(UDataRegistrySource, ParentSource) == 0x000030, "Member 'UDataRegistrySource::ParentSource' has a wrong offset!");

// Class DataRegistry.MetaDataRegistrySource
// 0x00D0 (0x0108 - 0x0038)
class UMetaDataRegistrySource : public UDataRegistrySource
{
public:
	EMetaDataRegistrySourceAssetUsage             AssetUsage;                                        // 0x0038(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_39[0x7];                                       // 0x0039(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	struct FAssetManagerSearchRules               SearchRules;                                       // 0x0040(0x0050)(Edit, NativeAccessSpecifierPublic)
	TMap<class FName, class UDataRegistrySource*> RuntimeChildren;                                   // 0x0090(0x0050)(ExportObject, Transient, ContainsInstancedReference, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_E0[0x28];                                      // 0x00E0(0x0028)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"MetaDataRegistrySource">();
	}
	static class UMetaDataRegistrySource* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMetaDataRegistrySource>();
	}
};
static_assert(alignof(UMetaDataRegistrySource) == 0x000008, "Wrong alignment on UMetaDataRegistrySource");
static_assert(sizeof(UMetaDataRegistrySource) == 0x000108, "Wrong size on UMetaDataRegistrySource");
static_assert(offsetof(UMetaDataRegistrySource, AssetUsage) == 0x000038, "Member 'UMetaDataRegistrySource::AssetUsage' has a wrong offset!");
static_assert(offsetof(UMetaDataRegistrySource, SearchRules) == 0x000040, "Member 'UMetaDataRegistrySource::SearchRules' has a wrong offset!");
static_assert(offsetof(UMetaDataRegistrySource, RuntimeChildren) == 0x000090, "Member 'UMetaDataRegistrySource::RuntimeChildren' has a wrong offset!");

// Class DataRegistry.DataRegistrySource_CurveTable
// 0x0068 (0x00A0 - 0x0038)
class UDataRegistrySource_CurveTable final : public UDataRegistrySource
{
public:
	TSoftObjectPtr<class UCurveTable>             SourceTable;                                       // 0x0038(0x0028)(Edit, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FDataRegistrySource_DataTableRules     TableRules;                                        // 0x0060(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	class UCurveTable*                            CachedTable;                                       // 0x0068(0x0008)(ZeroConstructor, Transient, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UCurveTable*                            PreloadTable;                                      // 0x0070(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_78[0x28];                                      // 0x0078(0x0028)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistrySource_CurveTable">();
	}
	static class UDataRegistrySource_CurveTable* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistrySource_CurveTable>();
	}
};
static_assert(alignof(UDataRegistrySource_CurveTable) == 0x000008, "Wrong alignment on UDataRegistrySource_CurveTable");
static_assert(sizeof(UDataRegistrySource_CurveTable) == 0x0000A0, "Wrong size on UDataRegistrySource_CurveTable");
static_assert(offsetof(UDataRegistrySource_CurveTable, SourceTable) == 0x000038, "Member 'UDataRegistrySource_CurveTable::SourceTable' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_CurveTable, TableRules) == 0x000060, "Member 'UDataRegistrySource_CurveTable::TableRules' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_CurveTable, CachedTable) == 0x000068, "Member 'UDataRegistrySource_CurveTable::CachedTable' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_CurveTable, PreloadTable) == 0x000070, "Member 'UDataRegistrySource_CurveTable::PreloadTable' has a wrong offset!");

// Class DataRegistry.MetaDataRegistrySource_CurveTable
// 0x0010 (0x0118 - 0x0108)
class UMetaDataRegistrySource_CurveTable final : public UMetaDataRegistrySource
{
public:
	TSubclassOf<class UDataRegistrySource_CurveTable> CreatedSource;                                 // 0x0108(0x0008)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FDataRegistrySource_DataTableRules     TableRules;                                        // 0x0110(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"MetaDataRegistrySource_CurveTable">();
	}
	static class UMetaDataRegistrySource_CurveTable* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMetaDataRegistrySource_CurveTable>();
	}
};
static_assert(alignof(UMetaDataRegistrySource_CurveTable) == 0x000008, "Wrong alignment on UMetaDataRegistrySource_CurveTable");
static_assert(sizeof(UMetaDataRegistrySource_CurveTable) == 0x000118, "Wrong size on UMetaDataRegistrySource_CurveTable");
static_assert(offsetof(UMetaDataRegistrySource_CurveTable, CreatedSource) == 0x000108, "Member 'UMetaDataRegistrySource_CurveTable::CreatedSource' has a wrong offset!");
static_assert(offsetof(UMetaDataRegistrySource_CurveTable, TableRules) == 0x000110, "Member 'UMetaDataRegistrySource_CurveTable::TableRules' has a wrong offset!");

// Class DataRegistry.DataRegistrySource_DataTable
// 0x0068 (0x00A0 - 0x0038)
class UDataRegistrySource_DataTable final : public UDataRegistrySource
{
public:
	TSoftObjectPtr<class UDataTable>              SourceTable;                                       // 0x0038(0x0028)(Edit, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FDataRegistrySource_DataTableRules     TableRules;                                        // 0x0060(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	class UDataTable*                             CachedTable;                                       // 0x0068(0x0008)(ZeroConstructor, Transient, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UDataTable*                             PreloadTable;                                      // 0x0070(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_78[0x28];                                      // 0x0078(0x0028)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistrySource_DataTable">();
	}
	static class UDataRegistrySource_DataTable* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistrySource_DataTable>();
	}
};
static_assert(alignof(UDataRegistrySource_DataTable) == 0x000008, "Wrong alignment on UDataRegistrySource_DataTable");
static_assert(sizeof(UDataRegistrySource_DataTable) == 0x0000A0, "Wrong size on UDataRegistrySource_DataTable");
static_assert(offsetof(UDataRegistrySource_DataTable, SourceTable) == 0x000038, "Member 'UDataRegistrySource_DataTable::SourceTable' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_DataTable, TableRules) == 0x000060, "Member 'UDataRegistrySource_DataTable::TableRules' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_DataTable, CachedTable) == 0x000068, "Member 'UDataRegistrySource_DataTable::CachedTable' has a wrong offset!");
static_assert(offsetof(UDataRegistrySource_DataTable, PreloadTable) == 0x000070, "Member 'UDataRegistrySource_DataTable::PreloadTable' has a wrong offset!");

// Class DataRegistry.MetaDataRegistrySource_DataTable
// 0x0010 (0x0118 - 0x0108)
class UMetaDataRegistrySource_DataTable final : public UMetaDataRegistrySource
{
public:
	TSubclassOf<class UDataRegistrySource_DataTable> CreatedSource;                                  // 0x0108(0x0008)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FDataRegistrySource_DataTableRules     TableRules;                                        // 0x0110(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"MetaDataRegistrySource_DataTable">();
	}
	static class UMetaDataRegistrySource_DataTable* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMetaDataRegistrySource_DataTable>();
	}
};
static_assert(alignof(UMetaDataRegistrySource_DataTable) == 0x000008, "Wrong alignment on UMetaDataRegistrySource_DataTable");
static_assert(sizeof(UMetaDataRegistrySource_DataTable) == 0x000118, "Wrong size on UMetaDataRegistrySource_DataTable");
static_assert(offsetof(UMetaDataRegistrySource_DataTable, CreatedSource) == 0x000108, "Member 'UMetaDataRegistrySource_DataTable::CreatedSource' has a wrong offset!");
static_assert(offsetof(UMetaDataRegistrySource_DataTable, TableRules) == 0x000110, "Member 'UMetaDataRegistrySource_DataTable::TableRules' has a wrong offset!");

// Class DataRegistry.DataRegistrySubsystem
// 0x0098 (0x00C8 - 0x0030)
class UDataRegistrySubsystem final : public UEngineSubsystem
{
public:
	uint8                                         Pad_30[0x98];                                      // 0x0030(0x0098)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static bool AcquireItemBP(const struct FDataRegistryId& ItemId, TDelegate<void(const struct FDataRegistryId& ItemId, const struct FDataRegistryLookup& ResolvedLookup, EDataRegistryAcquireStatus Status)> AcquireCallback);
	static class FString Conv_DataRegistryIdToString(const struct FDataRegistryId& DataRegistryId);
	static class FString Conv_DataRegistryTypeToString(const struct FDataRegistryType& DataRegistryType);
	static bool EqualEqual_DataRegistryId(const struct FDataRegistryId& A, const struct FDataRegistryId& B);
	static bool EqualEqual_DataRegistryType(const struct FDataRegistryType& A, const struct FDataRegistryType& B);
	static void EvaluateDataRegistryCurve(const struct FDataRegistryId& ItemId, float InputValue, float DefaultValue, EDataRegistrySubsystemGetItemResult* OutResult, float* OutValue);
	static void FindCachedItemBP(const struct FDataRegistryId& ItemId, EDataRegistrySubsystemGetItemResult* OutResult, struct FTableRowBase* OutItem);
	static bool GetCachedItemBP(const struct FDataRegistryId& ItemId, struct FTableRowBase& OutItem);
	static bool GetCachedItemFromLookupBP(const struct FDataRegistryId& ItemId, const struct FDataRegistryLookup& ResolvedLookup, struct FTableRowBase* OutItem);
	static bool IsValidDataRegistryId(const struct FDataRegistryId& DataRegistryId);
	static bool IsValidDataRegistryType(const struct FDataRegistryType& DataRegistryType);
	static bool NotEqual_DataRegistryId(const struct FDataRegistryId& A, const struct FDataRegistryId& B);
	static bool NotEqual_DataRegistryType(const struct FDataRegistryType& A, const struct FDataRegistryType& B);

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DataRegistrySubsystem">();
	}
	static class UDataRegistrySubsystem* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDataRegistrySubsystem>();
	}
};
static_assert(alignof(UDataRegistrySubsystem) == 0x000008, "Wrong alignment on UDataRegistrySubsystem");
static_assert(sizeof(UDataRegistrySubsystem) == 0x0000C8, "Wrong size on UDataRegistrySubsystem");

}

