A game about forced loneliness, made by TACStudios
at master 3.4 kB view raw
1using System; 2using System.Collections.Generic; 3using System.Collections.ObjectModel; 4 5using UnityEditor.VersionControl; 6 7using Codice.Client.Common.Threading; 8using Codice.CM.Common; 9using Codice.LogWrapper; 10using PlasticGui; 11using Unity.PlasticSCM.Editor.AssetUtils; 12using Unity.PlasticSCM.Editor.AssetsOverlays.Cache; 13using Unity.PlasticSCM.Editor.AssetMenu; 14using Unity.PlasticSCM.Editor.AssetUtils.Processor; 15 16using PlasticAssetModificationProcessor = Unity.PlasticSCM.Editor.AssetUtils.Processor.AssetModificationProcessor; 17 18namespace Unity.PlasticSCM.Editor.SceneView 19{ 20 static class DrawSceneOperations 21 { 22 internal static void Enable( 23 WorkspaceInfo wkInfo, 24 IPlasticAPI plasticApi, 25 IWorkspaceOperationsMonitor workspaceOperationsMonitor, 26 IAssetStatusCache assetStatusCache) 27 { 28 if (mIsEnabled) 29 return; 30 31 mLog.Debug("Enable"); 32 33 mWkInfo = wkInfo; 34 mPlasticAPI = plasticApi; 35 mWorkspaceOperationsMonitor = workspaceOperationsMonitor; 36 mAssetStatusCache = assetStatusCache; 37 38 mIsEnabled = true; 39 40 Provider.preCheckoutCallback += Provider_preCheckoutCallback; 41 } 42 43 internal static void Disable() 44 { 45 mLog.Debug("Disable"); 46 47 mIsEnabled = false; 48 49 Provider.preCheckoutCallback -= Provider_preCheckoutCallback; 50 51 mWkInfo = null; 52 mPlasticAPI = null; 53 mWorkspaceOperationsMonitor = null; 54 mAssetStatusCache = null; 55 } 56 57 static bool Provider_preCheckoutCallback( 58 AssetList list, 59 ref string changesetID, 60 ref string changesetDescription) 61 { 62 try 63 { 64 if (!mIsEnabled) 65 return true; 66 67 List<Asset> assets = GetUnmodifiedAssets( 68 list, PlasticAssetModificationProcessor.GetModifiedAssetsToProcess()); 69 70 if (assets.Count == 0) 71 return true; 72 73 List<string> selectedPaths = GetSelectedPaths.ForOperation( 74 mWkInfo, assets, mPlasticAPI, mAssetStatusCache, 75 AssetMenuOperations.Checkout); 76 77 if (selectedPaths.Count == 0) 78 return true; 79 80 mWorkspaceOperationsMonitor.AddPathsToCheckout(selectedPaths); 81 } 82 catch (Exception ex) 83 { 84 ExceptionsHandler.LogException(typeof(DrawSceneOperations).Name, ex); 85 } 86 87 return true; 88 } 89 90 static List<Asset> GetUnmodifiedAssets( 91 AssetList assetList, 92 ReadOnlyCollection<string> modifiedAssetsToProcess) 93 { 94 List<Asset> result = new List<Asset>(assetList.Count); 95 96 foreach (Asset asset in assetList) 97 { 98 if (modifiedAssetsToProcess.Contains(asset.path)) 99 continue; 100 101 result.Add(asset); 102 } 103 104 return result; 105 } 106 107 static bool mIsEnabled; 108 static IAssetStatusCache mAssetStatusCache; 109 static IWorkspaceOperationsMonitor mWorkspaceOperationsMonitor; 110 static IPlasticAPI mPlasticAPI; 111 static WorkspaceInfo mWkInfo; 112 113 static readonly ILog mLog = PlasticApp.GetLogger("DrawSceneOperations"); 114 } 115}