暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ProjectViewAssetSelection.cs 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using UnityEditor;
  3. using UnityEditor.VersionControl;
  4. using Unity.PlasticSCM.Editor.AssetUtils;
  5. namespace Unity.PlasticSCM.Editor.AssetMenu
  6. {
  7. internal class ProjectViewAssetSelection : AssetOperations.IAssetSelection
  8. {
  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. AssetList result = new AssetList();
  31. foreach (string guid in Selection.assetGUIDs)
  32. {
  33. string assetPath = AssetsPath.GetFullPath.ForGuid(guid);
  34. if (string.IsNullOrEmpty(assetPath))
  35. continue;
  36. result.Add(new Asset(assetPath));
  37. }
  38. return result;
  39. }
  40. bool HasSelectedAssets()
  41. {
  42. // Objects in project view have GUIDs, objects in scene view don't
  43. return Selection.assetGUIDs.Length > 0;
  44. }
  45. Action mAssetSelectionChangedAction;
  46. }
  47. }