This commit is contained in:
koritsa
2026-05-24 20:50:34 +03:00
parent fc48437431
commit 5d0bc7564c
25 changed files with 266 additions and 218 deletions
@@ -51,29 +51,37 @@ ANakedDesireCharacter::ANakedDesireCharacter()
FaceMeshComponent->SetupAttachment(GetMesh());
EyesMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Eyes");
EyesMeshComponent->SetupAttachment(GetMesh());
BodyMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Body");
BodyMeshComponent->SetupAttachment(GetMesh());
BodySuitMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Body Suit");
BodySuitMeshComponent->SetupAttachment(GetMesh());
TopMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Top");
TopMeshComponent->SetupAttachment(GetMesh());
BottomMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Bottom");
BottomMeshComponent->SetupAttachment(GetMesh());
BraMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Bra");
BraMeshComponent->SetupAttachment(GetMesh());
PantiesMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Panties");
PantiesMeshComponent->SetupAttachment(GetMesh());
UnderwearTopMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Underwear Top");
UnderwearTopMeshComponent->SetupAttachment(GetMesh());
UnderwearBottomMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Underwear Bottom");
UnderwearBottomMeshComponent->SetupAttachment(GetMesh());
SocksMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Socks");
SocksMeshComponent->SetupAttachment(GetMesh());
ShoesMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Shoes");
ShoesMeshComponent->SetupAttachment(GetMesh());
FootwearMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Footwear");
FootwearMeshComponent->SetupAttachment(GetMesh());
OuterwearMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Outerwear");
OuterwearMeshComponent->SetupAttachment(GetMesh());
WristRestraintMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Wrist Restraint");
WristRestraintMeshComponent->SetupAttachment(GetMesh());
AnkleRestraintMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Ankle Restraint");
AnkleRestraintMeshComponent->SetupAttachment(GetMesh());
NeckRestraintMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>("Neck Restraint");
NeckRestraintMeshComponent->SetupAttachment(GetMesh());
BoobLCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Boob L Censorship"));
BoobLCensorship->SetupAttachment(GetMesh(), FName(TEXT("boob_l")));
BoobRCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Boob R Censorship"));
BoobRCensorship->SetupAttachment(GetMesh(), FName(TEXT("boob_r")));
FrontBottomCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Front Bottom Censorship"));
FrontBottomCensorship->SetupAttachment(GetMesh(), FName(TEXT("pelvis")));
BackBottomCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Back Bottom Censorship"));
BackBottomCensorship->SetupAttachment(GetMesh(), FName(TEXT("pelvis")));
VaginaCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Vagina Censorship"));
VaginaCensorship->SetupAttachment(GetMesh(), FName(TEXT("pelvis")));
AnalCensorship = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Anal Censorship"));
AnalCensorship->SetupAttachment(GetMesh(), FName(TEXT("pelvis")));
StimuliSourceComponent = CreateDefaultSubobject<UAIPerceptionStimuliSourceComponent>(TEXT("Stimuli Source Component"));
}
@@ -176,7 +184,7 @@ UAISense_Sight::EVisibilityResult ANakedDesireCharacter::CanBeSeenFrom(const FCa
FHitResult PelvisHitResult;
const bool PelvisHit = CheckSight(StartLocation, PelvisBoneLocation, PelvisHitResult, Context.IgnoreActor);
if ((!BoobsHit || BoobsHitResult.GetActor() == this) && ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontTop))
if ((!BoobsHit || BoobsHitResult.GetActor() == this) && ClothingManager->IsBodyTypeExposed(EBodyPart::Boobs))
{
UE_LOG(LogTemp, Warning, TEXT("Boobs hit"));
OutSeenLocation = BoobsBoneLocation;
@@ -185,7 +193,7 @@ UAISense_Sight::EVisibilityResult ANakedDesireCharacter::CanBeSeenFrom(const FCa
}
if ((!PelvisHit || PelvisHitResult.GetActor() == this) &&
(ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::BackBottom) || ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontBottom)))
(ClothingManager->IsBodyTypeExposed(EBodyPart::Ass) || ClothingManager->IsBodyTypeExposed(EBodyPart::Genitals)))
{
UE_LOG(LogTemp, Warning, TEXT("Pelvis hit"));
OutSeenLocation = PelvisBoneLocation;
@@ -250,19 +258,20 @@ void ANakedDesireCharacter::OnEndOverlap(UPrimitiveComponent* OverlappedComponen
void ANakedDesireCharacter::OnClothingEquip(const UClothingItemInstance* ClothingItemInstance)
{
if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EPrivateBodyPartType::BackBottom))
{
BackBottomCensorship->SetVisibility(false);
}
if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EPrivateBodyPartType::FrontBottom))
{
FrontBottomCensorship->SetVisibility(false);
}
if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EPrivateBodyPartType::FrontTop))
{
BoobLCensorship->SetVisibility(false);
BoobRCensorship->SetVisibility(false);
}
// TODO: Add covered body part resolution
// if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EBodyPart::Ass))
// {
// AnalCensorship->SetVisibility(false);
// }
// if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EBodyPart::Genitals))
// {
// VaginaCensorship->SetVisibility(false);
// }
// if (ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(EBodyPart::Boobs))
// {
// BoobLCensorship->SetVisibility(false);
// BoobRCensorship->SetVisibility(false);
// }
}
void ANakedDesireCharacter::OnClothingUnequip(const UClothingItemInstance* ClothingItemInstance)
@@ -270,15 +279,15 @@ void ANakedDesireCharacter::OnClothingUnequip(const UClothingItemInstance* Cloth
if (!UNakedDesireUserSettings::GetNakedDesireUserSettings()->GetIsCensorshipEnabled() && !IS_DEMO)
return;
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::BackBottom))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Ass))
{
BackBottomCensorship->SetVisibility(true);
AnalCensorship->SetVisibility(true);
}
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontBottom))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Genitals))
{
FrontBottomCensorship->SetVisibility(true);
VaginaCensorship->SetVisibility(true);
}
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontTop))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Boobs))
{
BoobLCensorship->SetVisibility(true);
BoobRCensorship->SetVisibility(true);
@@ -289,15 +298,15 @@ void ANakedDesireCharacter::OnSettingsChanged(UNakedDesireUserSettings* Settings
{
if (Settings->GetIsCensorshipEnabled())
{
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::BackBottom))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Ass))
{
BackBottomCensorship->SetVisibility(true);
AnalCensorship->SetVisibility(true);
}
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontBottom))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Genitals))
{
FrontBottomCensorship->SetVisibility(true);
VaginaCensorship->SetVisibility(true);
}
if (ClothingManager->IsBodyTypeExposed(EPrivateBodyPartType::FrontTop))
if (ClothingManager->IsBodyTypeExposed(EBodyPart::Boobs))
{
BoobLCensorship->SetVisibility(true);
BoobRCensorship->SetVisibility(true);
@@ -305,8 +314,8 @@ void ANakedDesireCharacter::OnSettingsChanged(UNakedDesireUserSettings* Settings
}
else if (!IS_DEMO)
{
BackBottomCensorship->SetVisibility(false);
FrontBottomCensorship->SetVisibility(false);
AnalCensorship->SetVisibility(false);
VaginaCensorship->SetVisibility(false);
BoobLCensorship->SetVisibility(false);
BoobRCensorship->SetVisibility(false);
}
@@ -395,9 +404,9 @@ void ANakedDesireCharacter::SetupClothingSlots()
LOCTEXT("Eyes", "Eyes")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
BodyMeshComponent, EClothingSlotType::Body,
BodySuitMeshComponent, EClothingSlotType::BodySuit,
nullptr,
LOCTEXT("Body", "Body")));
LOCTEXT("BodySuit", "BodySuit")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
TopMeshComponent, EClothingSlotType::Top,
@@ -410,14 +419,14 @@ void ANakedDesireCharacter::SetupClothingSlots()
LOCTEXT("Bottom", "Bottom")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
BraMeshComponent, EClothingSlotType::Bra,
UnderwearTopMeshComponent, EClothingSlotType::UnderwearTop,
nullptr,
LOCTEXT("Bra", "Bra")));
LOCTEXT("UnderwearTop", "UnderwearTop")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
PantiesMeshComponent, EClothingSlotType::Panties,
UnderwearBottomMeshComponent, EClothingSlotType::UnderwearBottom,
nullptr,
LOCTEXT("Panties", "Panties")));
LOCTEXT("UnderwearBottom", "UnderwearBottom")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
SocksMeshComponent, EClothingSlotType::Socks,
@@ -425,9 +434,29 @@ void ANakedDesireCharacter::SetupClothingSlots()
LOCTEXT("Socks", "Socks")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
ShoesMeshComponent, EClothingSlotType::Shoes,
FootwearMeshComponent, EClothingSlotType::Footwear,
nullptr,
LOCTEXT("Shoes", "Shoes")));
LOCTEXT("Footwear", "Footwear")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
FootwearMeshComponent, EClothingSlotType::Outerwear,
nullptr,
LOCTEXT("Outerwear", "Outerwear")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
FootwearMeshComponent, EClothingSlotType::WristRestraint,
nullptr,
LOCTEXT("WristRestraint", "WristRestraint")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
FootwearMeshComponent, EClothingSlotType::AnkleRestraint,
nullptr,
LOCTEXT("AnkleRestraint", "AnkleRestraint")));
ClothingManager->ClothingSlots.Add(
FClothingSlotData(
FootwearMeshComponent, EClothingSlotType::NeckRestraint,
nullptr,
LOCTEXT("NeckRestraint", "NeckRestraint")));
#undef LOCTEXT_NAMESPACE
}
@@ -73,7 +73,7 @@ public:
USkeletalMeshComponent* EyesMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* BodyMeshComponent;
USkeletalMeshComponent* BodySuitMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* TopMeshComponent;
@@ -82,16 +82,28 @@ public:
USkeletalMeshComponent* BottomMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* BraMeshComponent;
USkeletalMeshComponent* UnderwearTopMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* PantiesMeshComponent;
USkeletalMeshComponent* UnderwearBottomMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* SocksMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* ShoesMeshComponent;
USkeletalMeshComponent* FootwearMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* OuterwearMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* WristRestraintMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* AnkleRestraintMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
USkeletalMeshComponent* NeckRestraintMeshComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Censorship")
UStaticMeshComponent* BoobLCensorship;
@@ -100,10 +112,10 @@ public:
UStaticMeshComponent* BoobRCensorship;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Censorship")
UStaticMeshComponent* FrontBottomCensorship;
UStaticMeshComponent* VaginaCensorship;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Censorship")
UStaticMeshComponent* BackBottomCensorship;
UStaticMeshComponent* AnalCensorship;
// Components
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Clothing")
@@ -127,11 +139,8 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
float RunSpeed = 500.0f;
UPROPERTY(BlueprintReadWrite)
int Money = 0;
int XP = 0;
float XP = 0.0f;
UPROPERTY()
ULocationData* CurrentArea = nullptr;
@@ -88,19 +88,19 @@ USkeletalMeshComponent* APlayerCinematic::GetMeshByType(const EClothingSlotType
return FaceMeshComponent;
case EClothingSlotType::Eyes:
return EyesMeshComponent;
case EClothingSlotType::Body:
case EClothingSlotType::BodySuit:
return BodyMeshComponent;
case EClothingSlotType::Top:
return TopMeshComponent;
case EClothingSlotType::Bottom:
return BottomMeshComponent;
case EClothingSlotType::Bra:
case EClothingSlotType::UnderwearTop:
return BraMeshComponent;
case EClothingSlotType::Panties:
case EClothingSlotType::UnderwearBottom:
return PantiesMeshComponent;
case EClothingSlotType::Socks:
return SocksMeshComponent;
case EClothingSlotType::Shoes:
case EClothingSlotType::Footwear:
return ShoesMeshComponent;
default:
return NipplesMeshComponent;
+4 -4
View File
@@ -93,19 +93,19 @@ USkeletalMeshComponent* APlayerImpostor::GetMeshByType(const EClothingSlotType S
return FaceMeshComponent;
case EClothingSlotType::Eyes:
return EyesMeshComponent;
case EClothingSlotType::Body:
case EClothingSlotType::BodySuit:
return BodyMeshComponent;
case EClothingSlotType::Top:
return TopMeshComponent;
case EClothingSlotType::Bottom:
return BottomMeshComponent;
case EClothingSlotType::Bra:
case EClothingSlotType::UnderwearTop:
return BraMeshComponent;
case EClothingSlotType::Panties:
case EClothingSlotType::UnderwearBottom:
return PantiesMeshComponent;
case EClothingSlotType::Socks:
return SocksMeshComponent;
case EClothingSlotType::Shoes:
case EClothingSlotType::Footwear:
return ShoesMeshComponent;
default:
return NipplesMeshComponent;
@@ -1,42 +0,0 @@
// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "PrivateBodyPartType.generated.h"
#define LOCTEXT_NAMESPACE "Missions.BodyType"
const FText BackBottom = LOCTEXT("BackBottom", "back bottom");
const FText FrontBottom = LOCTEXT("FrontBottom", "front bottom");
const FText FrontTop = LOCTEXT("FrontTop", "front top");
#undef LOCTEXT_NAMESPACE
UENUM(BlueprintType)
enum class EPrivateBodyPartType : uint8
{
FrontBottom = 0,
BackBottom = 1,
FrontTop = 2
};
UCLASS()
class UPrivateBodyPartType : public UObject
{
GENERATED_BODY()
public:
static FText GetString(const EPrivateBodyPartType BodyType)
{
switch (BodyType)
{
case EPrivateBodyPartType::BackBottom:
return BackBottom;
case EPrivateBodyPartType::FrontBottom:
return FrontBottom;
case EPrivateBodyPartType::FrontTop:
return FrontTop;
default:
return FText::GetEmpty();
}
}
};