61 lines
1.5 KiB
C#
61 lines
1.5 KiB
C#
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
|
|
|
using System.IO;
|
|
|
|
namespace FlaxEditor.GUI.Timeline.Undo
|
|
{
|
|
class EditTimelineAction : IUndoAction
|
|
{
|
|
private Timeline _timeline;
|
|
private byte[] _beforeData;
|
|
private byte[] _afterData;
|
|
|
|
public EditTimelineAction(Timeline timeline, byte[] beforeData, byte[] afterData)
|
|
{
|
|
_timeline = timeline;
|
|
_beforeData = beforeData;
|
|
_afterData = afterData;
|
|
}
|
|
|
|
public static byte[] CaptureData(Timeline timeline)
|
|
{
|
|
using (var memory = new MemoryStream(512))
|
|
using (var stream = new BinaryWriter(memory))
|
|
{
|
|
stream.Write(timeline.DurationFrames);
|
|
return memory.ToArray();
|
|
}
|
|
}
|
|
|
|
private void Set(byte[] data)
|
|
{
|
|
using (var memory = new MemoryStream(data))
|
|
using (var stream = new BinaryReader(memory))
|
|
{
|
|
_timeline.DurationFrames = stream.ReadInt32();
|
|
}
|
|
_timeline.ArrangeTracks();
|
|
_timeline.MarkAsEdited();
|
|
}
|
|
|
|
public string ActionString => "Edit timeline";
|
|
|
|
public void Do()
|
|
{
|
|
Set(_afterData);
|
|
}
|
|
|
|
public void Undo()
|
|
{
|
|
Set(_beforeData);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_timeline = null;
|
|
_beforeData = null;
|
|
_afterData = null;
|
|
}
|
|
}
|
|
}
|