A game about forced loneliness, made by TACStudios
1using System.Collections.Generic;
2using System.IO;
3
4using Codice.CM.Common;
5using PlasticGui;
6using Unity.PlasticSCM.Editor.AssetMenu;
7using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
8using UnityEditor.VersionControl;
9
10namespace Unity.PlasticSCM.Editor.AssetUtils
11{
12 internal static class GetSelectedPaths
13 {
14 internal static List<string> ForOperation(
15 WorkspaceInfo wkInfo,
16 IEnumerable<Asset> assetList,
17 IPlasticAPI plasticApi,
18 IAssetStatusCache assetStatusCache,
19 AssetMenuOperations operation,
20 bool includeMetaFiles = true)
21 {
22 List<string> selectedPaths = AssetsSelection.
23 GetSelectedPaths(wkInfo.ClientPath, assetList);
24
25 List<string> result = new List<string>(selectedPaths);
26
27 if (!includeMetaFiles)
28 return result;
29
30 foreach (string path in selectedPaths)
31 {
32 if (MetaPath.IsMetaPath(path))
33 continue;
34
35 string metaPath = MetaPath.GetMetaPath(path);
36
37 if (!File.Exists(metaPath))
38 continue;
39
40 if (result.Contains(metaPath))
41 continue;
42
43 if (!IsApplicableForOperation(
44 metaPath, false, wkInfo, plasticApi, assetStatusCache, operation))
45 continue;
46
47 result.Add(metaPath);
48 }
49
50 return result;
51 }
52
53 static bool IsApplicableForOperation(
54 string path,
55 bool isDirectory,
56 WorkspaceInfo wkInfo,
57 IPlasticAPI plasticApi,
58 IAssetStatusCache assetStatusCache,
59 AssetMenuOperations operation)
60 {
61 SelectedAssetGroupInfo info = SelectedAssetGroupInfo.BuildFromSingleFile(
62 path, isDirectory, wkInfo, plasticApi, assetStatusCache);
63
64 return AssetMenuUpdater.GetAvailableMenuOperations(info).HasFlag(operation);
65 }
66 }
67}