mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Layer properties - Ensure only LayerBrushes can add properties and make sure that method instantiates a keyframe engine Layer properties UI - Respond to properties being added/removed
64 lines
2.5 KiB
C#
64 lines
2.5 KiB
C#
using System.Linq;
|
|
using Artemis.Core.Events;
|
|
using Artemis.UI.Ninject.Factories;
|
|
using Stylet;
|
|
|
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
|
{
|
|
public class PropertyTrackViewModel : Screen
|
|
{
|
|
private readonly IPropertyTrackKeyframeVmFactory _propertyTrackKeyframeVmFactory;
|
|
|
|
public PropertyTrackViewModel(PropertyTimelineViewModel propertyTimelineViewModel, LayerPropertyViewModel layerPropertyViewModel, IPropertyTrackKeyframeVmFactory propertyTrackKeyframeVmFactory)
|
|
{
|
|
_propertyTrackKeyframeVmFactory = propertyTrackKeyframeVmFactory;
|
|
PropertyTimelineViewModel = propertyTimelineViewModel;
|
|
LayerPropertyViewModel = layerPropertyViewModel;
|
|
KeyframeViewModels = new BindableCollection<PropertyTrackKeyframeViewModel>();
|
|
|
|
PopulateKeyframes();
|
|
UpdateKeyframes(PropertyTimelineViewModel.LayerPropertiesViewModel.PixelsPerSecond);
|
|
}
|
|
|
|
|
|
public PropertyTimelineViewModel PropertyTimelineViewModel { get; }
|
|
public LayerPropertyViewModel LayerPropertyViewModel { get; }
|
|
public BindableCollection<PropertyTrackKeyframeViewModel> KeyframeViewModels { get; set; }
|
|
|
|
public void PopulateKeyframes()
|
|
{
|
|
// Remove old keyframes
|
|
foreach (var viewModel in KeyframeViewModels.ToList())
|
|
{
|
|
if (!LayerPropertyViewModel.LayerProperty.UntypedKeyframes.Contains(viewModel.Keyframe))
|
|
KeyframeViewModels.Remove(viewModel);
|
|
}
|
|
|
|
// Add new keyframes
|
|
foreach (var keyframe in LayerPropertyViewModel.LayerProperty.UntypedKeyframes)
|
|
{
|
|
if (KeyframeViewModels.Any(k => k.Keyframe == keyframe))
|
|
continue;
|
|
KeyframeViewModels.Add(_propertyTrackKeyframeVmFactory.Create(this, keyframe));
|
|
}
|
|
|
|
UpdateKeyframes(PropertyTimelineViewModel.LayerPropertiesViewModel.PixelsPerSecond);
|
|
}
|
|
|
|
public void UpdateKeyframes(int pixelsPerSecond)
|
|
{
|
|
foreach (var keyframeViewModel in KeyframeViewModels)
|
|
{
|
|
keyframeViewModel.ParentView = View;
|
|
keyframeViewModel.Update(pixelsPerSecond);
|
|
}
|
|
}
|
|
|
|
protected override void OnViewLoaded()
|
|
{
|
|
foreach (var keyframeViewModel in KeyframeViewModels)
|
|
keyframeViewModel.ParentView = View;
|
|
base.OnViewLoaded();
|
|
}
|
|
}
|
|
} |