#pragma once

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

// Package: RigVM

#include "Basic.hpp"

#include "DeveloperSettings_classes.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "RigVM_structs.hpp"
#include "Engine_classes.hpp"


SDK_NAMESPACE_START

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

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

// Class RigVM.RigVMBlueprintGeneratedClass
// 0x0028 (0x0388 - 0x0360)
class URigVMBlueprintGeneratedClass : public UBlueprintGeneratedClass
{
public:
	uint8                                         Pad_360[0x8];                                      // 0x0360(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FRigVMGraphFunctionStore               GraphFunctionStore;                                // 0x0368(0x0020)(NativeAccessSpecifierPublic)

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

// Class RigVM.RigVM
// 0x0360 (0x0388 - 0x0028)
class URigVM : public UObject
{
public:
	struct FRigVMMemoryStorageStruct              LiteralMemoryStorage;                              // 0x0028(0x0050)(NativeAccessSpecifierPublic)
	struct FRigVMMemoryStorageStruct              DefaultWorkMemoryStorage;                          // 0x0078(0x0050)(NativeAccessSpecifierPublic)
	struct FRigVMMemoryStorageStruct              DefaultDebugMemoryStorage;                         // 0x00C8(0x0050)(NativeAccessSpecifierPublic)
	uint8                                         Pad_118[0x20];                                     // 0x0118(0x0020)(Fixing Size After Last Property [ Dumper-7 ])
	struct FRigVMByteCode                         ByteCodeStorage;                                   // 0x0138(0x00B0)(HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_1E8[0x8];                                      // 0x01E8(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FRigVMInstructionArray                 Instructions;                                      // 0x01F0(0x0010)(Transient, NativeAccessSpecifierPrivate)
	TArray<class FName>                           FunctionNamesStorage;                              // 0x0200(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	uint8                                         Pad_210[0x38];                                     // 0x0210(0x0038)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FRigVMParameter>                Parameters;                                        // 0x0248(0x0010)(ZeroConstructor, NativeAccessSpecifierPrivate)
	uint8                                         Pad_258[0xD8];                                     // 0x0258(0x00D8)(Fixing Size After Last Property [ Dumper-7 ])
	uint32                                        CachedVMHash;                                      // 0x0330(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_334[0x54];                                     // 0x0334(0x0054)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	int32 AddRigVMFunction(class UScriptStruct* InRigVMStruct, const class FName& InMethodName);
	bool Execute(struct FRigVMExtendedExecuteContext* Context, const class FName& InEntryName);
	bool GetParameterValueBool(const class FName& InParameterName, int32 InArrayIndex);
	double GetParameterValueDouble(const class FName& InParameterName, int32 InArrayIndex);
	float GetParameterValueFloat(const class FName& InParameterName, int32 InArrayIndex);
	int32 GetParameterValueInt(const class FName& InParameterName, int32 InArrayIndex);
	class FName GetParameterValueName(const class FName& InParameterName, int32 InArrayIndex);
	struct FQuat GetParameterValueQuat(const class FName& InParameterName, int32 InArrayIndex);
	class FString GetParameterValueString(const class FName& InParameterName, int32 InArrayIndex);
	struct FTransform GetParameterValueTransform(const class FName& InParameterName, int32 InArrayIndex);
	struct FVector GetParameterValueVector(const class FName& InParameterName, int32 InArrayIndex);
	struct FVector2D GetParameterValueVector2D(const class FName& InParameterName, int32 InArrayIndex);
	void SetParameterValueBool(const class FName& InParameterName, bool InValue, int32 InArrayIndex);
	void SetParameterValueDouble(const class FName& InParameterName, double InValue, int32 InArrayIndex);
	void SetParameterValueFloat(const class FName& InParameterName, float InValue, int32 InArrayIndex);
	void SetParameterValueInt(const class FName& InParameterName, int32 InValue, int32 InArrayIndex);
	void SetParameterValueName(const class FName& InParameterName, const class FName& InValue, int32 InArrayIndex);
	void SetParameterValueQuat(const class FName& InParameterName, const struct FQuat& InValue, int32 InArrayIndex);
	void SetParameterValueString(const class FName& InParameterName, const class FString& InValue, int32 InArrayIndex);
	void SetParameterValueTransform(const class FName& InParameterName, const struct FTransform& InValue, int32 InArrayIndex);
	void SetParameterValueVector(const class FName& InParameterName, const struct FVector& InValue, int32 InArrayIndex);
	void SetParameterValueVector2D(const class FName& InParameterName, const struct FVector2D& InValue, int32 InArrayIndex);

