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();
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|