Skip to content

Commit f4e2588

Browse files
committed
optimize all away effects
fix rainfall becoming transparent
1 parent 6bf658d commit f4e2588

14 files changed

Lines changed: 321 additions & 290 deletions

Project-Aurora/Project-Aurora/Controls/Control_DeviceItem.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private void btnToggleOnOff_Click(object sender, RoutedEventArgs e)
6666
{
6767
if (sender is Button)
6868
{
69-
lock (Device.actionLock)
69+
lock (Device.ActionLock)
7070
{
7171
if (Device.Device.IsInitialized)
7272
Device.Device.Shutdown();
@@ -85,7 +85,7 @@ private void btnToggleEnableDisable_Click(object sender, RoutedEventArgs e)
8585
else
8686
{
8787
Global.Configuration.DevicesDisabled.Add(Device.Device.GetType());
88-
lock (Device.actionLock)
88+
lock (Device.ActionLock)
8989
{
9090
if (Device.Device.IsInitialized)
9191
Device.Device.Shutdown();

Project-Aurora/Project-Aurora/EffectsEngine/Animations/AnimationMix.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
44
using System.Drawing;
5+
using System.Drawing.Drawing2D;
56
using Aurora.Utils;
67
using Newtonsoft.Json;
78

Project-Aurora/Project-Aurora/EffectsEngine/Animations/AnimationTrack.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,7 @@ public bool ContainsAnimationAt(float time)
9696
{
9797
time = NormalizeTime(time);
9898

99-
if (time > _animationDuration || _animations.Count == 0)
100-
return false;
101-
return true;
99+
return !(time > _animationDuration) && _animations.Count != 0;
102100
}
103101

104102
public AnimationTrack SetFrame(float time, AnimationFrame animframe)

Project-Aurora/Project-Aurora/EffectsEngine/EffectFrame.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ public void AddOverlayLayers(EffectLayer[] effectLayers)
3131
over_layers.Enqueue(layer);
3232
}
3333

34+
/// <summary>
35+
/// Add overlay layer into the frame
36+
/// </summary>
37+
/// <param name="effectLayers">Array of layers to be added</param>
38+
public void AddOverlayLayer(EffectLayer effectLayer)
39+
{
40+
over_layers.Enqueue(effectLayer);
41+
}
42+
3443
/// <summary>
3544
/// Gets the queue of layers
3645
/// </summary>

Project-Aurora/Project-Aurora/EffectsEngine/EffectLayer.cs

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,10 @@ public EffectLayer(string name, Color color)
117117
/// <param name="effect">An enum specifying which LayerEffect to apply</param>
118118
/// <param name="effectConfig">Configurations for the LayerEffect</param>
119119
/// <param name="rect">A rectangle specifying what region to apply effects in</param>
120-
public EffectLayer(string name, LayerEffects effect, LayerEffectConfig effectConfig, RectangleF rect = new())
120+
public void DrawGradient(LayerEffects effect, LayerEffectConfig effectConfig, RectangleF rect = new())
121121
{
122-
_name = name;
123-
WeakEventManager<Effects, CanvasChangedArgs>.AddHandler(null, "CanvasChanged", InvalidateColorMap);
124-
_colormap = new Bitmap(Effects.CanvasWidth, Effects.CanvasHeight);
125-
_textureBrush = new TextureBrush(_colormap);
126-
Dimension = new Rectangle(0, 0, Effects.CanvasWidth, Effects.CanvasHeight);
127-
_peripheral = new Color();
128-
Brush brush;
122+
Clear();
123+
LinearGradientBrush brush;
129124
var shift = 0.0f;
130125

131126
switch (effect)
@@ -135,7 +130,7 @@ public EffectLayer(string name, Color color)
135130
break;
136131
case LayerEffects.ColorBreathing:
137132
FillOver(effectConfig.primary);
138-
float sine = (float)Math.Pow(Math.Sin((double)(Time.GetMillisecondsSinceEpoch() % 10000L / 10000.0f) * 2 * Math.PI * effectConfig.speed), 2);
133+
var sine = (float)Math.Pow(Math.Sin((double)(Time.GetMillisecondsSinceEpoch() % 10000L / 10000.0f) * 2 * Math.PI * effectConfig.speed), 2);
139134
FillOver(Color.FromArgb((byte)(sine * 255), effectConfig.secondary));
140135
break;
141136
case LayerEffects.RainbowShift_Horizontal:
@@ -149,8 +144,8 @@ public EffectLayer(string name, Color color)
149144
shift *= -1.0f;
150145

151146
brush = CreateRainbowBrush();
152-
(brush as LinearGradientBrush).RotateTransform(0.0f);
153-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
147+
brush.RotateTransform(0.0f);
148+
brush.TranslateTransform(shift, shift);
154149

155150
Fill(brush);
156151

@@ -167,8 +162,8 @@ public EffectLayer(string name, Color color)
167162
shift *= -1.0f;
168163

169164
brush = CreateRainbowBrush();
170-
(brush as LinearGradientBrush).RotateTransform(90.0f);
171-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
165+
brush.RotateTransform(90.0f);
166+
brush.TranslateTransform(shift, shift);
172167

173168
Fill(brush);
174169

@@ -185,8 +180,8 @@ public EffectLayer(string name, Color color)
185180
shift *= -1.0f;
186181

187182
brush = CreateRainbowBrush();
188-
(brush as LinearGradientBrush).RotateTransform(45.0f);
189-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
183+
brush.RotateTransform(45.0f);
184+
brush.TranslateTransform(shift, shift);
190185

191186
Fill(brush);
192187

@@ -203,8 +198,8 @@ public EffectLayer(string name, Color color)
203198
shift *= -1.0f;
204199

205200
brush = CreateRainbowBrush();
206-
(brush as LinearGradientBrush).RotateTransform(-45.0f);
207-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
201+
brush.RotateTransform(-45.0f);
202+
brush.TranslateTransform(shift, shift);
208203

209204
Fill(brush);
210205

@@ -222,14 +217,15 @@ public EffectLayer(string name, Color color)
222217
shift *= -1.0f;
223218

224219
brush = CreateRainbowBrush();
225-
(brush as LinearGradientBrush).RotateTransform(effectConfig.angle);
226-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
220+
brush.RotateTransform(effectConfig.angle);
221+
brush.TranslateTransform(shift, shift);
227222

228223
Fill(brush);
229224

230225
effectConfig.last_effect_call = Time.GetMillisecondsSinceEpoch();
231226
break;
232227
case LayerEffects.GradientShift_Custom_Angle:
228+
{
233229
effectConfig.shift_amount += (Time.GetMillisecondsSinceEpoch() - effectConfig.last_effect_call) / 1000.0f * 0.067f * effectConfig.speed;
234230
effectConfig.shift_amount %= Effects.CanvasBiggest;
235231

@@ -246,64 +242,63 @@ public EffectLayer(string name, Color color)
246242
if (effectConfig.animation_reverse)
247243
shift *= -1.0f;
248244

249-
brush = effectConfig.brush.GetDrawingBrush();
245+
brush = (LinearGradientBrush) effectConfig.brush.GetDrawingBrush();
250246
switch (effectConfig.brush.type)
251247
{
252248
case EffectBrush.BrushType.Linear:
253249
{
254250
if (!rect.IsEmpty)
255251
{
256-
(brush as LinearGradientBrush).TranslateTransform(rect.X, rect.Y);
257-
(brush as LinearGradientBrush).ScaleTransform(rect.Width * 100 / effectConfig.gradient_size, rect.Height * 100 / effectConfig.gradient_size);
252+
brush.TranslateTransform(rect.X, rect.Y);
253+
brush.ScaleTransform(rect.Width * 100 / effectConfig.gradient_size, rect.Height * 100 / effectConfig.gradient_size);
258254
}
259255
else
260256
{
261-
(brush as LinearGradientBrush).ScaleTransform(Effects.CanvasHeight * 100 / effectConfig.gradient_size, Effects.CanvasHeight * 100 / effectConfig.gradient_size);
257+
brush.ScaleTransform(Effects.CanvasHeight * 100 / effectConfig.gradient_size, Effects.CanvasHeight * 100 / effectConfig.gradient_size);
262258
}
263259

264-
(brush as LinearGradientBrush).RotateTransform(effectConfig.angle);
265-
(brush as LinearGradientBrush).TranslateTransform(shift, shift);
260+
brush.RotateTransform(effectConfig.angle);
261+
brush.TranslateTransform(shift, shift);
266262
break;
267263
}
268264
case EffectBrush.BrushType.Radial:
269265
{
270266
if (effectConfig.animation_type == AnimationType.Zoom_in || effectConfig.animation_type == AnimationType.Zoom_out)
271267
{
272268
float percent = shift / Effects.CanvasBiggest;
269+
float xOffset = Effects.CanvasWidth / 2.0f * percent;
270+
float yOffset = Effects.CanvasHeight / 2.0f * percent;
273271

274-
float x_offset = Effects.CanvasWidth / 2.0f * percent;
275-
float y_offset = Effects.CanvasHeight / 2.0f * percent;
276272

277-
278-
(brush as PathGradientBrush).WrapMode = WrapMode.Clamp;
273+
brush.WrapMode = WrapMode.Clamp;
279274

280275
if (!rect.IsEmpty)
281276
{
282-
x_offset = rect.Width / 2.0f * percent;
283-
y_offset = rect.Height / 2.0f * percent;
277+
xOffset = rect.Width / 2.0f * percent;
278+
yOffset = rect.Height / 2.0f * percent;
284279

285-
(brush as PathGradientBrush).TranslateTransform(rect.X + x_offset, rect.Y + y_offset);
286-
(brush as PathGradientBrush).ScaleTransform((rect.Width - 2.0f * x_offset) * 100 / effectConfig.gradient_size, (rect.Height - 2.0f * y_offset) * 100 / effectConfig.gradient_size);
280+
brush.TranslateTransform(rect.X + xOffset, rect.Y + yOffset);
281+
brush.ScaleTransform((rect.Width - 2.0f * xOffset) * 100 / effectConfig.gradient_size, (rect.Height - 2.0f * yOffset) * 100 / effectConfig.gradient_size);
287282
}
288283
else
289284
{
290-
(brush as PathGradientBrush).ScaleTransform((Effects.CanvasHeight + x_offset) * 100 / effectConfig.gradient_size, (Effects.CanvasHeight + y_offset) * 100 / effectConfig.gradient_size);
285+
brush.ScaleTransform((Effects.CanvasHeight + xOffset) * 100 / effectConfig.gradient_size, (Effects.CanvasHeight + yOffset) * 100 / effectConfig.gradient_size);
291286
}
292287
}
293288
else
294289
{
295290
if (!rect.IsEmpty)
296291
{
297-
(brush as PathGradientBrush).TranslateTransform(rect.X, rect.Y);
298-
(brush as PathGradientBrush).ScaleTransform(rect.Width * 100 / effectConfig.gradient_size, rect.Height * 100 / effectConfig.gradient_size);
292+
brush.TranslateTransform(rect.X, rect.Y);
293+
brush.ScaleTransform(rect.Width * 100 / effectConfig.gradient_size, rect.Height * 100 / effectConfig.gradient_size);
299294
}
300295
else
301296
{
302-
(brush as PathGradientBrush).ScaleTransform(Effects.CanvasHeight * 100 / effectConfig.gradient_size, Effects.CanvasHeight * 100 / effectConfig.gradient_size);
297+
brush.ScaleTransform(Effects.CanvasHeight * 100 / effectConfig.gradient_size, Effects.CanvasHeight * 100 / effectConfig.gradient_size);
303298
}
304299
}
305300

306-
(brush as PathGradientBrush).RotateTransform(effectConfig.angle);
301+
brush.RotateTransform(effectConfig.angle);
307302

308303
//(brush as PathGradientBrush).TranslateTransform(x_shift, y_shift);
309304
break;
@@ -314,6 +309,7 @@ public EffectLayer(string name, Color color)
314309

315310
effectConfig.last_effect_call = Time.GetMillisecondsSinceEpoch();
316311
break;
312+
}
317313
}
318314
}
319315

0 commit comments

Comments
 (0)