	class FString GetRigVMFunctionName(int32 InFunctionIndex) const;
	struct FRigVMStatistics GetStatistics() const;

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

// Class RigVM.NameSpacedUserData
// 0x00D8 (0x0100 - 0x0028)
class UNameSpacedUserData : public UAssetUserData
{
public:
	class FString                                 Namespace;                                         // 0x0028(0x0010)(Edit, ZeroConstructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_38[0xC8];                                      // 0x0038(0x00C8)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class RigVM.DataAssetLink
// 0x0030 (0x0130 - 0x0100)
class UDataAssetLink final : public UNameSpacedUserData
{
public:
	TSoftObjectPtr<class UDataAsset>              DataAsset;                                         // 0x0100(0x0028)(Edit, BlueprintVisible, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class UDataAsset*                             DataAssetCached;                                   // 0x0128(0x0008)(ZeroConstructor, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)

public:
	void SetDataAsset(TSoftObjectPtr<class UDataAsset> InDataAsset);

	TSoftObjectPtr<class UDataAsset> GetDataAsset() const;

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

// Class RigVM.RigVMMemoryStorageGeneratorClass
// 0x0040 (0x0240 - 0x0200)
class URigVMMemoryStorageGeneratorClass final : public UClass
{
public:
	uint8                                         Pad_200[0x40];                                     // 0x0200(0x0040)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class RigVM.RigVMMemoryStorage
// 0x0000 (0x0028 - 0x0028)
class URigVMMemoryStorage final : public UObject
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("RigVMMemoryStorage")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"RigVMMemoryStorage")
	}
	static class URigVMMemoryStorage* GetDefaultObj()
	{
		return GetDefaultObjImpl<URigVMMemoryStorage>();
	}
};
DUMPER7_ASSERTS_URigVMMemoryStorage;

// Class RigVM.RigVMNativized
// 0x0028 (0x03B0 - 0x0388)
class URigVMNativized final : public URigVM
{
public:
	uint8                                         Pad_388[0x28];                                     // 0x0388(0x0028)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class RigVM.RigVMUserWorkflowOptions
// 0x0070 (0x0098 - 0x0028)
class URigVMUserWorkflowOptions : public UObject
{
public:
	class UObject*                                Subject;                                           // 0x0028(0x0008)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, DisableEditOnInstance, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)
	struct FRigVMUserWorkflow                     Workflow;                                          // 0x0030(0x0058)(Edit, BlueprintVisible, BlueprintReadOnly, DisableEditOnInstance, ContainsInstancedReference, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_88[0x10];                                      // 0x0088(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void ReportError(const class FString& InMessage);
	void ReportInfo(const class FString& InMessage);
	void ReportWarning(const class FString& InMessage);

