#pragma once

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

// Package: ChaosClothAssetEngine

#include "Basic.hpp"

#include "DataflowSimulation_structs.hpp"
#include "ChaosClothAssetEngine_structs.hpp"
#include "Engine_structs.hpp"
#include "Engine_classes.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "DataflowEngine_structs.hpp"


SDK_NAMESPACE_START

// Class ChaosClothAssetEngine.ChaosClothComponent
// 0x0150 (0x0A40 - 0x08F0)
class UChaosClothComponent final : public USkinnedMeshComponent
{
public:
	uint8                                         Pad_8E8[0x8];                                      // 0x08E8(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FDataflowSimulationAsset               SimulationAsset;                                   // 0x08F0(0x0058)(Edit, AdvancedDisplay, NativeAccessSpecifierPrivate)
	float                                         BlendWeight;                                       // 0x0948(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	float                                         ClothGeometryScale;                                // 0x094C(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         bUseAttachedParentAsPoseComponent : 1;             // 0x0950(0x0001)(BitIndex: 0x00, PropSize: 0x0001 (Edit, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bWaitForParallelTask : 1;                          // 0x0950(0x0001)(BitIndex: 0x01, PropSize: 0x0001 (Edit, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bEnableSimulation : 1;                             // 0x0950(0x0001)(BitIndex: 0x02, PropSize: 0x0001 (Edit, BlueprintVisible, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bSuspendSimulation : 1;                            // 0x0950(0x0001)(BitIndex: 0x03, PropSize: 0x0001 (Edit, BlueprintVisible, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bBindToLeaderComponent : 1;                        // 0x0950(0x0001)(BitIndex: 0x04, PropSize: 0x0001 (NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bTeleport : 1;                                     // 0x0950(0x0001)(BitIndex: 0x05, PropSize: 0x0001 (Edit, BlueprintVisible, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bReset : 1;                                        // 0x0950(0x0001)(BitIndex: 0x06, PropSize: 0x0001 (Edit, BlueprintVisible, Interp, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         bCollideWithEnvironment : 1;                       // 0x0950(0x0001)(BitIndex: 0x07, PropSize: 0x0001 (Edit, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate))
	uint8                                         Pad_951[0x3];                                      // 0x0951(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         TeleportDistanceThreshold;                         // 0x0954(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	float                                         TeleportRotationThreshold;                         // 0x0958(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_95C[0x9C];                                     // 0x095C(0x009C)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FChaosClothSimulationProperties> ClothSimulationProperties;                        // 0x09F8(0x0010)(ZeroConstructor, Transient, NativeAccessSpecifierPrivate)
	uint8                                         Pad_A08[0x38];                                     // 0x0A08(0x0038)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void AddCollisionSource(class USkinnedMeshComponent* SourceComponent, const class UPhysicsAsset* SourcePhysicsAsset, bool bUseSphylsOnly);
	void ForceNextUpdateTeleport();
	void ForceNextUpdateTeleportAndReset();
	class UChaosClothAssetInteractor* GetClothOutfitInteractor(int32 ModelIndex, const class FName ClothSimulationModelName);
	void RecreateClothSimulationProxy();
	void RemoveCollisionSource(const class USkinnedMeshComponent* SourceComponent, const class UPhysicsAsset* SourcePhysicsAsset);
	void RemoveCollisionSources(const class USkinnedMeshComponent* SourceComponent);
	void ResetCollisionSources();
	void ResetConfigProperties();
	void ResetTeleportMode();
	void ResumeSimulation();
	void SetAsset(class UChaosClothAssetBase* InAsset);
	void SetClothAsset(class UChaosClothAsset* InClothAsset);
	void SetCollideWithEnvironment(bool bCollide);
	void SetEnableSimulation(bool bEnable);
	void SetSimulateInEditor(const bool bNewSimulateState);
	void SetTeleportDistanceThreshold(float Threshold);
	void SetTeleportRotationThreshold(float Threshold);
	void SuspendSimulation();

