|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
using Unity.PlasticSCM.Editor.AssetMenu;
|
|
|
|
|
using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
|
|
|
|
|
using UnityEditor.VersionControl;
|
|
|
|
|
|
|
|
|
|
namespace Unity.PlasticSCM.Editor.AssetUtils
|
|
|
|
|
{
|
|
|
|
|
internal static class GetSelectedPaths
|
|
|
|
|
{
|
|
|
|
|
internal static List<string> ForOperation(
|
|
|
|
|
string wkPath,
|
|
|
|
|
AssetList assetList,
|
|
|
|
|
IAssetStatusCache assetStatusCache,
|
|
|
|
|
AssetMenuOperations operation)
|
|
|
|
|
{
|
|
|
|
|
List<string> selectedPaths = AssetsSelection.
|
|
|
|
|
GetSelectedPaths(wkPath, assetList);
|
|
|
|
|
|
|
|
|
|
List<string> result = new List<string>(selectedPaths);
|
|
|
|
|
|
|
|
|
|
foreach (string path in selectedPaths)
|
|
|
|
|
{
|
|
|
|
|
if (MetaPath.IsMetaPath(path))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
string metaPath = MetaPath.GetMetaPath(path);
|
|
|
|
|
|
|
|
|
|
if (!File.Exists(metaPath))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
if (result.Contains(metaPath))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
if (!IsApplicableForOperation(
|
|
|
|
|
metaPath, false, operation, assetStatusCache))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
result.Add(metaPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool IsApplicableForOperation(
|
|
|
|
|
string path,
|
|
|
|
|
bool isDirectory,
|
|
|
|
|
AssetMenuOperations operation,
|
|
|
|
|
IAssetStatusCache assetStatusCache)
|
|
|
|
|
{
|
|
|
|
|
SelectedAssetGroupInfo info = SelectedAssetGroupInfo.BuildFromSingleFile(
|
|
|
|
|
path, isDirectory, assetStatusCache);
|
|
|
|
|
|
|
|
|
|
return AssetMenuUpdater.GetAvailableMenuOperations(info).HasFlag(operation);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|