12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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);
- }
- }
- }
|