	class UChaosClothAssetBase* GetAsset() const;
	class UChaosClothAsset* GetClothAsset() const;
	bool GetCollideWithEnvironment() const;
	float GetTeleportDistanceThreshold() const;
	float GetTeleportRotationThreshold() const;
	bool IsSimulationEnabled() const;
	bool IsSimulationSuspended() const;

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

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

// Class ChaosClothAssetEngine.ChaosClothAssetBase
// 0x0298 (0x0370 - 0x00D8)
class UChaosClothAssetBase : public USkinnedAsset
{
public:
	uint8                                         Pad_D8[0x28];                                      // 0x00D8(0x0028)(Fixing Size After Last Property [ Dumper-7 ])
	struct FDataflowInstance                      DataflowInstance;                                  // 0x0100(0x0040)(Edit, Protected, NativeAccessSpecifierProtected)
	TArray<struct FSkeletalMaterial>              Materials;                                         // 0x0140(0x0010)(Edit, ZeroConstructor, Protected, NativeAccessSpecifierProtected)
	TArray<struct FSkeletalMeshLODInfo>           LODInfo;                                           // 0x0150(0x0010)(Edit, EditFixedSize, ZeroConstructor, EditConst, Protected, NativeAccessSpecifierProtected)
	struct FPerQualityLevelInt                    MinQualityLevelLOD;                                // 0x0160(0x0068)(Edit, Protected, NativeAccessSpecifierProtected)
	struct FPerPlatformBool                       DisableBelowMinLodStripping;                       // 0x01C8(0x0001)(Edit, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_1C9[0x3];                                      // 0x01C9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FPerPlatformInt                        MinLOD;                                            // 0x01CC(0x0004)(Edit, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         bSupportRayTracing : 1;                            // 0x01D0(0x0001)(BitIndex: 0x00, PropSize: 0x0001 (Edit, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected))
	uint8                                         Pad_1D1[0x3];                                      // 0x01D1(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	int32                                         RayTracingMinLOD;                                  // 0x01D4(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UPhysicsAsset*                          ShadowPhysicsAsset;                                // 0x01D8(0x0008)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, NoDestructor, AssetRegistrySearchable, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)
	class UMaterialInterface*                     OverlayMaterial;                                   // 0x01E0(0x0008)(Edit, ZeroConstructor, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected, TObjectPtr)
	float                                         OverlayMaterialMaxDrawDistance;                    // 0x01E8(0x0004)(Edit, ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         bHasVertexColors : 1;                              // 0x01EC(0x0001)(BitIndex: 0x00, PropSize: 0x0001 (NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected))
	uint8                                         Pad_1ED[0x11B];                                    // 0x01ED(0x011B)(Fixing Size After Last Property [ Dumper-7 ])
	struct FBoxSphereBounds                       Bounds;                                            // 0x0308(0x0038)(ZeroConstructor, IsPlainOldData, NoDestructor, Protected, NativeAccessSpecifierProtected)
	uint8                                         Pad_340[0x30];                                     // 0x0340(0x0030)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void SetOverlayMaterial(class UMaterialInterface* NewOverlayMaterial);
	void SetOverlayMaterialMaxDrawDistance(float InMaxDrawDistance);

	class UMaterialInterface* GetOverlayMaterial() const;
	float GetOverlayMaterialMaxDrawDistance() const;
	class UPhysicsAsset* GetShadowPhysicsAsset() const;

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

// Class ChaosClothAssetEngine.ChaosClothAsset
// 0x0048 (0x03B8 - 0x0370)
class UChaosClothAsset final : public UChaosClothAssetBase
{
public:
	class USkeleton*                              Skeleton;                                          // 0x0370(0x0008)(Edit, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPrivate, TObjectPtr)
	class UPhysicsAsset*                          PhysicsAsset;                                      // 0x0378(0x0008)(Edit, ZeroConstructor, NoDestructor, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierPrivate, TObjectPtr)
	bool                                          bSmoothTransition;                                 // 0x0380(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	bool                                          bUseMultipleInfluences;                            // 0x0381(0x0001)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_382[0x2];                                      // 0x0382(0x0002)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         SkinningKernelRadius;                              // 0x0384(0x0004)(ZeroConstructor, Deprecated, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	struct FGuid                                  AssetGuid;                                         // 0x0388(0x0010)(ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPrivate)
	uint8                                         Pad_398[0x20];                                     // 0x0398(0x0020)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

// Class ChaosClothAssetEngine.ChaosClothAssetInteractor
// 0x0010 (0x0038 - 0x0028)
class UChaosClothAssetInteractor final : public UObject
{
public:
	uint8                                         Pad_28[0x10];                                      // 0x0028(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void SetFloatValue(const class FString& PropertyName, int32 LODIndex, float Value);
	void SetHighFloatValue(const class FString& PropertyName, int32 LODIndex, float Value);
	void SetIntValue(const class FString& PropertyName, int32 LODIndex, int32 Value);
	void SetLowFloatValue(const class FString& PropertyName, int32 LODIndex, float Value);
	void SetStringValue(const class FString& PropertyName, int32 LODIndex, const class FString& Value);
	void SetVectorValue(const class FString& PropertyName, int32 LODIndex, const struct FVector& Value);
	void SetWeightedFloatValue(const class FString& PropertyName, int32 LODIndex, const struct FVector2D& Value);

	TArray<class FString> GetAllProperties(int32 LODIndex) const;
	float GetFloatValue(const class FString& PropertyName, int32 LODIndex, float DefaultValue) const;
	float GetHighFloatValue(const class FString& PropertyName, int32 LODIndex, float DefaultValue) const;
	int32 GetIntValue(const class FString& PropertyName, int32 LODIndex, int32 DefaultValue) const;
	float GetLowFloatValue(const class FString& PropertyName, int32 LODIndex, float DefaultValue) const;
	class FString GetStringValue(const class FString& PropertyName, int32 LODIndex, const class FString& DefaultValue) const;
	struct FVector GetVectorValue(const class FString& PropertyName, int32 LODIndex, const struct FVector& DefaultValue) const;
	struct FVector2D GetWeightedFloatValue(const class FString& PropertyName, int32 LODIndex, const struct FVector2D& DefaultValue) const;

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

SDK_NAMESPACE_END
