Files
Naked-Desire/Source/NakedDesire/Clothing/ClothingItem.h
T
2026-06-03 15:16:27 +03:00

124 lines
2.8 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "BodyPart.h"
#include "ClothingSlotType.h"
#include "Engine/DataAsset.h"
#include "NakedDesire/Progression/ProgressionPath.h"
#include "ClothingItem.generated.h"
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FBodyPartCoverage
{
GENERATED_BODY()
UPROPERTY()
float Coverage = 1.0f;
UPROPERTY()
EBodyPart BodyPart = EBodyPart::Ass;
};
UENUM(BlueprintType)
enum class ERestrictionType : uint8
{
BlockRun = 0,
BlockCrouch = 1,
BlockPhoneUsage = 2,
BlockItemPickup = 3,
BlockMasturbate = 4,
BlockBoobsExpose = 5,
BlockVaginaExpose = 6,
BlockAnalExpose = 7,
BlockSlotChange = 8,
};
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FClothingRestriction
{
GENERATED_BODY()
UPROPERTY()
ERestrictionType RestrictionType = ERestrictionType::BlockRun;
UPROPERTY()
EClothingSlotType AffectedSlot = EClothingSlotType::Anal;
};
UENUM(BlueprintType)
enum class EGarmentContainerSlotType : uint8
{
S UMETA(DisplayName = "Small"),
M UMETA(DisplayName = "Medium"),
L UMETA(DisplayName = "Large"),
};
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FGarmentContainerSlot
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EGarmentContainerSlotType SlotType = EGarmentContainerSlotType::S;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (ClampMin = 1))
int32 Count = 1;
};
UCLASS(BlueprintType)
class NAKEDDESIRE_API UClothingItem : public UPrimaryDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FText Name;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<UTexture2D> Icon;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EClothingSlotType SlotType;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
USkeletalMesh* SkeletalMesh;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TMap<FName, UMaterialInstance*> Materials;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
UStaticMesh* StaticMesh;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
int BasePrice;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FBodyPartCoverage> CoveredBodyParts;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (EditCondition = "SlotType == EClothingSlotType::Footwear", Category = "Shoes"))
float ShoesOffset = 0.0f;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool UseLeaderPose = false;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EProgressionPath ProgressionPath;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<EBodyPart> CanExpose;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
float Coverage = 1.0f;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FGarmentContainerSlot> ContainerSlots;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FClothingRestriction> Restrictions;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<EBodyPart> HiddenBodyParts;
};