mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-05-24 23:07:02 -04:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
64 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|