You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
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); |
|
} |
|
} |
|
}
|
|
|