A game about forced loneliness, made by TACStudios
at master 1.7 kB view raw
1using System; 2 3using UnityEditor; 4using UnityEditor.VersionControl; 5 6using Unity.PlasticSCM.Editor.AssetUtils; 7 8namespace Unity.PlasticSCM.Editor.AssetMenu 9{ 10 internal class ProjectViewAssetSelection : AssetVcsOperations.IAssetSelection 11 { 12 internal ProjectViewAssetSelection(Action assetSelectionChangedAction) 13 { 14 mAssetSelectionChangedAction = assetSelectionChangedAction; 15 16 Selection.selectionChanged += SelectionChanged; 17 } 18 19 internal void Dispose() 20 { 21 Selection.selectionChanged -= SelectionChanged; 22 } 23 24 void SelectionChanged() 25 { 26 // Selection.selectionChanged gets triggered on both 27 // project view and scene view. We only want to trigger 28 // the action if user selects on project view (has assets) 29 if (HasSelectedAssets()) 30 mAssetSelectionChangedAction(); 31 } 32 33 AssetList AssetVcsOperations.IAssetSelection.GetSelectedAssets() 34 { 35 if (Selection.assetGUIDs.Length == 0) 36 return new AssetList(); 37 38 AssetList result = new AssetList(); 39 40 foreach (string guid in Selection.assetGUIDs) 41 { 42 string assetPath = AssetsPath.GetFullPath.ForGuid(guid); 43 44 if (string.IsNullOrEmpty(assetPath)) 45 continue; 46 47 result.Add(new Asset(assetPath)); 48 } 49 50 return result; 51 } 52 53 bool HasSelectedAssets() 54 { 55 // Objects in project view have GUIDs, objects in scene view don't 56 return Selection.assetGUIDs.Length > 0; 57 } 58 59 Action mAssetSelectionChangedAction; 60 } 61}