Maze / Library /PackageCache /com.unity.collab-proxy@2.0.4 /Editor /PlasticSCM /AssetMenu /ProjectViewAssetSelection.cs
| 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; | |
| } | |
| } | |