Initial commit
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 204b6e52ab6164e478f852a359e0c0c0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user