ProjectViewAssetSelection.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using UnityEditor;
  3. using UnityEditor.VersionControl;
  4. namespace Unity.PlasticSCM.Editor.AssetMenu
  5. {
  6. internal class ProjectViewAssetSelection : AssetOperations.IAssetSelection
  7. {
  8. internal ProjectViewAssetSelection() { }
  9. internal ProjectViewAssetSelection(Action assetSelectionChangedAction)
  10. {
  11. mAssetSelectionChangedAction = assetSelectionChangedAction;
  12. Selection.selectionChanged += SelectionChanged;
  13. }
  14. internal void Dispose()
  15. {
  16. Selection.selectionChanged -= SelectionChanged;
  17. }
  18. void SelectionChanged()
  19. {
  20. // Selection.selectionChanged gets triggered on both
  21. // project view and scene view. We only want to trigger
  22. // the action if user selects on project view (has assets)
  23. if (HasSelectedAssets())
  24. mAssetSelectionChangedAction();
  25. }
  26. AssetList AssetOperations.IAssetSelection.GetSelectedAssets()
  27. {
  28. if (Selection.assetGUIDs.Length == 0)
  29. return new AssetList();
  30. return Provider.GetAssetListFromSelection();
  31. }
  32. bool HasSelectedAssets()
  33. {
  34. // Objects in project view have GUIDs, objects in scene view don't
  35. return Selection.assetGUIDs.Length > 0;
  36. }
  37. Action mAssetSelectionChangedAction;
  38. }
  39. }