Editor/MovieMaker/Modes/Motion/MotionEditMode.History.cs
using System.Collections.Immutable;
using System.Linq;
using Editor.MapEditor;
using Editor.ShaderGraph.Nodes;
using Sandbox.MovieMaker;
using Sandbox.Utility;
namespace Editor.MovieMaker;
#nullable enable
partial class MotionEditMode
{
protected override ISnapshot OnSnapshot() => new Snapshot( TimeSelection, Modification?.Snapshot() );
protected override void OnRestore( ISnapshot snapshot )
{
if ( snapshot is not Snapshot data ) return;
_timeSelection = data.Selection;
if ( data is { Modification: { } modification, Selection: { } selection } )
{
SetModification( modification.Type, selection )
.Restore( modification );
}
else
{
ClearChanges();
}
SelectionChanged();
}
}
file sealed record Snapshot( TimeSelection? Selection, ModificationSnapshot? Modification ) : EditMode.ISnapshot;