40 lines
		
	
	
		
			950 B
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			950 B
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace UnityEditor.U2D.Animation | ||
|  | { | ||
|  |     internal class DisableUndoScope : IDisposable | ||
|  |     { | ||
|  |         private bool m_Disposed; | ||
|  |         private ICacheUndo m_CacheUndo; | ||
|  |         private IUndo m_UndoOverride; | ||
|  | 
 | ||
|  |         public DisableUndoScope(ICacheUndo cacheUndo) | ||
|  |         { | ||
|  |             Debug.Assert(cacheUndo != null); | ||
|  | 
 | ||
|  |             m_CacheUndo = cacheUndo; | ||
|  |             m_UndoOverride = m_CacheUndo.undoOverride; | ||
|  |             m_CacheUndo.undoOverride = new DisabledUndo(); | ||
|  |         } | ||
|  | 
 | ||
|  |         ~DisableUndoScope() | ||
|  |         { | ||
|  |             if (!m_Disposed) | ||
|  |                 Debug.LogError("Scope was not disposed! You should use the 'using' keyword or manually call Dispose."); | ||
|  |         } | ||
|  | 
 | ||
|  |         public void Dispose() | ||
|  |         { | ||
|  |             if (m_Disposed) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             m_Disposed = true; | ||
|  | 
 | ||
|  |             if (m_CacheUndo != null) | ||
|  |                 m_CacheUndo.undoOverride = m_UndoOverride; | ||
|  | 
 | ||
|  |         } | ||
|  |     } | ||
|  | } |