UniversalViewer/Assets/Scripts/ModelViewerBase/Pose/Timeline/KeyframeToggleContext.cs

40 lines
931 B
C#
Raw Permalink Normal View History

2024-04-21 22:38:26 +08:00
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();
}
}
}