Alexa.Ki
(Alendromeda.ki)
1
Hi, I want to Set the Skeletal mesh from a data table , as you can see an example in blueprint. How to do this?
My approach code so far, but not working
void AMyCharacter::GetFashionDatas(FName ID, /*out*/ USkeletalMesh*& SkeletalMesh, /*out*/ UTexture*& MaskTexture)
{
if (const UDataTable* DT_ItemFashion{ LoadObject<UDataTable>(GetWorld(), TEXT("/Game/Blueprints/BP_DataTables/Fashion/DT_ItemFashion")) })
{
if (const FST_ItemFashion* OutRow{ DT_ItemFashion->FindRow<FST_ItemFashion>(ID, "") })
{
SkeletalMesh = OutRow.SkeletalMesh;
MaskTexture = OutRow.MaskTexture;
}
}
}
Alexa.Ki
(Alendromeda.ki)
2
This part SkeletalMesh = OutRow.SkeletalMesh;
is solved and should be SkeletalMesh = OutRow->SkeletalMesh;
Alexa.Ki
(Alendromeda.ki)
3
This is how the skeletal meshes will be replaced.
void AMyCharacter::ReplaceSkeletalMesh(EFashionType FashionType, FName Name)
{
USkeletalMesh* SKM;
GetFashionDatas(Name, SKM);
switch (FashionType)
{
case EFashionType::E_Head:
{
MeshHead->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Chest:
{
MeshChest->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Vest:
{
MeshVest->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Pants:
{
MeshPants->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Shoes:
{
MeshShoes->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Whole:
{
MeshWhole->SetSkeletalMesh(SKM);
}break;
case EFashionType::E_Body:
{
MeshBody->SetSkeletalMesh(SKM);
}break;
default:
break;
}
}
Alexa.Ki
(Alendromeda.ki)
4
void AMyCharacter::GetFashionDatas(FName ID, /*out*/ USkeletalMesh*& SkeletalMesh /*out*/ UTexture*& MaskTexture)
{
if (const UDataTable* DT_ItemFashion{ LoadObject<UDataTable>(GetWorld(), TEXT("/Game/Blueprints/BP_DataTables/Fashion/DT_ItemFashion")) })
{
if (const FST_ItemFashion* OutRow{ DT_ItemFashion->FindRow<FST_ItemFashion>((ID), "") })
{
SkeletalMesh = OutRow->SkeletalMesh;
MaskTexture= OutRow->MaskTexture;
}
else
{
SkeletalMesh = nullptr;
MaskTexture= nullptr;
}
}
}