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 : AssetOperations.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 AssetOperations.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;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |