#pragma once

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

// Package: ChaosSolverEngine

#include "Basic.hpp"

#include "Engine_classes.hpp"
#include "ChaosSolverEngine_structs.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "DeveloperSettings_classes.hpp"
#include "Chaos_structs.hpp"
#include "DataflowSimulation_structs.hpp"


namespace SDK
{

// Class ChaosSolverEngine.ChaosDebugDrawSubsystem
// 0x0000 (0x0030 - 0x0030)
class UChaosDebugDrawSubsystem final : public UWorldSubsystem
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosDebugDrawSubsystem")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosDebugDrawSubsystem")
	}
	static class UChaosDebugDrawSubsystem* GetDefaultObj()
	{
		return GetDefaultObjImpl<UChaosDebugDrawSubsystem>();
	}
};
DUMPER7_ASSERTS_UChaosDebugDrawSubsystem;

// Class ChaosSolverEngine.ChaosDebugDrawComponent
// 0x0008 (0x00A8 - 0x00A0)
class UChaosDebugDrawComponent final : public UActorComponent
{
public:
	uint8                                         Pad_A0[0x8];                                       // 0x00A0(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class ChaosSolverEngine.ChaosEventListenerComponent
// 0x0008 (0x00A8 - 0x00A0)
class UChaosEventListenerComponent : public UActorComponent
{
public:
	uint8                                         Pad_A0[0x8];                                       // 0x00A0(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class ChaosSolverEngine.ChaosGameplayEventDispatcher
// 0x0210 (0x02B8 - 0x00A8)
class UChaosGameplayEventDispatcher final : public UChaosEventListenerComponent
{
public:
	uint8                                         Pad_A8[0xC0];                                      // 0x00A8(0x00C0)(Fixing Size After Last Property [ Dumper-7 ])
	TMap<class UPrimitiveComponent*, struct FChaosHandlerSet> CollisionEventRegistrations;           // 0x0168(0x0050)(ContainsInstancedReference, NativeAccessSpecifierPrivate)
	TMap<class UPrimitiveComponent*, struct FBreakEventCallbackWrapper> BreakEventRegistrations;     // 0x01B8(0x0050)(ContainsInstancedReference, NativeAccessSpecifierPrivate)
	TMap<class UPrimitiveComponent*, struct FRemovalEventCallbackWrapper> RemovalEventRegistrations; // 0x0208(0x0050)(ContainsInstancedReference, NativeAccessSpecifierPrivate)
	TMap<class UPrimitiveComponent*, struct FCrumblingEventCallbackWrapper> CrumblingEventRegistrations; // 0x0258(0x0050)(ContainsInstancedReference, NativeAccessSpecifierPrivate)
	uint8                                         Pad_2A8[0x10];                                     // 0x02A8(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

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

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

// Class ChaosSolverEngine.ChaosSolverEngineBlueprintLibrary
// 0x0000 (0x0028 - 0x0028)
class UChaosSolverEngineBlueprintLibrary final : public UBlueprintFunctionLibrary
{
public:
	static struct FHitResult ConvertPhysicsCollisionToHitResult(const struct FChaosPhysicsCollisionInfo& PhysicsCollision);

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

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

// Class ChaosSolverEngine.ChaosSolverActor
// 0x01E8 (0x04B0 - 0x02C8)
class AChaosSolverActor final : public AActor
{
public:
	uint8                                         Pad_2C8[0x8];                                      // 0x02C8(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FChaosSolverConfiguration              Properties;                                        // 0x02D0(0x006C)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	float                                         TimeStepMultiplier;                                // 0x033C(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         CollisionIterations;                               // 0x0340(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         PushOutIterations;                                 // 0x0344(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         PushOutPairIterations;                             // 0x0348(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         ClusterConnectionFactor;                           // 0x034C(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	EClusterConnectionTypeEnum                    ClusterUnionConnectionType;                        // 0x0350(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          DoGenerateCollisionData;                           // 0x0351(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_352[0x2];                                      // 0x0352(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	struct FSolverCollisionFilterSettings         CollisionFilterSettings;                           // 0x0354(0x0010)(Deprecated, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          DoGenerateBreakingData;                            // 0x0364(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_365[0x3];                                      // 0x0365(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FSolverBreakingFilterSettings          BreakingFilterSettings;                            // 0x0368(0x0010)(Deprecated, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          DoGenerateTrailingData;                            // 0x0378(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_379[0x3];                                      // 0x0379(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FSolverTrailingFilterSettings          TrailingFilterSettings;                            // 0x037C(0x0010)(Deprecated, NoDestructor, NativeAccessSpecifierPublic)
	float                                         MassScale;                                         // 0x038C(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bHasFloor;                                         // 0x0390(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_391[0x3];                                      // 0x0391(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         FloorHeight;                                       // 0x0394(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FChaosDebugSubstepControl              ChaosDebugSubstepControl;                          // 0x0398(0x0003)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	uint8                                         Pad_39B[0x5];                                      // 0x039B(0x0005)(Fixing Size After Last Property [ Dumper-7 ])
	class UBillboardComponent*                    SpriteComponent;                                   // 0x03A0(0x0008)(ExportObject, ZeroConstructor, InstancedReference, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FDataflowSimulationAsset               SimulationAsset;                                   // 0x03A8(0x0058)(Edit, AdvancedDisplay, NativeAccessSpecifierPrivate)
	uint8                                         Pad_400[0xA0];                                     // 0x0400(0x00A0)(Fixing Size After Last Property [ Dumper-7 ])
	class UChaosGameplayEventDispatcher*          GameplayEventDispatcherComponent;                  // 0x04A0(0x0008)(ExportObject, ZeroConstructor, InstancedReference, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_4A8[0x8];                                      // 0x04A8(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void SetAsCurrentWorldSolver();
	void SetSolverActive(bool bActive);

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

// Class ChaosSolverEngine.ChaosSolverSettings
// 0x0028 (0x0060 - 0x0038)
class UChaosSolverSettings final : public UDeveloperSettings
{
public:
	uint8                                         Pad_38[0x8];                                       // 0x0038(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FSoftClassPath                         DefaultChaosSolverActorClass;                      // 0x0040(0x0020)(Edit, ZeroConstructor, Config, NoClear, HasGetValueTypeHash, NativeAccessSpecifierPublic)

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

}

