40 lines
931 B
C#
40 lines
931 B
C#
|
using System;
|
||
|
|
||
|
public class KeyframeToggleContext : IDisposable
|
||
|
{
|
||
|
private IKeyframeSetter _keyframmable;
|
||
|
private bool _enableKeyframes;
|
||
|
|
||
|
public KeyframeToggleContext(IKeyframeSetter keyframmable, bool enableKeyframes = false)
|
||
|
{
|
||
|
_keyframmable = keyframmable;
|
||
|
_enableKeyframes = enableKeyframes;
|
||
|
Toggle(true);
|
||
|
}
|
||
|
|
||
|
public void ForceSetKeyframe(int frameNum = -1)
|
||
|
{
|
||
|
Toggle(false);
|
||
|
_keyframmable.SetKeyframe(frameNum);
|
||
|
Toggle(true);
|
||
|
}
|
||
|
|
||
|
public void Dispose()
|
||
|
{
|
||
|
Toggle(false);
|
||
|
}
|
||
|
|
||
|
private void Toggle(bool on)
|
||
|
{
|
||
|
if (on)
|
||
|
{
|
||
|
if (_enableKeyframes) _keyframmable.EnableKeyframeSet();
|
||
|
else _keyframmable.DisableKeyframeSet();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (_enableKeyframes) _keyframmable.DisableKeyframeSet();
|
||
|
else _keyframmable.EnableKeyframeSet();
|
||
|
}
|
||
|
}
|
||
|
}
|