From 1a71b99a36eafb5e84d9b49501c9d50be5c53209 Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Fri, 6 Dec 2019 08:52:31 +0100 Subject: [PATCH] Tweaked the noise layer settings --- .../NoiseLayerElement.cs | 19 ++++++++++++++----- .../NoiseLayerElementProvider.cs | 2 +- .../NoiseLayerElementSettings.cs | 2 +- .../NoiseLayerElementView.xaml | 6 +++--- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElement.cs b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElement.cs index 3e3dac6fb..3610e6619 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElement.cs +++ b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElement.cs @@ -8,6 +8,7 @@ namespace Artemis.Plugins.LayerElements.Noise { public class NoiseLayerElement : LayerElement { + private static Random _rand = new Random(); private readonly OpenSimplexNoise _noise; private float _z; @@ -15,7 +16,7 @@ namespace Artemis.Plugins.LayerElements.Noise { Settings = settings; - _z = 0.001f; + _z = 1; _noise = new OpenSimplexNoise(Guid.GetHashCode()); } @@ -24,7 +25,12 @@ namespace Artemis.Plugins.LayerElements.Noise public override void Update(double deltaTime) { - _z += Settings.AnimationSpeed; + // TODO: Come up with a better way to use deltaTime + _z += Settings.AnimationSpeed / 500f / 0.04f * (float) deltaTime; + + if (_z >= float.MaxValue) + _z = 0; + base.Update(deltaTime); } @@ -35,16 +41,19 @@ namespace Artemis.Plugins.LayerElements.Noise public override void Render(ArtemisSurface surface, SKCanvas canvas) { - var width = Layer.AbsoluteRenderRectangle.Width / 2; - var height = Layer.AbsoluteRenderRectangle.Height / 2; + // Scale down the render path + var width = Layer.AbsoluteRenderRectangle.Width / 4; + var height = Layer.AbsoluteRenderRectangle.Height / 4; + using (var bitmap = new SKBitmap(new SKImageInfo((int) Layer.AbsoluteRenderRectangle.Width, (int) Layer.AbsoluteRenderRectangle.Height))) { for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { + // Not setting pixels outside the layer clip would be faster but right now rotation takes place after the rendering, must change that first var v = _noise.Evaluate(Settings.XScale * x / width, Settings.YScale * y / height, _z); - bitmap.SetPixel(x, y, new SKColor(255, 255, 255, (byte) ((v + 1) * 127))); + bitmap.SetPixel(x, y, new SKColor(0, 0, 0, (byte) ((v + 1) * 127))); } } diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementProvider.cs b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementProvider.cs index 30e9dba29..f58fa5444 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementProvider.cs +++ b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementProvider.cs @@ -7,7 +7,7 @@ namespace Artemis.Plugins.LayerElements.Noise { public NoiseLayerElementProvider(PluginInfo pluginInfo) : base(pluginInfo) { - AddLayerElementDescriptor("Noise", "A brush of that shows a perlin noise", "Brush"); + AddLayerElementDescriptor("Noise", "A brush of that shows an animated random noise", "ScatterPlot"); } public override void EnablePlugin() diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementSettings.cs b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementSettings.cs index 3123a620f..bee90789f 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementSettings.cs +++ b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementSettings.cs @@ -16,7 +16,7 @@ namespace Artemis.Plugins.LayerElements.Noise BlendMode = SKBlendMode.Color; XScale = 0.5f; YScale = 0.5f; - AnimationSpeed = 0.1f; + AnimationSpeed = 50f; } public float XScale diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementView.xaml b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementView.xaml index 516e6ea41..4e37292d2 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementView.xaml +++ b/src/Artemis.Plugins.LayerElements.Noise/NoiseLayerElementView.xaml @@ -66,7 +66,7 @@ X Scale - + @@ -85,7 +85,7 @@ Y Scale - + @@ -104,7 +104,7 @@ Animation speed - +