// Copyright Epic Games, Inc. All Rights Reserved. /*============================================================================= InternalImportUtils.cpp: Internal import utils functions. =============================================================================*/ #include "ImportUtils/InternalImportUtils.h" #include "Containers/UnrealString.h" #include "CoreMinimal.h" #include "Engine/EngineTypes.h" #include "Factories/FbxMeshImportData.h" #include "UObject/MetaData.h" #include "UObject/NameTypes.h" #include "UObject/Object.h" #include "UObject/Package.h" bool InternalImportUtils::IsUsingMaterialSlotNameWorkflow(UAssetImportData* AssetImportData) { UFbxMeshImportData* ImportData = Cast(AssetImportData); if (ImportData == nullptr || ImportData->ImportMaterialOriginalNameData.Num() <= 0) { return false; } bool AllNameAreNone = true; for (FName ImportMaterialName: ImportData->ImportMaterialOriginalNameData) { if (ImportMaterialName != NAME_None) { AllNameAreNone = false; break; } } return !AllNameAreNone; } void InternalImportUtils::RestoreMetaData(UObject* TargetObject, const TMap& ExistingUMetaDataTagValues) { if (ExistingUMetaDataTagValues.Num() > 0) { UMetaData* PackageMetaData = TargetObject->GetOutermost()->GetMetaData(); checkSlow(PackageMetaData); TMap MetaDataToApply(ExistingUMetaDataTagValues); // Keep all existing metadata, but override/add those who were imported. if (TMap* ImportedMetaData = UMetaData::GetMapForObject(TargetObject)) { for (const TPair& KeyValue: *ImportedMetaData) { MetaDataToApply.Add(KeyValue); } } PackageMetaData->SetObjectValues(TargetObject, MetaDataToApply); } }