MIF_E31222586/Library/PackageCache/com.unity.collab-proxy@9460.../Editor/SceneView/DrawSceneOperations.cs

116 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using UnityEditor.VersionControl;
using Codice.Client.Common.Threading;
using Codice.CM.Common;
using Codice.LogWrapper;
using PlasticGui;
using Unity.PlasticSCM.Editor.AssetUtils;
using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
using Unity.PlasticSCM.Editor.AssetMenu;
using Unity.PlasticSCM.Editor.AssetUtils.Processor;
using PlasticAssetModificationProcessor = Unity.PlasticSCM.Editor.AssetUtils.Processor.AssetModificationProcessor;
namespace Unity.PlasticSCM.Editor.SceneView
{
static class DrawSceneOperations
{
internal static void Enable(
WorkspaceInfo wkInfo,
IPlasticAPI plasticApi,
IWorkspaceOperationsMonitor workspaceOperationsMonitor,
IAssetStatusCache assetStatusCache)
{
if (mIsEnabled)
return;
mLog.Debug("Enable");
mWkInfo = wkInfo;
mPlasticAPI = plasticApi;
mWorkspaceOperationsMonitor = workspaceOperationsMonitor;
mAssetStatusCache = assetStatusCache;
mIsEnabled = true;
Provider.preCheckoutCallback += Provider_preCheckoutCallback;
}
internal static void Disable()
{
mLog.Debug("Disable");
mIsEnabled = false;
Provider.preCheckoutCallback -= Provider_preCheckoutCallback;
mWkInfo = null;
mPlasticAPI = null;
mWorkspaceOperationsMonitor = null;
mAssetStatusCache = null;
}
static bool Provider_preCheckoutCallback(
AssetList list,
ref string changesetID,
ref string changesetDescription)
{
try
{
if (!mIsEnabled)
return true;
List<Asset> assets = GetUnmodifiedAssets(
list, PlasticAssetModificationProcessor.GetModifiedAssetsToProcess());
if (assets.Count == 0)
return true;
List<string> selectedPaths = GetSelectedPaths.ForOperation(
mWkInfo, assets, mPlasticAPI, mAssetStatusCache,
AssetMenuOperations.Checkout);
if (selectedPaths.Count == 0)
return true;
mWorkspaceOperationsMonitor.AddPathsToCheckout(selectedPaths);
}
catch (Exception ex)
{
ExceptionsHandler.LogException(typeof(DrawSceneOperations).Name, ex);
}
return true;
}
static List<Asset> GetUnmodifiedAssets(
AssetList assetList,
ReadOnlyCollection<string> modifiedAssetsToProcess)
{
List<Asset> result = new List<Asset>(assetList.Count);
foreach (Asset asset in assetList)
{
if (modifiedAssetsToProcess.Contains(asset.path))
continue;
result.Add(asset);
}
return result;
}
static bool mIsEnabled;
static IAssetStatusCache mAssetStatusCache;
static IWorkspaceOperationsMonitor mWorkspaceOperationsMonitor;
static IPlasticAPI mPlasticAPI;
static WorkspaceInfo mWkInfo;
static readonly ILog mLog = PlasticApp.GetLogger("DrawSceneOperations");
}
}