Files
2026-06-03 15:16:44 +03:00

93 lines
2.6 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#include "CensorshipComponent.h"
#include "Components/StaticMeshComponent.h"
#include "NakedDesire/Clothing/BodyPart.h"
#include "NakedDesire/Clothing/ClothingManager.h"
#include "NakedDesire/Global/Constants.h"
#include "NakedDesire/Global/NakedDesireUserSettings.h"
UCensorshipComponent::UCensorshipComponent()
{
PrimaryComponentTick.bCanEverTick = false;
}
void UCensorshipComponent::Initialize(UClothingManager* InClothingManager,
UStaticMeshComponent* InBoobL, UStaticMeshComponent* InBoobR,
UStaticMeshComponent* InVagina, UStaticMeshComponent* InAnal)
{
ClothingManager = InClothingManager;
BoobLCensorship = InBoobL;
BoobRCensorship = InBoobR;
VaginaCensorship = InVagina;
AnalCensorship = InAnal;
if (ClothingManager)
{
ClothingManager->OnClothingEquip.AddUniqueDynamic(this, &UCensorshipComponent::HandleClothingChanged);
ClothingManager->OnClothingUnequip.AddUniqueDynamic(this, &UCensorshipComponent::HandleClothingChanged);
}
if (UNakedDesireUserSettings* Settings = UNakedDesireUserSettings::GetNakedDesireUserSettings())
{
Settings->OnSettingsChanged.AddUniqueDynamic(this, &UCensorshipComponent::HandleSettingsChanged);
}
RefreshCensorship();
}
void UCensorshipComponent::RefreshCensorship()
{
if (!ClothingManager)
return;
const bool bCensor = ShouldCensor();
SetBodyPartCensored(EBodyPart::Boobs, bCensor && ClothingManager->IsBodyPartExposed(EBodyPart::Boobs));
SetBodyPartCensored(EBodyPart::Genitals, bCensor && ClothingManager->IsBodyPartExposed(EBodyPart::Genitals));
SetBodyPartCensored(EBodyPart::Ass, bCensor && ClothingManager->IsBodyPartExposed(EBodyPart::Ass));
}
void UCensorshipComponent::HandleClothingChanged(UClothingItemInstance* ClothingItemInstance)
{
RefreshCensorship();
}
void UCensorshipComponent::HandleSettingsChanged(UNakedDesireUserSettings* Settings)
{
RefreshCensorship();
}
bool UCensorshipComponent::ShouldCensor() const
{
if (IS_DEMO)
return true;
const UNakedDesireUserSettings* Settings = UNakedDesireUserSettings::GetNakedDesireUserSettings();
return Settings && Settings->GetIsCensorshipEnabled();
}
void UCensorshipComponent::SetBodyPartCensored(EBodyPart BodyPart, bool bCensored)
{
switch (BodyPart)
{
case EBodyPart::Boobs:
if (BoobLCensorship)
BoobLCensorship->SetVisibility(bCensored);
if (BoobRCensorship)
BoobRCensorship->SetVisibility(bCensored);
break;
case EBodyPart::Genitals:
if (VaginaCensorship)
VaginaCensorship->SetVisibility(bCensored);
break;
case EBodyPart::Ass:
if (AnalCensorship)
AnalCensorship->SetVisibility(bCensored);
break;
default:
break;
}
}