#pragma once

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

// Package: ChaosCloth

#include "Basic.hpp"

#include "ClothingSystemRuntimeCommon_structs.hpp"
#include "ClothingSystemRuntimeCommon_classes.hpp"
#include "ChaosCloth_structs.hpp"
#include "CoreUObject_structs.hpp"
#include "Chaos_structs.hpp"
#include "ClothingSystemRuntimeInterface_classes.hpp"


SDK_NAMESPACE_START

// Class ChaosCloth.ChaosClothConfig
// 0x0158 (0x0180 - 0x0028)
class UChaosClothConfig final : public UClothConfigCommon
{
public:
	EClothMassMode                                MassMode;                                          // 0x0028(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_29[0x3];                                       // 0x0029(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         UniformMass;                                       // 0x002C(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         TotalMass;                                         // 0x0030(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         Density;                                           // 0x0034(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         MinPerParticleMass;                                // 0x0038(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               EdgeStiffnessWeighted;                             // 0x003C(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               BendingStiffnessWeighted;                          // 0x0044(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          bUseBendingElements;                               // 0x004C(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_4D[0x3];                                       // 0x004D(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         BucklingRatio;                                     // 0x0050(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               BucklingStiffnessWeighted;                         // 0x0054(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               FlatnessRatio;                                     // 0x005C(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               AreaStiffnessWeighted;                             // 0x0064(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	float                                         VolumeStiffness;                                   // 0x006C(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               TetherStiffness;                                   // 0x0070(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               TetherScale;                                       // 0x0078(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          bUseGeodesicDistance;                              // 0x0080(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_81[0x3];                                       // 0x0081(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         ShapeTargetStiffness;                              // 0x0084(0x0004)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         CollisionThickness;                                // 0x0088(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         FrictionCoefficient;                               // 0x008C(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseCCD;                                           // 0x0090(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseSelfCollisions;                                // 0x0091(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_92[0x2];                                       // 0x0092(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         SelfCollisionThickness;                            // 0x0094(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         SelfCollisionFriction;                             // 0x0098(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseSelfIntersections;                             // 0x009C(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseSelfCollisionSpheres;                          // 0x009D(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_9E[0x2];                                       // 0x009E(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         SelfCollisionSphereRadius;                         // 0x00A0(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         SelfCollisionSphereStiffness;                      // 0x00A4(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         SelfCollisionSphereRadiusCullMultiplier;           // 0x00A8(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseLegacyBackstop;                                // 0x00AC(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_AD[0x3];                                       // 0x00AD(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         DampingCoefficient;                                // 0x00B0(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         LocalDampingCoefficient;                           // 0x00B4(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUsePointBasedWindModel;                           // 0x00B8(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_B9[0x3];                                       // 0x00B9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FChaosClothWeightedValue               Drag;                                              // 0x00BC(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          bEnableOuterDrag;                                  // 0x00C4(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_C5[0x3];                                       // 0x00C5(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FChaosClothWeightedValue               OuterDrag;                                         // 0x00C8(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               Lift;                                              // 0x00D0(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          bEnableOuterLift;                                  // 0x00D8(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_D9[0x3];                                       // 0x00D9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FChaosClothWeightedValue               OuterLift;                                         // 0x00DC(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	bool                                          bUseGravityOverride;                               // 0x00E4(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_E5[0x3];                                       // 0x00E5(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         GravityScale;                                      // 0x00E8(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_EC[0x4];                                       // 0x00EC(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                Gravity;                                           // 0x00F0(0x0018)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               Pressure;                                          // 0x0108(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               AnimDriveStiffness;                                // 0x0110(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	struct FChaosClothWeightedValue               AnimDriveDamping;                                  // 0x0118(0x0008)(Edit, NoDestructor, NativeAccessSpecifierPublic)
	EChaosSoftsSimulationSpace                    VelocityScaleSpace;                                // 0x0120(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_121[0x7];                                      // 0x0121(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector                                LinearVelocityScale;                               // 0x0128(0x0018)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bEnableLinearVelocityClamping;                     // 0x0140(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_141[0x3];                                      // 0x0141(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector3f                              MaxLinearVelocity;                                 // 0x0144(0x000C)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bEnableLinearAccelerationClamping;                 // 0x0150(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_151[0x3];                                      // 0x0151(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FVector3f                              MaxLinearAcceleration;                             // 0x0154(0x000C)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         AngularVelocityScale;                              // 0x0160(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bEnableAngularVelocityClamping;                    // 0x0164(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_165[0x3];                                      // 0x0165(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         MaxAngularVelocity;                                // 0x0168(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bEnableAngularAccelerationClamping;                // 0x016C(0x0001)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_16D[0x3];                                      // 0x016D(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         MaxAngularAcceleration;                            // 0x0170(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	float                                         FictitiousAngularScale;                            // 0x0174(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseTetrahedralConstraints;                        // 0x0178(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseThinShellVolumeConstraints;                    // 0x0179(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseContinuousCollisionDetection;                  // 0x017A(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_17B[0x5];                                      // 0x017B(0x0005)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class ChaosCloth.ChaosClothSharedSimConfig
// 0x0010 (0x0038 - 0x0028)
class UChaosClothSharedSimConfig final : public UClothSharedConfigCommon
{
public:
	int32                                         IterationCount;                                    // 0x0028(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         MaxIterationCount;                                 // 0x002C(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         SubdivisionCount;                                  // 0x0030(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseLocalSpaceSimulation;                          // 0x0034(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseXPBDConstraints;                               // 0x0035(0x0001)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_36[0x2];                                       // 0x0036(0x0002)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class ChaosCloth.ChaosClothingSimulationFactory
// 0x0000 (0x0028 - 0x0028)
class UChaosClothingSimulationFactory final : public UClothingSimulationFactory
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("ChaosClothingSimulationFactory")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"ChaosClothingSimulationFactory")
	}
	static class UChaosClothingSimulationFactory* GetDefaultObj()
	{
		return GetDefaultObjImpl<UChaosClothingSimulationFactory>();
	}
};
DUMPER7_ASSERTS_UChaosClothingSimulationFactory;

