You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
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; |
|
} |
|
}
|
|
|