Started rework of clothing slots and UI
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include "ClothingItemInstance.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
#include "NakedDesire/Player/NakedDesireCharacter.h"
|
||||
#include "NakedDesire/SaveGame/GlobalSaveGameData.h"
|
||||
#include "NakedDesire/SaveGame/ItemSaveRecord.h"
|
||||
#include "NakedDesire/SaveGame/SaveSubsystem.h"
|
||||
@@ -97,6 +98,37 @@ float UClothingManager::GetHeelHeight()
|
||||
return 0;
|
||||
}
|
||||
|
||||
USkeletalMeshComponent* UClothingManager::GetMeshComponent(const EClothingSlotType SlotType) const
|
||||
{
|
||||
const ANakedDesireCharacter* Player = Cast<ANakedDesireCharacter>(GetOwner());
|
||||
if (!Player)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
switch (SlotType)
|
||||
{
|
||||
case EClothingSlotType::Nipples: return Player->NipplesMeshComponent;
|
||||
case EClothingSlotType::Anal: return Player->AnalMeshComponent;
|
||||
case EClothingSlotType::Vagina: return Player->VaginaMeshComponent;
|
||||
case EClothingSlotType::Head: return Player->HeadMeshComponent;
|
||||
case EClothingSlotType::Neck: return Player->NeckMeshComponent;
|
||||
case EClothingSlotType::Face: return Player->FaceMeshComponent;
|
||||
case EClothingSlotType::Eyes: return Player->EyesMeshComponent;
|
||||
case EClothingSlotType::Bodysuit: return Player->BodySuitMeshComponent;
|
||||
case EClothingSlotType::Top: return Player->TopMeshComponent;
|
||||
case EClothingSlotType::Bottom: return Player->BottomMeshComponent;
|
||||
case EClothingSlotType::UnderwearTop: return Player->UnderwearTopMeshComponent;
|
||||
case EClothingSlotType::UnderwearBottom:return Player->UnderwearBottomMeshComponent;
|
||||
case EClothingSlotType::Socks: return Player->SocksMeshComponent;
|
||||
case EClothingSlotType::Footwear: return Player->FootwearMeshComponent;
|
||||
case EClothingSlotType::Outerwear: return Player->OuterwearMeshComponent;
|
||||
case EClothingSlotType::WristRestraint: return Player->WristRestraintMeshComponent;
|
||||
case EClothingSlotType::AnkleRestraint: return Player->AnkleRestraintMeshComponent;
|
||||
case EClothingSlotType::NeckRestraint: return Player->NeckRestraintMeshComponent;
|
||||
default: return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void UClothingManager::PutOnClothing(UClothingItemInstance* ClothingItemInstance)
|
||||
{
|
||||
if (!ClothingItemInstance)
|
||||
@@ -107,19 +139,20 @@ void UClothingManager::PutOnClothing(UClothingItemInstance* ClothingItemInstance
|
||||
FClothingSlotData ClothingSlotData;
|
||||
GetClothingSlotData(ClothingSlotType, ClothingSlotData);
|
||||
|
||||
ClothingSlotData.MeshComponent->SetSkeletalMesh(ClothingItemInstance->GetClothingItem()->SkeletalMesh);
|
||||
USkeletalMeshComponent* MeshComponent = GetMeshComponent(ClothingSlotType);
|
||||
MeshComponent->SetSkeletalMesh(ClothingItemInstance->GetClothingItem()->SkeletalMesh);
|
||||
if (!ClothingItemInstance->GetClothingItem()->Materials.IsEmpty())
|
||||
{
|
||||
for (const TPair<FName, UMaterialInstance*>& Material : ClothingItemInstance->GetClothingItem()->Materials)
|
||||
{
|
||||
ClothingSlotData.MeshComponent->SetMaterialByName(Material.Key, Material.Value);
|
||||
MeshComponent->SetMaterialByName(Material.Key, Material.Value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SetClothingSlotItem(ClothingSlotType, ClothingItemInstance);
|
||||
if (ClothingItemInstance->GetClothingItem()->UseLeaderPose)
|
||||
{
|
||||
ClothingSlotData.MeshComponent->SetLeaderPoseComponent(Cast<ACharacter>(GetOwner())->GetMesh());
|
||||
MeshComponent->SetLeaderPoseComponent(Cast<ACharacter>(GetOwner())->GetMesh());
|
||||
}
|
||||
|
||||
UClothingItem* ClothingItem = ClothingItemInstance->GetClothingItem();
|
||||
@@ -177,13 +210,13 @@ UClothingItemInstance* UClothingManager::RemoveClothing(const EClothingSlotType
|
||||
|
||||
UClothingItemInstance* ClothingItemInstance = ClothingSlotData.ClothingItemInstance;
|
||||
SetClothingSlotItem(ClothingSlotType, nullptr);
|
||||
|
||||
USkeletalMeshComponent* MeshComponent = ClothingSlotData.MeshComponent;
|
||||
|
||||
USkeletalMeshComponent* MeshComponent = GetMeshComponent(ClothingSlotType);
|
||||
MeshComponent->SetSkeletalMesh(nullptr);
|
||||
|
||||
if (ClothingItemInstance->GetClothingItem()->UseLeaderPose)
|
||||
{
|
||||
ClothingSlotData.MeshComponent->SetLeaderPoseComponent(nullptr);
|
||||
MeshComponent->SetLeaderPoseComponent(nullptr);
|
||||
}
|
||||
|
||||
OnClothingUnequip.Broadcast(ClothingItemInstance);
|
||||
|
||||
Reference in New Issue
Block a user