45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace UnityEditor.U2D.Animation | ||
|  | { | ||
|  |     internal class UndoScope : IDisposable | ||
|  |     { | ||
|  |         private bool m_Disposed; | ||
|  |         private ICacheUndo m_CacheUndo; | ||
|  | 
 | ||
|  |         public UndoScope(ICacheUndo cacheUndo, string operationName, bool incrementGroup) | ||
|  |         { | ||
|  |             Debug.Assert(cacheUndo != null); | ||
|  | 
 | ||
|  |             if (cacheUndo.isUndoOperationSet == false) | ||
|  |             { | ||
|  |                 m_CacheUndo = cacheUndo; | ||
|  | 
 | ||
|  |                 if (incrementGroup) | ||
|  |                     m_CacheUndo.IncrementCurrentGroup(); | ||
|  | 
 | ||
|  |                 m_CacheUndo.BeginUndoOperation(operationName); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         ~UndoScope() | ||
|  |         { | ||
|  |             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.EndUndoOperation(); | ||
|  | 
 | ||
|  |         } | ||
|  |     } | ||
|  | } |