Files
sbox-public/game/editor/MovieMaker/Code/Session/TrackView.Preview.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

64 lines
1.2 KiB
C#

using Sandbox.MovieMaker;
namespace Editor.MovieMaker;
#nullable enable
partial class TrackView
{
private readonly HashSet<ITrackBlock> _changedBlocks = new();
private readonly List<ITrackBlock> _previewBlocks = new();
private readonly List<ITrackBlock> _flattenedPreviewBlocks = new();
private bool _previewBlocksInvalid = true;
public IEnumerable<ITrackBlock> PreviewBlocks
{
get
{
UpdatePreviewBlocks();
return _flattenedPreviewBlocks;
}
}
private void UpdatePreviewBlocks()
{
if ( !_previewBlocksInvalid ) return;
_previewBlocksInvalid = false;
_flattenedPreviewBlocks.Clear();
foreach ( var child in Children )
{
AddChildBlocks( _flattenedPreviewBlocks, child.PreviewBlocks );
}
_flattenedPreviewBlocks.AddRange( _previewBlocks );
}
public void SetPreviewBlocks( IEnumerable<ITrackBlock> original, IEnumerable<ITrackBlock> changed )
{
_changedBlocks.Clear();
foreach ( var block in original )
{
_changedBlocks.Add( block );
}
_previewBlocks.Clear();
_previewBlocks.AddRange( changed );
MarkValueChanged();
}
public void ClearPreviewBlocks()
{
if ( _previewBlocks.Count == 0 ) return;
_changedBlocks.Clear();
_previewBlocks.Clear();
MarkValueChanged();
}
}