File size: 2,075 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | using System.Collections.Generic;
using UnityEditor.VersionControl;
using Unity.PlasticSCM.Editor.AssetUtils;
using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
using Unity.PlasticSCM.Editor.AssetMenu;
using Unity.PlasticSCM.Editor.AssetUtils.Processor;
namespace Unity.PlasticSCM.Editor.SceneView
{
static class DrawSceneOperations
{
internal static void Enable(
string wkPath,
WorkspaceOperationsMonitor workspaceOperationsMonitor,
IAssetStatusCache assetStatusCache)
{
if (mIsEnabled)
return;
mWkPath = wkPath;
mWorkspaceOperationsMonitor = workspaceOperationsMonitor;
mAssetStatusCache = assetStatusCache;
mIsEnabled = true;
Provider.preCheckoutCallback += Provider_preCheckoutCallback;
}
internal static void Disable()
{
mIsEnabled = false;
Provider.preCheckoutCallback -= Provider_preCheckoutCallback;
mWkPath = null;
mWorkspaceOperationsMonitor = null;
mAssetStatusCache = null;
}
static bool Provider_preCheckoutCallback(
AssetList list,
ref string changesetID,
ref string changesetDescription)
{
if (!mIsEnabled)
return true;
if (!FindWorkspace.HasWorkspace(ApplicationDataPath.Get()))
{
Disable();
return true;
}
List<string> selectedPaths = GetSelectedPaths.ForOperation(
mWkPath, list, mAssetStatusCache,
AssetMenuOperations.Checkout);
if (selectedPaths.Count == 0)
return true;
mWorkspaceOperationsMonitor.AddPathsToCheckout(selectedPaths);
return true;
}
static bool mIsEnabled;
static IAssetStatusCache mAssetStatusCache;
static WorkspaceOperationsMonitor mWorkspaceOperationsMonitor;
static string mWkPath;
}
}
|