	bool IsValid() const;
	bool RequiresDialog() const;

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

// Class RigVM.RigVMHost
// 0x0250 (0x0278 - 0x0028)
class URigVMHost : public UObject
{
public:
	uint8                                         Pad_28[0x8];                                       // 0x0028(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FRigVMRuntimeSettings                  VMRuntimeSettings;                                 // 0x0030(0x0018)(NativeAccessSpecifierPublic)
	uint8                                         Pad_48[0x10];                                      // 0x0048(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	class URigVM*                                 VM;                                                // 0x0058(0x0008)(ZeroConstructor, Transient, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)
	TMap<class FString, struct FSoftObjectPath>   UserDefinedStructGuidToPathName;                   // 0x0060(0x0050)(Protected, NativeAccessSpecifierProtected)
	TMap<class FString, struct FSoftObjectPath>   UserDefinedEnumToPathName;                         // 0x00B0(0x0050)(Protected, NativeAccessSpecifierProtected)
	TSet<class UObject*>                          UserDefinedTypesInUse;                             // 0x0100(0x0050)(Transient, UObjectWrapper, NativeAccessSpecifierPrivate, TObjectPtr)
	uint8                                         Pad_150[0x8];                                      // 0x0150(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FRigVMDrawContainer                    DrawContainer;                                     // 0x0158(0x0018)(NativeAccessSpecifierPublic)
	uint8                                         Pad_170[0x18];                                     // 0x0170(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class FName>                           EventQueue;                                        // 0x0188(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPublic)
	uint8                                         Pad_198[0x68];                                     // 0x0198(0x0068)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UAssetUserData*>                 AssetUserData;                                     // 0x0200(0x0010)(Edit, ExportObject, ZeroConstructor, ContainsInstancedReference, AdvancedDisplay, Protected, UObjectWrapper, NativeAccessSpecifierProtected, TObjectPtr)
	uint8                                         Pad_210[0x68];                                     // 0x0210(0x0068)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static TArray<class URigVMHost*> FindRigVMHosts(class UObject* Outer_0, TSubclassOf<class URigVMHost> OptionalClass);

	bool Execute(const class FName& InEventName);
	bool ExecuteEvent(const class FName& InEventName);
	struct FRigVMExtendedExecuteContext GetExtendedExecuteContext();
	class URigVM* GetVM();
	bool RemoveRunOnceEvent(const class FName& InEventName);
	void RequestInit();
	void RequestRunOnceEvent(const class FName& InEventName, int32 InEventIndex);
	void SetAbsoluteAndDeltaTime(float InAbsoluteTime, float InDeltaTime);
	void SetAbsoluteTime(float InAbsoluteTime, bool InSetDeltaTimeZero);
	void SetDeltaTime(float InDeltaTime);
	void SetFramesPerSecond(float InFramesPerSecond);
	bool SetVariableFromString(const class FName& InVariableName, const class FString& InValue);

	bool CanExecute() const;
	float GetAbsoluteTime() const;
	float GetCurrentFramesPerSecond() const;
	float GetDeltaTime() const;
	TArray<class FName> GetScriptAccessibleVariables() const;
	const TArray<class FName> GetSupportedEvents() const;
	class FString GetVariableAsString(const class FName& InVariableName) const;
	class FName GetVariableType(const class FName& InVariableName) const;
	bool IsInitRequired() const;
	bool SupportsEvent(const class FName& InEventName) const;

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

// Class RigVM.RigVMEditorSettings
// 0x0000 (0x0038 - 0x0038)
class URigVMEditorSettings : public UDeveloperSettings
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("RigVMEditorSettings")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"RigVMEditorSettings")
	}
	static class URigVMEditorSettings* GetDefaultObj()
	{
		return GetDefaultObjImpl<URigVMEditorSettings>();
	}
};
DUMPER7_ASSERTS_URigVMEditorSettings;

// Class RigVM.RigVMProjectSettings
// 0x0010 (0x0048 - 0x0038)
class URigVMProjectSettings final : public UDeveloperSettings
{
public:
	TArray<struct FRigVMTag>                      VariantTags;                                       // 0x0038(0x0010)(Edit, ZeroConstructor, Config, NativeAccessSpecifierPublic)

public:
	struct FRigVMTag GetTag(class FName InTagName) const;

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

SDK_NAMESPACE_END
