#pragma once

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

// Package: PropertyAccess

#include "Basic.hpp"


namespace SDK
{

// Enum PropertyAccess.EPropertyAccessCopyBatch
// NumValues: 0x0006
enum class EPropertyAccessCopyBatch : uint8
{
	InternalUnbatched                        = 0,
	ExternalUnbatched                        = 1,
	InternalBatched                          = 2,
	ExternalBatched                          = 3,
	Count                                    = 4,
	EPropertyAccessCopyBatch_MAX             = 5,
};

// Enum PropertyAccess.EPropertyAccessCopyType
// NumValues: 0x0012
enum class EPropertyAccessCopyType : uint8
{
	None                                     = 0,
	Plain                                    = 1,
	Complex                                  = 2,
	Bool                                     = 3,
	Struct                                   = 4,
	Object                                   = 5,
	Name                                     = 6,
	Array                                    = 7,
	PromoteBoolToByte                        = 8,
	PromoteBoolToInt32                       = 9,
	PromoteBoolToInt64                       = 10,
	PromoteBoolToFloat                       = 11,
	PromoteByteToInt32                       = 12,
	PromoteByteToInt64                       = 13,
	PromoteByteToFloat                       = 14,
	PromoteInt32ToInt64                      = 15,
	PromoteInt32ToFloat                      = 16,
	EPropertyAccessCopyType_MAX              = 17,
};

// Enum PropertyAccess.EPropertyAccessObjectType
// NumValues: 0x0005
enum class EPropertyAccessObjectType : uint8
{
	None                                     = 0,
	Object                                   = 1,
	WeakObject                               = 2,
	SoftObject                               = 3,
	EPropertyAccessObjectType_MAX            = 4,
};

// Enum PropertyAccess.EPropertyAccessIndirectionType
// NumValues: 0x0006
enum class EPropertyAccessIndirectionType : uint8
{
	Offset                                   = 0,
	Object                                   = 1,
	Array                                    = 2,
	ScriptFunction                           = 3,
	NativeFunction                           = 4,
	EPropertyAccessIndirectionType_MAX       = 5,
};

// ScriptStruct PropertyAccess.PropertyAccessSegment
// 0x0040 (0x0040 - 0x0000)
struct FPropertyAccessSegment final
{
public:
	class FName                                   Name;                                              // 0x0000(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	class UStruct*                                Struct;                                            // 0x0008(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	TFieldPath<class FProperty>                   Property;                                          // 0x0010(0x0020)(HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	class UFunction*                              Function;                                          // 0x0030(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         ArrayIndex;                                        // 0x0038(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint16                                        Flags;                                             // 0x003C(0x0002)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_3E[0x2];                                       // 0x003E(0x0002)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessSegment) == 0x000008, "Wrong alignment on FPropertyAccessSegment");
static_assert(sizeof(FPropertyAccessSegment) == 0x000040, "Wrong size on FPropertyAccessSegment");
static_assert(offsetof(FPropertyAccessSegment, Name) == 0x000000, "Member 'FPropertyAccessSegment::Name' has a wrong offset!");
static_assert(offsetof(FPropertyAccessSegment, Struct) == 0x000008, "Member 'FPropertyAccessSegment::Struct' has a wrong offset!");
static_assert(offsetof(FPropertyAccessSegment, Property) == 0x000010, "Member 'FPropertyAccessSegment::Property' has a wrong offset!");
static_assert(offsetof(FPropertyAccessSegment, Function) == 0x000030, "Member 'FPropertyAccessSegment::Function' has a wrong offset!");
static_assert(offsetof(FPropertyAccessSegment, ArrayIndex) == 0x000038, "Member 'FPropertyAccessSegment::ArrayIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessSegment, Flags) == 0x00003C, "Member 'FPropertyAccessSegment::Flags' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessPath
// 0x000C (0x000C - 0x0000)
struct FPropertyAccessPath final
{
public:
	int32                                         PathSegmentStartIndex;                             // 0x0000(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         PathSegmentCount;                                  // 0x0004(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         bHasEvents : 1;                                    // 0x0008(0x0001)(BitIndex: 0x00, PropSize: 0x0001 (NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         Pad_9[0x3];                                        // 0x0009(0x0003)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessPath) == 0x000004, "Wrong alignment on FPropertyAccessPath");
static_assert(sizeof(FPropertyAccessPath) == 0x00000C, "Wrong size on FPropertyAccessPath");
static_assert(offsetof(FPropertyAccessPath, PathSegmentStartIndex) == 0x000000, "Member 'FPropertyAccessPath::PathSegmentStartIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessPath, PathSegmentCount) == 0x000004, "Member 'FPropertyAccessPath::PathSegmentCount' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessCopy
// 0x0010 (0x0010 - 0x0000)
struct FPropertyAccessCopy final
{
public:
	int32                                         AccessIndex;                                       // 0x0000(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         DestAccessStartIndex;                              // 0x0004(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         DestAccessEndIndex;                                // 0x0008(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	EPropertyAccessCopyType                       Type;                                              // 0x000C(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_D[0x3];                                        // 0x000D(0x0003)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessCopy) == 0x000004, "Wrong alignment on FPropertyAccessCopy");
static_assert(sizeof(FPropertyAccessCopy) == 0x000010, "Wrong size on FPropertyAccessCopy");
static_assert(offsetof(FPropertyAccessCopy, AccessIndex) == 0x000000, "Member 'FPropertyAccessCopy::AccessIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessCopy, DestAccessStartIndex) == 0x000004, "Member 'FPropertyAccessCopy::DestAccessStartIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessCopy, DestAccessEndIndex) == 0x000008, "Member 'FPropertyAccessCopy::DestAccessEndIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessCopy, Type) == 0x00000C, "Member 'FPropertyAccessCopy::Type' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessCopyBatch
// 0x0010 (0x0010 - 0x0000)
struct FPropertyAccessCopyBatch final
{
public:
	TArray<struct FPropertyAccessCopy>            Copies;                                            // 0x0000(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
};
static_assert(alignof(FPropertyAccessCopyBatch) == 0x000008, "Wrong alignment on FPropertyAccessCopyBatch");
static_assert(sizeof(FPropertyAccessCopyBatch) == 0x000010, "Wrong size on FPropertyAccessCopyBatch");
static_assert(offsetof(FPropertyAccessCopyBatch, Copies) == 0x000000, "Member 'FPropertyAccessCopyBatch::Copies' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessIndirectionChain
// 0x0030 (0x0030 - 0x0000)
struct FPropertyAccessIndirectionChain final
{
public:
	TFieldPath<class FProperty>                   Property;                                          // 0x0000(0x0020)(HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         IndirectionStartIndex;                             // 0x0020(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         IndirectionEndIndex;                               // 0x0024(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         EventId;                                           // 0x0028(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_2C[0x4];                                       // 0x002C(0x0004)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessIndirectionChain) == 0x000008, "Wrong alignment on FPropertyAccessIndirectionChain");
static_assert(sizeof(FPropertyAccessIndirectionChain) == 0x000030, "Wrong size on FPropertyAccessIndirectionChain");
static_assert(offsetof(FPropertyAccessIndirectionChain, Property) == 0x000000, "Member 'FPropertyAccessIndirectionChain::Property' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirectionChain, IndirectionStartIndex) == 0x000020, "Member 'FPropertyAccessIndirectionChain::IndirectionStartIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirectionChain, IndirectionEndIndex) == 0x000024, "Member 'FPropertyAccessIndirectionChain::IndirectionEndIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirectionChain, EventId) == 0x000028, "Member 'FPropertyAccessIndirectionChain::EventId' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessIndirection
// 0x0040 (0x0040 - 0x0000)
struct FPropertyAccessIndirection final
{
public:
	TFieldPath<class FArrayProperty>              ArrayProperty;                                     // 0x0000(0x0020)(HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	class UFunction*                              Function;                                          // 0x0020(0x0008)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         ReturnBufferSize;                                  // 0x0028(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         ReturnBufferAlignment;                             // 0x002C(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	int32                                         ArrayIndex;                                        // 0x0030(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint32                                        Offset;                                            // 0x0034(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	EPropertyAccessObjectType                     ObjectType;                                        // 0x0038(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	EPropertyAccessIndirectionType                Type;                                              // 0x0039(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_3A[0x6];                                       // 0x003A(0x0006)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessIndirection) == 0x000008, "Wrong alignment on FPropertyAccessIndirection");
static_assert(sizeof(FPropertyAccessIndirection) == 0x000040, "Wrong size on FPropertyAccessIndirection");
static_assert(offsetof(FPropertyAccessIndirection, ArrayProperty) == 0x000000, "Member 'FPropertyAccessIndirection::ArrayProperty' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, Function) == 0x000020, "Member 'FPropertyAccessIndirection::Function' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, ReturnBufferSize) == 0x000028, "Member 'FPropertyAccessIndirection::ReturnBufferSize' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, ReturnBufferAlignment) == 0x00002C, "Member 'FPropertyAccessIndirection::ReturnBufferAlignment' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, ArrayIndex) == 0x000030, "Member 'FPropertyAccessIndirection::ArrayIndex' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, Offset) == 0x000034, "Member 'FPropertyAccessIndirection::Offset' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, ObjectType) == 0x000038, "Member 'FPropertyAccessIndirection::ObjectType' has a wrong offset!");
static_assert(offsetof(FPropertyAccessIndirection, Type) == 0x000039, "Member 'FPropertyAccessIndirection::Type' has a wrong offset!");

// ScriptStruct PropertyAccess.PropertyAccessLibrary
// 0x00C8 (0x00C8 - 0x0000)
struct FPropertyAccessLibrary final
{
public:
	TArray<struct FPropertyAccessSegment>         PathSegments;                                      // 0x0000(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	TArray<struct FPropertyAccessPath>            SrcPaths;                                          // 0x0010(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	TArray<struct FPropertyAccessPath>            DestPaths;                                         // 0x0020(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	struct FPropertyAccessCopyBatch               CopyBatches[0x4];                                  // 0x0030(0x0010)(NativeAccessSpecifierPrivate)
	TArray<struct FPropertyAccessIndirectionChain> SrcAccesses;                                      // 0x0070(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPrivate)
	TArray<struct FPropertyAccessIndirectionChain> DestAccesses;                                     // 0x0080(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPrivate)
	TArray<struct FPropertyAccessIndirection>     Indirections;                                      // 0x0090(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPrivate)
	TArray<int32>                                 EventAccessIndices;                                // 0x00A0(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	uint8                                         Pad_B0[0x18];                                      // 0x00B0(0x0018)(Fixing Struct Size After Last Property [ Dumper-7 ])
};
static_assert(alignof(FPropertyAccessLibrary) == 0x000008, "Wrong alignment on FPropertyAccessLibrary");
static_assert(sizeof(FPropertyAccessLibrary) == 0x0000C8, "Wrong size on FPropertyAccessLibrary");
static_assert(offsetof(FPropertyAccessLibrary, PathSegments) == 0x000000, "Member 'FPropertyAccessLibrary::PathSegments' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, SrcPaths) == 0x000010, "Member 'FPropertyAccessLibrary::SrcPaths' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, DestPaths) == 0x000020, "Member 'FPropertyAccessLibrary::DestPaths' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, CopyBatches) == 0x000030, "Member 'FPropertyAccessLibrary::CopyBatches' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, SrcAccesses) == 0x000070, "Member 'FPropertyAccessLibrary::SrcAccesses' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, DestAccesses) == 0x000080, "Member 'FPropertyAccessLibrary::DestAccesses' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, Indirections) == 0x000090, "Member 'FPropertyAccessLibrary::Indirections' has a wrong offset!");
static_assert(offsetof(FPropertyAccessLibrary, EventAccessIndices) == 0x0000A0, "Member 'FPropertyAccessLibrary::EventAccessIndices' has a wrong offset!");

}