// Class ChaosCloth.ChaosClothingInteractor
// 0x0020 (0x0050 - 0x0030)
class UChaosClothingInteractor final : public UClothingInteractor
{
public:
	uint8                                         Pad_30[0x20];                                      // 0x0030(0x0020)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void ResetAndTeleport(bool bReset, bool bTeleport);
	void SetAerodynamics(float DragCoefficient, float LiftCoefficient, const struct FVector& WindVelocity);
	void SetAnimDrive(const struct FVector2D& AnimDriveStiffness, const struct FVector2D& AnimDriveDamping);
	void SetAnimDriveLinear(float AnimDriveStiffness);
	void SetBackstop(bool bEnabled);
	void SetCollision(float CollisionThickness, float FrictionCoefficient, bool bUseCCD, float SelfCollisionThickness);
	void SetDamping(float DampingCoefficient, float LocalDampingCoefficient);
	void SetGravity(float GravityScale, bool bIsGravityOverridden, const struct FVector& GravityOverride);
	void SetLongRangeAttachment(const struct FVector2D& TetherStiffness, const struct FVector2D& TetherScale);
	void SetLongRangeAttachmentLinear(float TetherStiffness, float TetherScale);
	void SetMaterial(const struct FVector2D& EdgeStiffness, const struct FVector2D& BendingStiffness, const struct FVector2D& AreaStiffness);
	void SetMaterialBuckling(const struct FVector2D& BucklingRatio, const struct FVector2D& BucklingStiffness);
	void SetMaterialLinear(float EdgeStiffness, float BendingStiffness, float AreaStiffness);
	void SetPressure(const struct FVector2D& Pressure);
	void SetVelocityClamps(bool bEnableLinearVelocityClamping, const struct FVector& MaxLinearVelocity, bool bEnableLinearAccelerationClamping, const struct FVector& MaxLinearAcceleration, bool bEnableAngularVelocityClamping, float MaxAngularVelocity, bool bEnableAngularAccelerationClamping, float MaxAngularAcceleration);
	void SetVelocityScale(const struct FVector& LinearVelocityScale, float AngularVelocityScale, float FictitiousAngularScale);
	void SetWind(const struct FVector2D& Drag, const struct FVector2D& Lift, float AirDensity, const struct FVector& WindVelocity, const struct FVector2D& OuterDrag, const struct FVector2D& OuterLift);

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

// Class ChaosCloth.ChaosClothingSimulationInteractor
// 0x0020 (0x00B0 - 0x0090)
class UChaosClothingSimulationInteractor final : public UClothingSimulationInteractor
{
public:
	uint8                                         Pad_90[0x20];                                      // 0x0090(0x0020)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

SDK_NAMESPACE_END
