Files
UnrealEngine/Engine/Source/Developer/Datasmith/DatasmithFacade/Private/DatasmithFacadeActorMesh.cpp
2025-05-18 13:04:45 +08:00

80 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DatasmithFacadeActorMesh.h"
#include "DatasmithFacadeMaterialID.h"
#include "DatasmithFacadeScene.h"
FDatasmithFacadeActorMesh::FDatasmithFacadeActorMesh(
const TCHAR* InElementName
)
: FDatasmithFacadeActor(FDatasmithSceneFactory::CreateMeshActor(InElementName))
{}
FDatasmithFacadeActorMesh::FDatasmithFacadeActorMesh(
const TSharedRef<IDatasmithMeshActorElement>& InInternalElement
)
: FDatasmithFacadeActor(InInternalElement)
{}
void FDatasmithFacadeActorMesh::SetMesh(
const TCHAR* InMeshName
)
{
GetDatasmithMeshActorElement()->SetStaticMeshPathName(InMeshName);
}
const TCHAR* FDatasmithFacadeActorMesh::GetMeshName() const
{
return GetDatasmithMeshActorElement()->GetStaticMeshPathName();
}
void FDatasmithFacadeActorMesh::AddMaterialOverride(
const TCHAR* MaterialName,
int32 Id
)
{
GetDatasmithMeshActorElement()->AddMaterialOverride(MaterialName, Id);
}
void FDatasmithFacadeActorMesh::AddMaterialOverride(
FDatasmithFacadeMaterialID& Material
)
{
GetDatasmithMeshActorElement()->AddMaterialOverride(Material.GetMaterialIDElement());
}
int32 FDatasmithFacadeActorMesh::GetMaterialOverridesCount() const
{
return GetDatasmithMeshActorElement()->GetMaterialOverridesCount();
}
FDatasmithFacadeMaterialID* FDatasmithFacadeActorMesh::GetNewMaterialOverride(
int32 MaterialOverrideIndex
)
{
if (TSharedPtr<IDatasmithMaterialIDElement> MaterialID = GetDatasmithMeshActorElement()->GetMaterialOverride(MaterialOverrideIndex))
{
return new FDatasmithFacadeMaterialID(MaterialID.ToSharedRef());
}
return nullptr;
}
void FDatasmithFacadeActorMesh::RemoveMaterialOverride(
FDatasmithFacadeMaterialID& Material
)
{
GetDatasmithMeshActorElement()->RemoveMaterialOverride(Material.GetMaterialIDElement());
}
void FDatasmithFacadeActorMesh::ResetMaterialOverrides()
{
GetDatasmithMeshActorElement()->ResetMaterialOverrides();
}
TSharedRef<IDatasmithMeshActorElement> FDatasmithFacadeActorMesh::GetDatasmithMeshActorElement() const
{
return StaticCastSharedRef<IDatasmithMeshActorElement>(InternalDatasmithElement);
}