Skip to content

Commit

Permalink
fixes about newly created non-renders not working
Browse files Browse the repository at this point in the history
  • Loading branch information
Aytackydln committed Nov 28, 2024
1 parent ec8bfb6 commit 3e1974b
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public void FillOver(ref readonly Color color)
public void Clear()
{
Array.Copy(_emptyKeyColors, _keyColors, _emptyKeyColors.Length);
_zoneKeysCache.Invalidate();
}

public void Set(DeviceKeys key, ref readonly Color color)
Expand Down
6 changes: 4 additions & 2 deletions Project-Aurora/Project-Aurora/EffectsEngine/ZoneKeysCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public sealed class ZoneKeysCache : IDisposable

private DeviceKeys[] _zoneKeys = [];
private KeySequence? _lastKeySequence;
private KeySequenceType _lastKeySequenceType = KeySequenceType.Sequence;
private FreeFormObject? _lastFreeForm;

private bool _invalidated;
Expand All @@ -23,13 +24,14 @@ public ZoneKeysCache()

public void SetSequence(KeySequence keySequence)
{
if (keySequence.Equals(_lastKeySequence) && !_invalidated)
if (keySequence.Equals(_lastKeySequence) && _lastKeySequenceType == keySequence.Type && !_invalidated)
{
return;
}

_zoneKeys = GetKeys(keySequence);
_lastKeySequence = keySequence;
_lastKeySequenceType = keySequence.Type;
_invalidated = false;
}

Expand Down Expand Up @@ -197,7 +199,7 @@ private void EffectsOnCanvasChanged(object? sender, EventArgs e)
Invalidate();
}

private void Invalidate()
public void Invalidate()
{
_invalidated = true;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
Expand Down Expand Up @@ -27,7 +28,7 @@ public Control_LayerControlPresenter()
InitializeComponent();
}

private async void SetLayer(Layer layer)
private async Task SetLayer(Layer layer)
{
_isSettingNewLayer = true;

Expand Down Expand Up @@ -74,35 +75,30 @@ private async void SetLayer(Layer layer)
HighUsageTooltip.Visibility = layer.Handler.HighResource() ? Visibility.Visible : Visibility.Hidden;
}

private void cmbLayerType_SelectionChanged(object? sender, SelectionChangedEventArgs e)
private async void cmbLayerType_SelectionChanged(object? sender, SelectionChangedEventArgs e)
{
if (!IsLoaded || _isSettingNewLayer || sender is not ComboBox comboBox) return;
_Layer?.Dispose();
ResetLayer((Type)comboBox.SelectedValue);
await ResetLayer((Type)comboBox.SelectedValue);
}

private async void ResetLayer(Type type)
private async Task ResetLayer(Type type)
{
if (!IsLoaded || _isSettingNewLayer || type == null) return;

_Layer.Handler = (ILayerHandler)Activator.CreateInstance(type);
await SetLayer(_Layer);

CtrlLayerTypeConfig.Content = EmptyContent;
CtrlLayerTypeConfig.Content = await _Layer.Control;
ChkExcludeMask.IsChecked = Layer.Handler._EnableExclusionMask ?? false;
KeyseqExcludeMask.Sequence = Layer.Handler._ExclusionMask;
SldrOpacity.Value = (int)(Layer.Handler.Opacity * 100.0f);
LblOpacityText.Text = $"{(int)SldrOpacity.Value} %";
_Layer.AssociatedApplication.SaveProfiles();

OverridesEditor.ForcePropertyListUpdate();
}

private void btnReset_Click(object? sender, RoutedEventArgs e)
private async void btnReset_Click(object? sender, RoutedEventArgs e)
{
if (IsLoaded && !_isSettingNewLayer && sender is Button)
{
ResetLayer((Type)CmbLayerType.SelectedValue);
await ResetLayer((Type)CmbLayerType.SelectedValue);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ public override EffectLayer Render(IGameState gamestate)
else if (!Properties.RandomPrimaryColor)
_currentPrimaryColor = Properties.PrimaryColor;

EffectLayer.Clear();
EffectLayer.Set(Properties.Sequence, ColorUtils.BlendColors(_currentPrimaryColor, _currentSecondaryColor, currentSine));

return EffectLayer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ public override EffectLayer Render(IGameState gameState)
else if (!Properties.RandomPrimaryColor)
_currentPrimaryColor = Properties.PrimaryColor;

EffectLayer.Clear();
EffectLayer.Set(Properties.Sequence, ColorUtils.BlendColors(_currentPrimaryColor, _currentSecondaryColor, smoothed));

return EffectLayer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Windows.Controls;
using AuroraRgb.EffectsEngine;
using AuroraRgb.Profiles;
Expand Down Expand Up @@ -57,8 +56,8 @@ public override void Default()
public class GlitchLayerHandler() : LayerHandler<GlitchLayerHandlerProperties>("Glitch Layer")
{
private readonly Random _randomizer = new();

private readonly Dictionary<DeviceKeys, Color> _glitchColors = new();
private readonly ZoneKeysCache _zoneKeysCache = new();

private long _previousTime;

Expand All @@ -67,14 +66,14 @@ protected override UserControl CreateControl()
return new Control_GlitchLayer(this);
}

public override EffectLayer Render(IGameState state)
public override EffectLayer Render(IGameState gameState)
{
var currentTime = Time.GetMillisecondsSinceEpoch();
if (_previousTime + Properties.UpdateInterval * 1000L > currentTime) return EffectLayer;
_previousTime = currentTime;

var keys = Properties.Sequence.Type == KeySequenceType.FreeForm ? Enum.GetValues(typeof(DeviceKeys)) : Properties.Sequence.Keys.ToArray();
foreach (DeviceKeys key in keys)
var keys = _zoneKeysCache.GetKeys();
foreach (var key in keys)
{
Color clr;
if (Properties.AllowTransparency)
Expand All @@ -85,17 +84,18 @@ public override EffectLayer Render(IGameState state)
_glitchColors[key] = clr;
}

EffectLayer.Clear();
foreach (var (key, color) in _glitchColors)
{
EffectLayer.Set(key, in color);
}
EffectLayer.OnlyInclude(Properties.Sequence);
return EffectLayer;
}

protected override void PropertiesChanged(object? sender, PropertyChangedEventArgs args)
{
base.PropertiesChanged(sender, args);
_glitchColors.Clear();
_zoneKeysCache.SetSequence(Properties.Sequence);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ protected override UserControl CreateControl() {
return new Control_ToolbarLayer(this);
}

public override EffectLayer Render(IGameState _) {
public override EffectLayer Render(IGameState gameState) {
EffectLayer.Clear();
foreach (var key in Properties.Sequence.Keys)
EffectLayer.Set(key, key == _activeKey ? Properties.SecondaryColor : Properties.PrimaryColor);
return EffectLayer;
Expand Down

0 comments on commit 3e1974b

Please sign in to comment.