121 lines
2.8 KiB
C++
121 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;
|
|
};
|