forked from BilalY/Rasagar
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;
|
|||
|
}
|
|||
|
}
|