62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| 
 | |
| using UnityEditor;
 | |
| using UnityEditor.VersionControl;
 | |
| 
 | |
| using Unity.PlasticSCM.Editor.AssetUtils;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.AssetMenu
 | |
| {
 | |
|     internal class ProjectViewAssetSelection : AssetUVCSOperations.IAssetSelection
 | |
|     {
 | |
|         internal ProjectViewAssetSelection(Action assetSelectionChangedAction)
 | |
|         {
 | |
|             mAssetSelectionChangedAction = assetSelectionChangedAction;
 | |
| 
 | |
|             Selection.selectionChanged += SelectionChanged;
 | |
|         }
 | |
| 
 | |
|         internal void Dispose()
 | |
|         {
 | |
|             Selection.selectionChanged -= SelectionChanged;
 | |
|         }
 | |
| 
 | |
|         void SelectionChanged()
 | |
|         {
 | |
|             // Selection.selectionChanged gets triggered on both
 | |
|             // project view and scene view. We only want to trigger
 | |
|             // the action if user selects on project view (has assets)
 | |
|             if (HasSelectedAssets())
 | |
|                 mAssetSelectionChangedAction();
 | |
|         }
 | |
| 
 | |
|         AssetList AssetUVCSOperations.IAssetSelection.GetSelectedAssets()
 | |
|         {
 | |
|             if (Selection.assetGUIDs.Length == 0)
 | |
|                 return new AssetList();
 | |
| 
 | |
|             AssetList result = new AssetList();
 | |
| 
 | |
|             foreach (string guid in Selection.assetGUIDs)
 | |
|             {
 | |
|                 string assetPath = AssetsPath.GetFullPath.ForGuid(guid);
 | |
| 
 | |
|                 if (string.IsNullOrEmpty(assetPath))
 | |
|                     continue;
 | |
| 
 | |
|                 result.Add(new Asset(assetPath));
 | |
|             }
 | |
| 
 | |
|             return result;
 | |
|         }
 | |
| 
 | |
|         bool HasSelectedAssets()
 | |
|         {
 | |
|             // Objects in project view have GUIDs, objects in scene view don't
 | |
|             return Selection.assetGUIDs.Length > 0;
 | |
|         }
 | |
| 
 | |
|         Action mAssetSelectionChangedAction;
 | |
|     }
 | |
| }
 |