Files

122 lines
3.0 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/Items/ItemDefinition.h"
#include "NakedDesire/Progression/ProgressionPath.h"
#include "ClothingItemDefinition.generated.h"
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FBodyPartCoverage
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly)
float Coverage = 1.0f;
UPROPERTY(EditDefaultsOnly)
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 UClothingItemDefinition : public UItemDefinition
{
GENERATED_BODY()
public:
virtual TSubclassOf<UItemInstance> GetInstanceClass() const override;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EClothingSlotType SlotType;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
USkeletalMesh* SkeletalMesh;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TMap<FName, UMaterialInstance*> Materials;
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)
TArray<FGarmentContainerSlot> ContainerSlots;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FClothingRestriction> Restrictions;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<EBodyPart> HiddenBodyParts;
UPROPERTY(EditDefaultsOnly,
BlueprintReadOnly,
meta = (EditCondition = "SlotType == EClothingSlotType::UnderwearTop || SlotType == EClothingSlotType::Top || SlotType == EClothingSlotType::Bodysuit",
ClampMin = 0.0f, ClampMax = 1.0f,
UIMin = 0.0f, UIMax = 1.0f))
float BoobsSupport = 0.0f;
};