Files
UnrealEngineUWP/Engine/Source/Developer/AssetTools/Private/AdvancedCopyCustomization.cpp
Marc Audy 6c6b055f0e Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 5271686
#rb
#rnx

[CL 5282523 by Marc Audy in Dev-Framework branch]
2019-03-04 10:23:33 -05:00

59 lines
2.0 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "AdvancedCopyCustomization.h"
#include "Containers/UnrealString.h"
#include "AssetRegistryModule.h"
#include "Interfaces/IPluginManager.h"
#include "Engine/World.h"
#include "Engine/Level.h"
#include "Engine/MapBuildDataRegistry.h"
#define LOCTEXT_NAMESPACE "AdvancedCopyCustomization"
UAdvancedCopyCustomization::UAdvancedCopyCustomization(const class FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
, bShouldGenerateRelativePaths(true)
{
FilterForExcludingDependencies.PackagePaths.Add(TEXT("/Engine"));
for (TSharedRef<IPlugin>& Plugin : IPluginManager::Get().GetDiscoveredPlugins())
{
if (Plugin->GetType() != EPluginType::Project)
{
FilterForExcludingDependencies.PackagePaths.Add(FName(*("/" + Plugin->GetName())));
}
}
FilterForExcludingDependencies.bRecursivePaths = true;
FilterForExcludingDependencies.bRecursiveClasses = true;
FilterForExcludingDependencies.ClassNames.Add(UWorld::StaticClass()->GetFName());
FilterForExcludingDependencies.ClassNames.Add(ULevel::StaticClass()->GetFName());
FilterForExcludingDependencies.ClassNames.Add(UMapBuildDataRegistry::StaticClass()->GetFName());
}
void UAdvancedCopyCustomization::SetPackageThatInitiatedCopy(const FString& InBasePackage)
{
FString TempPackage = InBasePackage;
FAssetRegistryModule& AssetRegistryModule = FModuleManager::Get().LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
TArray<FAssetData> DependencyAssetData;
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
AssetRegistry.GetAssetsByPackageName(FName(*InBasePackage), DependencyAssetData);
// We found a folder
if (DependencyAssetData.Num() == 0)
{
// Take off the name of the folder we copied so copied files are still nested
TempPackage.Split(TEXT("/"), &TempPackage, nullptr, ESearchCase::IgnoreCase, ESearchDir::FromEnd);
}
if (!TempPackage.EndsWith(TEXT("/")))
{
TempPackage += TEXT("/");
}
PackageThatInitiatedCopy = TempPackage;
}
#undef LOCTEXT_NAMESPACE