mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-11 19:36:28 +00:00
Code cleanup
This commit is contained in:
1 parent
0c245ba83d
commit
ae330c3769
66 files changed
+278
-270
No files matched your search
@@ -6,7 +6,7 @@ namespace Artemis.Core.Extensions
|
|||||||
{
|
{
|
||||||
public static int RoundToInt(this float number)
|
public static int RoundToInt(this float number)
|
||||||
{
|
{
|
||||||
return (int)Math.Round(number, MidpointRounding.AwayFromZero);
|
return (int) Math.Round(number, MidpointRounding.AwayFromZero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,9 +14,7 @@ namespace Artemis.Core.JsonConverters
|
|||||||
public override SKColor ReadJson(JsonReader reader, Type objectType, SKColor existingValue, bool hasExistingValue, JsonSerializer serializer)
|
public override SKColor ReadJson(JsonReader reader, Type objectType, SKColor existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
if (reader.Value is string value && !string.IsNullOrWhiteSpace(value))
|
if (reader.Value is string value && !string.IsNullOrWhiteSpace(value))
|
||||||
{
|
|
||||||
return SKColor.Parse(value);
|
return SKColor.Parse(value);
|
||||||
}
|
|
||||||
|
|
||||||
return SKColor.Empty;
|
return SKColor.Empty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ namespace Artemis.Core.Models.Profile.KeyframeEngines
|
|||||||
|
|
||||||
protected override object GetInterpolatedValue()
|
protected override object GetInterpolatedValue()
|
||||||
{
|
{
|
||||||
var currentKeyframe = (Keyframe<SKSize>)CurrentKeyframe;
|
var currentKeyframe = (Keyframe<SKSize>) CurrentKeyframe;
|
||||||
var nextKeyframe = (Keyframe<SKSize>)NextKeyframe;
|
var nextKeyframe = (Keyframe<SKSize>) NextKeyframe;
|
||||||
|
|
||||||
var widthDiff = nextKeyframe.Value.Width - currentKeyframe.Value.Width;
|
var widthDiff = nextKeyframe.Value.Width - currentKeyframe.Value.Width;
|
||||||
var heightDiff = nextKeyframe.Value.Height - currentKeyframe.Value.Height;
|
var heightDiff = nextKeyframe.Value.Height - currentKeyframe.Value.Height;
|
||||||
|
|||||||
@@ -354,7 +354,8 @@ namespace Artemis.Core.Models.Profile
|
|||||||
|
|
||||||
private void CreateDefaultProperties()
|
private void CreateDefaultProperties()
|
||||||
{
|
{
|
||||||
var transformProperty = new LayerProperty<object>(this, null, "Core.Transform", "Transform", "The default properties collection every layer has, allows you to transform the shape.") {ExpandByDefault = true};
|
var transformProperty = new LayerProperty<object>(this, null, "Core.Transform", "Transform", "The default properties collection every layer has, allows you to transform the shape.")
|
||||||
|
{ExpandByDefault = true};
|
||||||
AnchorPointProperty = new LayerProperty<SKPoint>(this, transformProperty, "Core.AnchorPoint", "Anchor Point", "The point at which the shape is attached to its position.");
|
AnchorPointProperty = new LayerProperty<SKPoint>(this, transformProperty, "Core.AnchorPoint", "Anchor Point", "The point at which the shape is attached to its position.");
|
||||||
PositionProperty = new LayerProperty<SKPoint>(this, transformProperty, "Core.Position", "Position", "The position of the shape.");
|
PositionProperty = new LayerProperty<SKPoint>(this, transformProperty, "Core.Position", "Position", "The position of the shape.");
|
||||||
SizeProperty = new LayerProperty<SKSize>(this, transformProperty, "Core.Size", "Size", "The size of the shape.") {InputAffix = "%"};
|
SizeProperty = new LayerProperty<SKSize>(this, transformProperty, "Core.Size", "Size", "The size of the shape.") {InputAffix = "%"};
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.ObjectModel;
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace Artemis.Core.Models.Profile.LayerProperties
|
namespace Artemis.Core.Models.Profile.LayerProperties
|
||||||
@@ -26,8 +25,8 @@ namespace Artemis.Core.Models.Profile.LayerProperties
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var currentValue = base.GetCurrentValue();
|
var currentValue = GetCurrentValue();
|
||||||
return currentValue == null ? default : (T)currentValue;
|
return currentValue == null ? default : (T) currentValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,10 @@ namespace Artemis.Core.Models.Profile.LayerShapes
|
|||||||
/// Updates Position and Size using the provided unscaled rectangle
|
/// Updates Position and Size using the provided unscaled rectangle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="rect">An unscaled rectangle which is relative to the layer (1.0 being full width/height, 0.5 being half).</param>
|
/// <param name="rect">An unscaled rectangle which is relative to the layer (1.0 being full width/height, 0.5 being half).</param>
|
||||||
/// <param name="time">An optional timespan to indicate where to set the properties, if null the properties' base values will be used.</param>
|
/// <param name="time">
|
||||||
|
/// An optional timespan to indicate where to set the properties, if null the properties' base values
|
||||||
|
/// will be used.
|
||||||
|
/// </param>
|
||||||
public void SetFromUnscaledRectangle(SKRect rect, TimeSpan? time)
|
public void SetFromUnscaledRectangle(SKRect rect, TimeSpan? time)
|
||||||
{
|
{
|
||||||
if (!Layer.Leds.Any())
|
if (!Layer.Leds.Any())
|
||||||
|
|||||||
@@ -1,21 +1,18 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.Core.Plugins.LayerBrush
|
namespace Artemis.Core.Plugins.LayerBrush
|
||||||
{
|
{
|
||||||
public abstract class LayerBrushSettings : PropertyChangedBase
|
public abstract class LayerBrushSettings : PropertyChangedBase
|
||||||
{
|
{
|
||||||
private Action<Action> _propertyChangedDispatcher = Execute.DefaultPropertyChangedDispatcher;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the dispatcher to use to dispatch PropertyChanged events. Defaults to Execute.DefaultPropertyChangedDispatcher
|
/// Gets or sets the dispatcher to use to dispatch PropertyChanged events. Defaults to
|
||||||
|
/// Execute.DefaultPropertyChangedDispatcher
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[System.Xml.Serialization.XmlIgnore]
|
[XmlIgnore]
|
||||||
[Newtonsoft.Json.JsonIgnore]
|
[JsonIgnore]
|
||||||
public override Action<Action> PropertyChangedDispatcher
|
public override Action<Action> PropertyChangedDispatcher { get; set; } = Execute.DefaultPropertyChangedDispatcher;
|
||||||
{
|
|
||||||
get { return this._propertyChangedDispatcher; }
|
|
||||||
set { this._propertyChangedDispatcher = value; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ namespace Artemis.Core.Plugins.Models
|
|||||||
}
|
}
|
||||||
catch (JsonReaderException)
|
catch (JsonReaderException)
|
||||||
{
|
{
|
||||||
Value = default(T);
|
Value = default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace Artemis.Core.Plugins.Models
|
|||||||
/// <param name="name">The name of the setting</param>
|
/// <param name="name">The name of the setting</param>
|
||||||
/// <param name="defaultValue">The default value to use if the setting does not exist yet</param>
|
/// <param name="defaultValue">The default value to use if the setting does not exist yet</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public PluginSetting<T> GetSetting<T>(string name, T defaultValue = default(T))
|
public PluginSetting<T> GetSetting<T>(string name, T defaultValue = default)
|
||||||
{
|
{
|
||||||
lock (_settingEntities)
|
lock (_settingEntities)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using Artemis.Core.Extensions;
|
using Artemis.Core.Extensions;
|
||||||
using Artemis.Core.Plugins.Models;
|
using Artemis.Core.Plugins.Models;
|
||||||
using RGB.NET.Core;
|
using RGB.NET.Core;
|
||||||
|
|||||||
@@ -42,14 +42,6 @@ namespace Artemis.Core.Services
|
|||||||
Task.Run(Initialize);
|
Task.Run(Initialize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConfigureJsonConvert()
|
|
||||||
{
|
|
||||||
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Converters = new List<JsonConverter> { new SKColorConverter() }
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Dispose services
|
// Dispose services
|
||||||
@@ -58,6 +50,14 @@ namespace Artemis.Core.Services
|
|||||||
|
|
||||||
public bool IsInitialized { get; set; }
|
public bool IsInitialized { get; set; }
|
||||||
|
|
||||||
|
private void ConfigureJsonConvert()
|
||||||
|
{
|
||||||
|
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
|
||||||
|
{
|
||||||
|
Converters = new List<JsonConverter> {new SKColorConverter()}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private async Task Initialize()
|
private async Task Initialize()
|
||||||
{
|
{
|
||||||
if (IsInitialized)
|
if (IsInitialized)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Models.Profile.KeyframeEngines;
|
using Artemis.Core.Models.Profile.KeyframeEngines;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
@@ -61,9 +60,7 @@ namespace Artemis.Core.Services
|
|||||||
}
|
}
|
||||||
// If no settings found, provide a fresh instance of the settings type
|
// If no settings found, provide a fresh instance of the settings type
|
||||||
else if (settingsType != null)
|
else if (settingsType != null)
|
||||||
{
|
|
||||||
settingsInstance = Activator.CreateInstance(settingsType);
|
settingsInstance = Activator.CreateInstance(settingsType);
|
||||||
}
|
|
||||||
|
|
||||||
var arguments = new IParameter[]
|
var arguments = new IParameter[]
|
||||||
{
|
{
|
||||||
@@ -72,7 +69,7 @@ namespace Artemis.Core.Services
|
|||||||
new ConstructorArgument("descriptor", brushDescriptor)
|
new ConstructorArgument("descriptor", brushDescriptor)
|
||||||
};
|
};
|
||||||
var layerElement = (LayerBrush) _kernel.Get(brushDescriptor.LayerBrushType, arguments);
|
var layerElement = (LayerBrush) _kernel.Get(brushDescriptor.LayerBrushType, arguments);
|
||||||
layer.LayerBrush = (layerElement);
|
layer.LayerBrush = layerElement;
|
||||||
|
|
||||||
return layerElement;
|
return layerElement;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Artemis.Core.Services
|
|||||||
_pluginSettings = new PluginSettings(pluginInfo, pluginSettingRepository);
|
_pluginSettings = new PluginSettings(pluginInfo, pluginSettingRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PluginSetting<T> GetSetting<T>(string name, T defaultValue = default(T))
|
public PluginSetting<T> GetSetting<T>(string name, T defaultValue = default)
|
||||||
{
|
{
|
||||||
return _pluginSettings.GetSetting(name, defaultValue);
|
return _pluginSettings.GetSetting(name, defaultValue);
|
||||||
}
|
}
|
||||||
@@ -28,6 +28,6 @@ namespace Artemis.Core.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ISettingsService : IProtectedArtemisService
|
public interface ISettingsService : IProtectedArtemisService
|
||||||
{
|
{
|
||||||
PluginSetting<T> GetSetting<T>(string name, T defaultValue = default(T));
|
PluginSetting<T> GetSetting<T>(string name, T defaultValue = default);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,10 +160,8 @@ namespace Artemis.Core.Services.Storage
|
|||||||
{
|
{
|
||||||
// Only instantiate engines for properties without an existing engine instance
|
// Only instantiate engines for properties without an existing engine instance
|
||||||
foreach (var layerProperty in profile.GetAllLayers().SelectMany(l => l.Properties).Where(p => p.KeyframeEngine == null))
|
foreach (var layerProperty in profile.GetAllLayers().SelectMany(l => l.Properties).Where(p => p.KeyframeEngine == null))
|
||||||
{
|
|
||||||
_layerService.InstantiateKeyframeEngine(layerProperty);
|
_layerService.InstantiateKeyframeEngine(layerProperty);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void ActiveProfilesPopulateLeds(ArtemisSurface surface)
|
private void ActiveProfilesPopulateLeds(ArtemisSurface surface)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="AppDomainToolkit" version="1.0.4.3" targetFramework="net461" />
|
<package id="AppDomainToolkit" version="1.0.4.3" targetFramework="net461" />
|
||||||
<package id="Ben.Demystifier" version="0.1.4" targetFramework="net472" />
|
<package id="Ben.Demystifier" version="0.1.4" targetFramework="net472" />
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ namespace Artemis.Plugins.LayerBrushes.Color
|
|||||||
{
|
{
|
||||||
public class ColorBrush : LayerBrush
|
public class ColorBrush : LayerBrush
|
||||||
{
|
{
|
||||||
private SKShader _shader;
|
|
||||||
private List<SKColor> _testColors;
|
|
||||||
private SKPaint _paint;
|
private SKPaint _paint;
|
||||||
|
private SKShader _shader;
|
||||||
|
private readonly List<SKColor> _testColors;
|
||||||
|
|
||||||
public ColorBrush(Layer layer, ColorBrushSettings settings, LayerBrushDescriptor descriptor) : base(layer, settings, descriptor)
|
public ColorBrush(Layer layer, ColorBrushSettings settings, LayerBrushDescriptor descriptor) : base(layer, settings, descriptor)
|
||||||
{
|
{
|
||||||
@@ -31,6 +31,8 @@ namespace Artemis.Plugins.LayerBrushes.Color
|
|||||||
Settings.PropertyChanged += (sender, args) => CreateShader();
|
Settings.PropertyChanged += (sender, args) => CreateShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public new ColorBrushSettings Settings { get; }
|
||||||
|
|
||||||
private void CreateShader()
|
private void CreateShader()
|
||||||
{
|
{
|
||||||
var center = new SKPoint(Layer.Rectangle.MidX, Layer.Rectangle.MidY);
|
var center = new SKPoint(Layer.Rectangle.MidX, Layer.Rectangle.MidY);
|
||||||
@@ -61,8 +63,6 @@ namespace Artemis.Plugins.LayerBrushes.Color
|
|||||||
oldPaint?.Dispose();
|
oldPaint?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public new ColorBrushSettings Settings { get; }
|
|
||||||
|
|
||||||
public override LayerBrushViewModel GetViewModel()
|
public override LayerBrushViewModel GetViewModel()
|
||||||
{
|
{
|
||||||
return new ColorBrushViewModel(this);
|
return new ColorBrushViewModel(this);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace Artemis.Plugins.LayerBrushes.Color
|
|||||||
ColorBrush = element;
|
ColorBrush = element;
|
||||||
}
|
}
|
||||||
|
|
||||||
public new ColorBrush ColorBrush { get; }
|
public ColorBrush ColorBrush { get; }
|
||||||
public IEnumerable<ValueDescription> BrushTypes => EnumUtilities.GetAllValuesAndDescriptions(typeof(GradientType));
|
public IEnumerable<ValueDescription> BrushTypes => EnumUtilities.GetAllValuesAndDescriptions(typeof(GradientType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MaterialDesignColors" version="1.2.0" targetFramework="net472" />
|
<package id="MaterialDesignColors" version="1.2.0" targetFramework="net472" />
|
||||||
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
|
using Artemis.Core.Plugins.LayerBrush;
|
||||||
using Artemis.Core.Plugins.LayerBrush;
|
|
||||||
using Artemis.Core.Plugins.Models;
|
using Artemis.Core.Plugins.Models;
|
||||||
|
|
||||||
namespace Artemis.Plugins.LayerBrushes.Noise
|
namespace Artemis.Plugins.LayerBrushes.Noise
|
||||||
|
|||||||
@@ -11,15 +11,6 @@ namespace Artemis.Plugins.LayerBrushes.Noise
|
|||||||
private float _xScale;
|
private float _xScale;
|
||||||
private float _yScale;
|
private float _yScale;
|
||||||
|
|
||||||
public NoiseBrushSettings()
|
|
||||||
{
|
|
||||||
// Color = new SKColor(0, 0, 0);
|
|
||||||
// BlendMode = SKBlendMode.Color;
|
|
||||||
// XScale = 0.5f;
|
|
||||||
// YScale = 0.5f;
|
|
||||||
// AnimationSpeed = 50f;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SKColor Color
|
public SKColor Color
|
||||||
{
|
{
|
||||||
get => _color;
|
get => _color;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
|
|||||||
@@ -15,20 +15,15 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
private const double NORM_3D = 1.0 / 103.0;
|
private const double NORM_3D = 1.0 / 103.0;
|
||||||
private const double NORM_4D = 1.0 / 30.0;
|
private const double NORM_4D = 1.0 / 30.0;
|
||||||
|
|
||||||
private byte[] perm;
|
private static readonly double[] gradients2D =
|
||||||
private byte[] perm2D;
|
|
||||||
private byte[] perm3D;
|
|
||||||
private byte[] perm4D;
|
|
||||||
|
|
||||||
private static double[] gradients2D = new double[]
|
|
||||||
{
|
{
|
||||||
5, 2, 2, 5,
|
5, 2, 2, 5,
|
||||||
-5, 2, -2, 5,
|
-5, 2, -2, 5,
|
||||||
5, -2, 2, -5,
|
5, -2, 2, -5,
|
||||||
-5, -2, -2, -5,
|
-5, -2, -2, -5
|
||||||
};
|
};
|
||||||
|
|
||||||
private static double[] gradients3D =
|
private static readonly double[] gradients3D =
|
||||||
{
|
{
|
||||||
-11, 4, 4, -4, 11, 4, -4, 4, 11,
|
-11, 4, 4, -4, 11, 4, -4, 4, 11,
|
||||||
11, 4, 4, 4, 11, 4, 4, 4, 11,
|
11, 4, 4, 4, 11, 4, 4, 4, 11,
|
||||||
@@ -37,10 +32,10 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
-11, 4, -4, -4, 11, -4, -4, 4, -11,
|
-11, 4, -4, -4, 11, -4, -4, 4, -11,
|
||||||
11, 4, -4, 4, 11, -4, 4, 4, -11,
|
11, 4, -4, 4, 11, -4, 4, 4, -11,
|
||||||
-11, -4, -4, -4, -11, -4, -4, -4, -11,
|
-11, -4, -4, -4, -11, -4, -4, -4, -11,
|
||||||
11, -4, -4, 4, -11, -4, 4, -4, -11,
|
11, -4, -4, 4, -11, -4, 4, -4, -11
|
||||||
};
|
};
|
||||||
|
|
||||||
private static double[] gradients4D =
|
private static readonly double[] gradients4D =
|
||||||
{
|
{
|
||||||
3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3,
|
3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3,
|
||||||
-3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3,
|
-3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3,
|
||||||
@@ -57,115 +52,181 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3,
|
3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3,
|
||||||
-3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3,
|
-3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3,
|
||||||
3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3,
|
3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3,
|
||||||
-3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3,
|
-3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3
|
||||||
};
|
};
|
||||||
|
|
||||||
private static Contribution2[] lookup2D;
|
private static readonly Contribution2[] lookup2D;
|
||||||
private static Contribution3[] lookup3D;
|
private static readonly Contribution3[] lookup3D;
|
||||||
private static Contribution4[] lookup4D;
|
private static readonly Contribution4[] lookup4D;
|
||||||
|
|
||||||
|
private readonly byte[] perm;
|
||||||
|
private readonly byte[] perm2D;
|
||||||
|
private readonly byte[] perm3D;
|
||||||
|
private readonly byte[] perm4D;
|
||||||
|
|
||||||
static OpenSimplexNoise()
|
static OpenSimplexNoise()
|
||||||
{
|
{
|
||||||
var base2D = new int[][]
|
var base2D = new[]
|
||||||
{
|
{
|
||||||
new int[] { 1, 1, 0, 1, 0, 1, 0, 0, 0 },
|
new[] {1, 1, 0, 1, 0, 1, 0, 0, 0},
|
||||||
new int[] { 1, 1, 0, 1, 0, 1, 2, 1, 1 }
|
new[] {1, 1, 0, 1, 0, 1, 2, 1, 1}
|
||||||
};
|
};
|
||||||
var p2D = new int[] { 0, 0, 1, -1, 0, 0, -1, 1, 0, 2, 1, 1, 1, 2, 2, 0, 1, 2, 0, 2, 1, 0, 0, 0 };
|
var p2D = new[] {0, 0, 1, -1, 0, 0, -1, 1, 0, 2, 1, 1, 1, 2, 2, 0, 1, 2, 0, 2, 1, 0, 0, 0};
|
||||||
var lookupPairs2D = new int[] { 0, 1, 1, 0, 4, 1, 17, 0, 20, 2, 21, 2, 22, 5, 23, 5, 26, 4, 39, 3, 42, 4, 43, 3 };
|
var lookupPairs2D = new[] {0, 1, 1, 0, 4, 1, 17, 0, 20, 2, 21, 2, 22, 5, 23, 5, 26, 4, 39, 3, 42, 4, 43, 3};
|
||||||
|
|
||||||
var contributions2D = new Contribution2[p2D.Length / 4];
|
var contributions2D = new Contribution2[p2D.Length / 4];
|
||||||
for (int i = 0; i < p2D.Length; i += 4)
|
for (var i = 0; i < p2D.Length; i += 4)
|
||||||
{
|
{
|
||||||
var baseSet = base2D[p2D[i]];
|
var baseSet = base2D[p2D[i]];
|
||||||
Contribution2 previous = null, current = null;
|
Contribution2 previous = null, current = null;
|
||||||
for (int k = 0; k < baseSet.Length; k += 3)
|
for (var k = 0; k < baseSet.Length; k += 3)
|
||||||
{
|
{
|
||||||
current = new Contribution2(baseSet[k], baseSet[k + 1], baseSet[k + 2]);
|
current = new Contribution2(baseSet[k], baseSet[k + 1], baseSet[k + 2]);
|
||||||
if (previous == null)
|
if (previous == null)
|
||||||
{
|
|
||||||
contributions2D[i / 4] = current;
|
contributions2D[i / 4] = current;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
previous.Next = current;
|
previous.Next = current;
|
||||||
}
|
|
||||||
previous = current;
|
previous = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
current.Next = new Contribution2(p2D[i + 1], p2D[i + 2], p2D[i + 3]);
|
current.Next = new Contribution2(p2D[i + 1], p2D[i + 2], p2D[i + 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
lookup2D = new Contribution2[64];
|
lookup2D = new Contribution2[64];
|
||||||
for (var i = 0; i < lookupPairs2D.Length; i += 2)
|
for (var i = 0; i < lookupPairs2D.Length; i += 2)
|
||||||
{
|
|
||||||
lookup2D[lookupPairs2D[i]] = contributions2D[lookupPairs2D[i + 1]];
|
lookup2D[lookupPairs2D[i]] = contributions2D[lookupPairs2D[i + 1]];
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var base3D = new int[][]
|
var base3D = new[]
|
||||||
{
|
{
|
||||||
new int[] { 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1 },
|
new[] {0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1},
|
||||||
new int[] { 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1, 3, 1, 1, 1 },
|
new[] {2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1, 3, 1, 1, 1},
|
||||||
new int[] { 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1 }
|
new[] {1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1}
|
||||||
|
};
|
||||||
|
var p3D = new[]
|
||||||
|
{
|
||||||
|
0, 0, 1, -1, 0, 0, 1, 0, -1, 0, 0, -1, 1, 0, 0, 0, 1, -1, 0, 0, -1, 0, 1, 0, 0, -1, 1, 0, 2, 1, 1, 0, 1, 1, 1, -1, 0, 2, 1, 0, 1, 1, 1, -1, 1, 0, 2, 0, 1, 1, 1, -1, 1, 1, 1, 3, 2, 1,
|
||||||
|
0, 3, 1, 2, 0, 1, 3, 2, 0, 1, 3, 1, 0, 2, 1, 3, 0, 2, 1, 3, 0, 1, 2, 1, 1, 1, 0, 0, 2, 2, 0, 0, 1, 1, 0, 1, 0, 2, 0, 2, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, -1, 1, 2, 0,
|
||||||
|
0, 0, 0, 1, -1, 1, 1, 2, 0, 0, 0, 0, 1, 1, 1, -1, 2, 3, 1, 1, 1, 2, 0, 0, 2, 2, 3, 1, 1, 1, 2, 2, 0, 0, 2, 3, 1, 1, 1, 2, 0, 2, 0, 2, 1, 1, -1, 1, 2, 0, 0, 2, 2, 1, 1, -1, 1, 2, 2, 0,
|
||||||
|
0, 2, 1, -1, 1, 1, 2, 0, 0, 2, 2, 1, -1, 1, 1, 2, 0, 2, 0, 2, 1, 1, 1, -1, 2, 2, 0, 0, 2, 1, 1, 1, -1, 2, 0, 2, 0
|
||||||
|
};
|
||||||
|
var lookupPairs3D = new[]
|
||||||
|
{
|
||||||
|
0, 2, 1, 1, 2, 2, 5, 1, 6, 0, 7, 0, 32, 2, 34, 2, 129, 1, 133, 1, 160, 5, 161, 5, 518, 0, 519, 0, 546, 4, 550, 4, 645, 3, 647, 3, 672, 5, 673, 5, 674, 4, 677, 3, 678, 4, 679, 3, 680,
|
||||||
|
13, 681, 13, 682, 12, 685, 14, 686, 12, 687, 14, 712, 20, 714, 18, 809, 21, 813, 23, 840, 20, 841, 21, 1198, 19, 1199, 22, 1226, 18, 1230, 19, 1325, 23, 1327, 22, 1352, 15, 1353, 17,
|
||||||
|
1354, 15, 1357, 17, 1358, 16, 1359, 16, 1360, 11, 1361, 10, 1362, 11, 1365, 10, 1366, 9, 1367, 9, 1392, 11, 1394, 11, 1489, 10, 1493, 10, 1520, 8, 1521, 8, 1878, 9, 1879, 9, 1906, 7,
|
||||||
|
1910, 7, 2005, 6, 2007, 6, 2032, 8, 2033, 8, 2034, 7, 2037, 6, 2038, 7, 2039, 6
|
||||||
};
|
};
|
||||||
var p3D = new int[] { 0, 0, 1, -1, 0, 0, 1, 0, -1, 0, 0, -1, 1, 0, 0, 0, 1, -1, 0, 0, -1, 0, 1, 0, 0, -1, 1, 0, 2, 1, 1, 0, 1, 1, 1, -1, 0, 2, 1, 0, 1, 1, 1, -1, 1, 0, 2, 0, 1, 1, 1, -1, 1, 1, 1, 3, 2, 1, 0, 3, 1, 2, 0, 1, 3, 2, 0, 1, 3, 1, 0, 2, 1, 3, 0, 2, 1, 3, 0, 1, 2, 1, 1, 1, 0, 0, 2, 2, 0, 0, 1, 1, 0, 1, 0, 2, 0, 2, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, -1, 1, 2, 0, 0, 0, 0, 1, -1, 1, 1, 2, 0, 0, 0, 0, 1, 1, 1, -1, 2, 3, 1, 1, 1, 2, 0, 0, 2, 2, 3, 1, 1, 1, 2, 2, 0, 0, 2, 3, 1, 1, 1, 2, 0, 2, 0, 2, 1, 1, -1, 1, 2, 0, 0, 2, 2, 1, 1, -1, 1, 2, 2, 0, 0, 2, 1, -1, 1, 1, 2, 0, 0, 2, 2, 1, -1, 1, 1, 2, 0, 2, 0, 2, 1, 1, 1, -1, 2, 2, 0, 0, 2, 1, 1, 1, -1, 2, 0, 2, 0 };
|
|
||||||
var lookupPairs3D = new int[] { 0, 2, 1, 1, 2, 2, 5, 1, 6, 0, 7, 0, 32, 2, 34, 2, 129, 1, 133, 1, 160, 5, 161, 5, 518, 0, 519, 0, 546, 4, 550, 4, 645, 3, 647, 3, 672, 5, 673, 5, 674, 4, 677, 3, 678, 4, 679, 3, 680, 13, 681, 13, 682, 12, 685, 14, 686, 12, 687, 14, 712, 20, 714, 18, 809, 21, 813, 23, 840, 20, 841, 21, 1198, 19, 1199, 22, 1226, 18, 1230, 19, 1325, 23, 1327, 22, 1352, 15, 1353, 17, 1354, 15, 1357, 17, 1358, 16, 1359, 16, 1360, 11, 1361, 10, 1362, 11, 1365, 10, 1366, 9, 1367, 9, 1392, 11, 1394, 11, 1489, 10, 1493, 10, 1520, 8, 1521, 8, 1878, 9, 1879, 9, 1906, 7, 1910, 7, 2005, 6, 2007, 6, 2032, 8, 2033, 8, 2034, 7, 2037, 6, 2038, 7, 2039, 6 };
|
|
||||||
|
|
||||||
var contributions3D = new Contribution3[p3D.Length / 9];
|
var contributions3D = new Contribution3[p3D.Length / 9];
|
||||||
for (int i = 0; i < p3D.Length; i += 9)
|
for (var i = 0; i < p3D.Length; i += 9)
|
||||||
{
|
{
|
||||||
var baseSet = base3D[p3D[i]];
|
var baseSet = base3D[p3D[i]];
|
||||||
Contribution3 previous = null, current = null;
|
Contribution3 previous = null, current = null;
|
||||||
for (int k = 0; k < baseSet.Length; k += 4)
|
for (var k = 0; k < baseSet.Length; k += 4)
|
||||||
{
|
{
|
||||||
current = new Contribution3(baseSet[k], baseSet[k + 1], baseSet[k + 2], baseSet[k + 3]);
|
current = new Contribution3(baseSet[k], baseSet[k + 1], baseSet[k + 2], baseSet[k + 3]);
|
||||||
if (previous == null)
|
if (previous == null)
|
||||||
{
|
|
||||||
contributions3D[i / 9] = current;
|
contributions3D[i / 9] = current;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
previous.Next = current;
|
previous.Next = current;
|
||||||
}
|
|
||||||
previous = current;
|
previous = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
current.Next = new Contribution3(p3D[i + 1], p3D[i + 2], p3D[i + 3], p3D[i + 4]);
|
current.Next = new Contribution3(p3D[i + 1], p3D[i + 2], p3D[i + 3], p3D[i + 4]);
|
||||||
current.Next.Next = new Contribution3(p3D[i + 5], p3D[i + 6], p3D[i + 7], p3D[i + 8]);
|
current.Next.Next = new Contribution3(p3D[i + 5], p3D[i + 6], p3D[i + 7], p3D[i + 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
lookup3D = new Contribution3[2048];
|
lookup3D = new Contribution3[2048];
|
||||||
for (var i = 0; i < lookupPairs3D.Length; i += 2)
|
for (var i = 0; i < lookupPairs3D.Length; i += 2)
|
||||||
{
|
|
||||||
lookup3D[lookupPairs3D[i]] = contributions3D[lookupPairs3D[i + 1]];
|
lookup3D[lookupPairs3D[i]] = contributions3D[lookupPairs3D[i + 1]];
|
||||||
}
|
|
||||||
|
|
||||||
var base4D = new int[][]
|
var base4D = new[]
|
||||||
{
|
{
|
||||||
new int[] { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1 },
|
new[] {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1},
|
||||||
new int[] { 3, 1, 1, 1, 0, 3, 1, 1, 0, 1, 3, 1, 0, 1, 1, 3, 0, 1, 1, 1, 4, 1, 1, 1, 1 },
|
new[] {3, 1, 1, 1, 0, 3, 1, 1, 0, 1, 3, 1, 0, 1, 1, 3, 0, 1, 1, 1, 4, 1, 1, 1, 1},
|
||||||
new int[] { 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 2, 1, 1, 0, 0, 2, 1, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 0, 0, 1, 1 },
|
new[] {1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 2, 1, 1, 0, 0, 2, 1, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 0, 0, 1, 1},
|
||||||
new int[] { 3, 1, 1, 1, 0, 3, 1, 1, 0, 1, 3, 1, 0, 1, 1, 3, 0, 1, 1, 1, 2, 1, 1, 0, 0, 2, 1, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 0, 0, 1, 1 }
|
new[] {3, 1, 1, 1, 0, 3, 1, 1, 0, 1, 3, 1, 0, 1, 1, 3, 0, 1, 1, 1, 2, 1, 1, 0, 0, 2, 1, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 0, 0, 1, 1}
|
||||||
|
};
|
||||||
|
var p4D = new[]
|
||||||
|
{
|
||||||
|
0, 0, 1, -1, 0, 0, 0, 1, 0, -1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, -1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 0, -1, 0, 0, 1, 0, 0, -1, 0,
|
||||||
|
1, 0, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 0, 2, 1, 0, 1, 0, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 0, 2, 0, 1, 1, 0, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 0, 2, 1, 0, 0,
|
||||||
|
1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 0, 2, 0, 1, 0, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 0, 2, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 1, 4, 2, 1, 1, 0, 4, 1, 2, 1, 0, 4, 1, 1, 2, 0,
|
||||||
|
1, 4, 2, 1, 0, 1, 4, 1, 2, 0, 1, 4, 1, 1, 0, 2, 1, 4, 2, 0, 1, 1, 4, 1, 0, 2, 1, 4, 1, 0, 1, 2, 1, 4, 0, 2, 1, 1, 4, 0, 1, 2, 1, 4, 0, 1, 1, 2, 1, 2, 1, 1, 0, 0, 3, 2, 1, 0, 0, 3, 1,
|
||||||
|
2, 0, 0, 1, 2, 1, 0, 1, 0, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 1, 2, 0, 1, 1, 0, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 1, 2, 1, 0, 0, 1, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 1, 2, 0, 1, 0, 1, 3, 0, 2, 0,
|
||||||
|
1, 3, 0, 1, 0, 2, 1, 2, 0, 0, 1, 1, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, 3, 1, 1, 1, 0, 2, 1, 1, 1, -1, 2, 2, 0, 0, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 2, 0, 0, 0, 2, 3, 1, 0, 1, 1, 2,
|
||||||
|
1, -1, 1, 1, 2, 2, 0, 0, 0, 2, 3, 1, 1, 1, 0, 2, 1, 1, 1, -1, 2, 0, 2, 0, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 0, 2, 0, 0, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 2, 0, 0, 2, 3, 1,
|
||||||
|
1, 1, 0, 2, 1, 1, 1, -1, 2, 0, 0, 2, 0, 2, 3, 1, 0, 1, 1, 2, 1, -1, 1, 1, 2, 0, 0, 2, 0, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 0, 2, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 0, 0, 0,
|
||||||
|
2, 2, 3, 1, 0, 1, 1, 2, 1, -1, 1, 1, 2, 0, 0, 0, 2, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 0, 0, 2, 2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 0, 0, 0, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1,
|
||||||
|
-1, 0, 0, 0, 0, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 0, 0, 0, 0, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 0, 0, 0, 0, 0, 2, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 0, 0, 0, 0, 0, 2, 1, -1, 0, 1,
|
||||||
|
1, 1, 0, -1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 2, 2, 0, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 2, 2, 0, 0, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 2, 2, 0, 0, 0,
|
||||||
|
2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 2, 0, 2, 0, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 2, 0, 2, 0, 0, 2, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 2, 0, 2, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1,
|
||||||
|
2, 0, 0, 2, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 2, 0, 0, 2, 0, 2, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 2, 0, 0, 2, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 2, 0, 0, 0, 2, 2, 1, -1, 1, 0, 1,
|
||||||
|
1, 0, 1, -1, 1, 2, 0, 0, 0, 2, 2, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 2, 0, 0, 0, 2, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, 1, 1, -1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, 1, 1, 1, -1, 3, 1,
|
||||||
|
0, 0, 1, 0, 2, 0, 0, 2, 0, 2, 1, 1, 1, -1, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, 1, -1, 1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, 1, 1, -1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, 1, 1,
|
||||||
|
-1, 1, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, -1, 1, 1, 3, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, 1, -1, 1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, 1, -1, 1, 1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0,
|
||||||
|
0, 2, -1, 1, 1, 1, 3, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, -1, 1, 1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, -1, 1, 1, 1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 4, 1, 1, 1, 1, 3, 3, 2, 0, 1, 0,
|
||||||
|
3, 1, 0, 2, 0, 4, 1, 1, 1, 1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 4, 1, 1, 1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 4, 1, 1, 1, 1, 3, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 4, 1, 1, 1, 1, 3, 3, 0,
|
||||||
|
0, 2, 1, 3, 0, 0, 1, 2, 4, 1, 1, 1, 1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 2, 1, 1, 1, -1, 3, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 2, 1, 1, 1, -1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 2, 1, 1, 1,
|
||||||
|
-1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 2, 1, 1, -1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 2, 1, 1, -1, 1, 3, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 2, 1, 1, -1, 1, 3, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0,
|
||||||
|
2, 1, -1, 1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 2, 1, -1, 1, 1, 3, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, 1, -1, 1, 1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 2, -1, 1, 1, 1, 3, 3, 0, 2, 0, 1, 3,
|
||||||
|
0, 1, 0, 2, 2, -1, 1, 1, 1, 3, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, -1, 1, 1, 1
|
||||||
|
};
|
||||||
|
var lookupPairs4D = new[]
|
||||||
|
{
|
||||||
|
0, 3, 1, 2, 2, 3, 5, 2, 6, 1, 7, 1, 8, 3, 9, 2, 10, 3, 13, 2, 16, 3, 18, 3, 22, 1, 23, 1, 24, 3, 26, 3, 33, 2, 37, 2, 38, 1, 39, 1, 41, 2, 45, 2, 54, 1, 55, 1, 56, 0, 57, 0, 58, 0, 59,
|
||||||
|
0, 60, 0, 61, 0, 62, 0, 63, 0, 256, 3, 258, 3, 264, 3, 266, 3, 272, 3, 274, 3, 280, 3, 282, 3, 2049, 2, 2053, 2, 2057, 2, 2061, 2, 2081, 2, 2085, 2, 2089, 2, 2093, 2, 2304, 9, 2305, 9,
|
||||||
|
2312, 9, 2313, 9, 16390, 1, 16391, 1, 16406, 1, 16407, 1, 16422, 1, 16423, 1, 16438, 1, 16439, 1, 16642, 8, 16646, 8, 16658, 8, 16662, 8, 18437, 6, 18439, 6, 18469, 6, 18471, 6, 18688,
|
||||||
|
9, 18689, 9, 18690, 8, 18693, 6, 18694, 8, 18695, 6, 18696, 9, 18697, 9, 18706, 8, 18710, 8, 18725, 6, 18727, 6, 131128, 0, 131129, 0, 131130, 0, 131131, 0, 131132, 0, 131133, 0,
|
||||||
|
131134, 0, 131135, 0, 131352, 7, 131354, 7, 131384, 7, 131386, 7, 133161, 5, 133165, 5, 133177, 5, 133181, 5, 133376, 9, 133377, 9, 133384, 9, 133385, 9, 133400, 7, 133402, 7, 133417,
|
||||||
|
5, 133421, 5, 133432, 7, 133433, 5, 133434, 7, 133437, 5, 147510, 4, 147511, 4, 147518, 4, 147519, 4, 147714, 8, 147718, 8, 147730, 8, 147734, 8, 147736, 7, 147738, 7, 147766, 4,
|
||||||
|
147767, 4, 147768, 7, 147770, 7, 147774, 4, 147775, 4, 149509, 6, 149511, 6, 149541, 6, 149543, 6, 149545, 5, 149549, 5, 149558, 4, 149559, 4, 149561, 5, 149565, 5, 149566, 4, 149567,
|
||||||
|
4, 149760, 9, 149761, 9, 149762, 8, 149765, 6, 149766, 8, 149767, 6, 149768, 9, 149769, 9, 149778, 8, 149782, 8, 149784, 7, 149786, 7, 149797, 6, 149799, 6, 149801, 5, 149805, 5,
|
||||||
|
149814, 4, 149815, 4, 149816, 7, 149817, 5, 149818, 7, 149821, 5, 149822, 4, 149823, 4, 149824, 37, 149825, 37, 149826, 36, 149829, 34, 149830, 36, 149831, 34, 149832, 37, 149833, 37,
|
||||||
|
149842, 36, 149846, 36, 149848, 35, 149850, 35, 149861, 34, 149863, 34, 149865, 33, 149869, 33, 149878, 32, 149879, 32, 149880, 35, 149881, 33, 149882, 35, 149885, 33, 149886, 32,
|
||||||
|
149887, 32, 150080, 49, 150082, 48, 150088, 49, 150098, 48, 150104, 47, 150106, 47, 151873, 46, 151877, 45, 151881, 46, 151909, 45, 151913, 44, 151917, 44, 152128, 49, 152129, 46,
|
||||||
|
152136, 49, 152137, 46, 166214, 43, 166215, 42, 166230, 43, 166247, 42, 166262, 41, 166263, 41, 166466, 48, 166470, 43, 166482, 48, 166486, 43, 168261, 45, 168263, 42, 168293, 45,
|
||||||
|
168295, 42, 168512, 31, 168513, 28, 168514, 31, 168517, 28, 168518, 25, 168519, 25, 280952, 40, 280953, 39, 280954, 40, 280957, 39, 280958, 38, 280959, 38, 281176, 47, 281178, 47,
|
||||||
|
281208, 40, 281210, 40, 282985, 44, 282989, 44, 283001, 39, 283005, 39, 283208, 30, 283209, 27, 283224, 30, 283241, 27, 283256, 22, 283257, 22, 297334, 41, 297335, 41, 297342, 38,
|
||||||
|
297343, 38, 297554, 29, 297558, 24, 297562, 29, 297590, 24, 297594, 21, 297598, 21, 299365, 26, 299367, 23, 299373, 26, 299383, 23, 299389, 20, 299391, 20, 299584, 31, 299585, 28,
|
||||||
|
299586, 31, 299589, 28, 299590, 25, 299591, 25, 299592, 30, 299593, 27, 299602, 29, 299606, 24, 299608, 30, 299610, 29, 299621, 26, 299623, 23, 299625, 27, 299629, 26, 299638, 24,
|
||||||
|
299639, 23, 299640, 22, 299641, 22, 299642, 21, 299645, 20, 299646, 21, 299647, 20, 299648, 61, 299649, 60, 299650, 61, 299653, 60, 299654, 59, 299655, 59, 299656, 58, 299657, 57,
|
||||||
|
299666, 55, 299670, 54, 299672, 58, 299674, 55, 299685, 52, 299687, 51, 299689, 57, 299693, 52, 299702, 54, 299703, 51, 299704, 56, 299705, 56, 299706, 53, 299709, 50, 299710, 53,
|
||||||
|
299711, 50, 299904, 61, 299906, 61, 299912, 58, 299922, 55, 299928, 58, 299930, 55, 301697, 60, 301701, 60, 301705, 57, 301733, 52, 301737, 57, 301741, 52, 301952, 79, 301953, 79,
|
||||||
|
301960, 76, 301961, 76, 316038, 59, 316039, 59, 316054, 54, 316071, 51, 316086, 54, 316087, 51, 316290, 78, 316294, 78, 316306, 73, 316310, 73, 318085, 77, 318087, 77, 318117, 70,
|
||||||
|
318119, 70, 318336, 79, 318337, 79, 318338, 78, 318341, 77, 318342, 78, 318343, 77, 430776, 56, 430777, 56, 430778, 53, 430781, 50, 430782, 53, 430783, 50, 431000, 75, 431002, 72,
|
||||||
|
431032, 75, 431034, 72, 432809, 74, 432813, 69, 432825, 74, 432829, 69, 433032, 76, 433033, 76, 433048, 75, 433065, 74, 433080, 75, 433081, 74, 447158, 71, 447159, 68, 447166, 71,
|
||||||
|
447167, 68, 447378, 73, 447382, 73, 447386, 72, 447414, 71, 447418, 72, 447422, 71, 449189, 70, 449191, 70, 449197, 69, 449207, 68, 449213, 69, 449215, 68, 449408, 67, 449409, 67,
|
||||||
|
449410, 66, 449413, 64, 449414, 66, 449415, 64, 449416, 67, 449417, 67, 449426, 66, 449430, 66, 449432, 65, 449434, 65, 449445, 64, 449447, 64, 449449, 63, 449453, 63, 449462, 62,
|
||||||
|
449463, 62, 449464, 65, 449465, 63, 449466, 65, 449469, 63, 449470, 62, 449471, 62, 449472, 19, 449473, 19, 449474, 18, 449477, 16, 449478, 18, 449479, 16, 449480, 19, 449481, 19,
|
||||||
|
449490, 18, 449494, 18, 449496, 17, 449498, 17, 449509, 16, 449511, 16, 449513, 15, 449517, 15, 449526, 14, 449527, 14, 449528, 17, 449529, 15, 449530, 17, 449533, 15, 449534, 14,
|
||||||
|
449535, 14, 449728, 19, 449729, 19, 449730, 18, 449734, 18, 449736, 19, 449737, 19, 449746, 18, 449750, 18, 449752, 17, 449754, 17, 449784, 17, 449786, 17, 451520, 19, 451521, 19,
|
||||||
|
451525, 16, 451527, 16, 451528, 19, 451529, 19, 451557, 16, 451559, 16, 451561, 15, 451565, 15, 451577, 15, 451581, 15, 451776, 19, 451777, 19, 451784, 19, 451785, 19, 465858, 18,
|
||||||
|
465861, 16, 465862, 18, 465863, 16, 465874, 18, 465878, 18, 465893, 16, 465895, 16, 465910, 14, 465911, 14, 465918, 14, 465919, 14, 466114, 18, 466118, 18, 466130, 18, 466134, 18,
|
||||||
|
467909, 16, 467911, 16, 467941, 16, 467943, 16, 468160, 13, 468161, 13, 468162, 13, 468163, 13, 468164, 13, 468165, 13, 468166, 13, 468167, 13, 580568, 17, 580570, 17, 580585, 15,
|
||||||
|
580589, 15, 580598, 14, 580599, 14, 580600, 17, 580601, 15, 580602, 17, 580605, 15, 580606, 14, 580607, 14, 580824, 17, 580826, 17, 580856, 17, 580858, 17, 582633, 15, 582637, 15,
|
||||||
|
582649, 15, 582653, 15, 582856, 12, 582857, 12, 582872, 12, 582873, 12, 582888, 12, 582889, 12, 582904, 12, 582905, 12, 596982, 14, 596983, 14, 596990, 14, 596991, 14, 597202, 11,
|
||||||
|
597206, 11, 597210, 11, 597214, 11, 597234, 11, 597238, 11, 597242, 11, 597246, 11, 599013, 10, 599015, 10, 599021, 10, 599023, 10, 599029, 10, 599031, 10, 599037, 10, 599039, 10,
|
||||||
|
599232, 13, 599233, 13, 599234, 13, 599235, 13, 599236, 13, 599237, 13, 599238, 13, 599239, 13, 599240, 12, 599241, 12, 599250, 11, 599254, 11, 599256, 12, 599257, 12, 599258, 11,
|
||||||
|
599262, 11, 599269, 10, 599271, 10, 599272, 12, 599273, 12, 599277, 10, 599279, 10, 599282, 11, 599285, 10, 599286, 11, 599287, 10, 599288, 12, 599289, 12, 599290, 11, 599293, 10,
|
||||||
|
599294, 11, 599295, 10
|
||||||
};
|
};
|
||||||
var p4D = new int[] { 0, 0, 1, -1, 0, 0, 0, 1, 0, -1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, -1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 0, -1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 2, 1, 1, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 0, 2, 1, 0, 1, 0, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 0, 2, 0, 1, 1, 0, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 0, 2, 1, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 0, 2, 0, 1, 0, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 0, 2, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 1, 4, 2, 1, 1, 0, 4, 1, 2, 1, 0, 4, 1, 1, 2, 0, 1, 4, 2, 1, 0, 1, 4, 1, 2, 0, 1, 4, 1, 1, 0, 2, 1, 4, 2, 0, 1, 1, 4, 1, 0, 2, 1, 4, 1, 0, 1, 2, 1, 4, 0, 2, 1, 1, 4, 0, 1, 2, 1, 4, 0, 1, 1, 2, 1, 2, 1, 1, 0, 0, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 1, 2, 1, 0, 1, 0, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 1, 2, 0, 1, 1, 0, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 1, 2, 1, 0, 0, 1, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 1, 2, 0, 1, 0, 1, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 1, 2, 0, 0, 1, 1, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, 3, 1, 1, 1, 0, 2, 1, 1, 1, -1, 2, 2, 0, 0, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 2, 0, 0, 0, 2, 3, 1, 0, 1, 1, 2, 1, -1, 1, 1, 2, 2, 0, 0, 0, 2, 3, 1, 1, 1, 0, 2, 1, 1, 1, -1, 2, 0, 2, 0, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 0, 2, 0, 0, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 2, 0, 0, 2, 3, 1, 1, 1, 0, 2, 1, 1, 1, -1, 2, 0, 0, 2, 0, 2, 3, 1, 0, 1, 1, 2, 1, -1, 1, 1, 2, 0, 0, 2, 0, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 0, 2, 0, 2, 3, 1, 1, 0, 1, 2, 1, 1, -1, 1, 2, 0, 0, 0, 2, 2, 3, 1, 0, 1, 1, 2, 1, -1, 1, 1, 2, 0, 0, 0, 2, 2, 3, 0, 1, 1, 1, 2, -1, 1, 1, 1, 2, 0, 0, 0, 2, 2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 0, 0, 0, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 0, 0, 0, 0, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 0, 0, 0, 0, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 0, 0, 0, 0, 0, 2, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 0, 0, 0, 0, 0, 2, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 2, 2, 0, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 2, 2, 0, 0, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 2, 2, 0, 0, 0, 2, 1, 1, 1, -1, 0, 1, 1, 1, 0, -1, 2, 0, 2, 0, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 2, 0, 2, 0, 0, 2, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 2, 0, 2, 0, 0, 2, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 2, 0, 0, 2, 0, 2, 1, -1, 1, 1, 0, 1, 0, 1, 1, -1, 2, 0, 0, 2, 0, 2, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 2, 0, 0, 2, 0, 2, 1, 1, -1, 0, 1, 1, 1, 0, -1, 1, 2, 0, 0, 0, 2, 2, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 2, 0, 0, 0, 2, 2, 1, -1, 0, 1, 1, 1, 0, -1, 1, 1, 2, 0, 0, 0, 2, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, 1, 1, -1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, 1, 1, 1, -1, 3, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, 1, 1, 1, -1, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, 1, -1, 1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, 1, 1, -1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, 1, 1, -1, 1, 3, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 1, -1, 1, 1, 3, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, 1, -1, 1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, 1, -1, 1, 1, 3, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, -1, 1, 1, 1, 3, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 2, -1, 1, 1, 1, 3, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 2, -1, 1, 1, 1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 4, 1, 1, 1, 1, 3, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 4, 1, 1, 1, 1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 4, 1, 1, 1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 4, 1, 1, 1, 1, 3, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 4, 1, 1, 1, 1, 3, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 4, 1, 1, 1, 1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 2, 1, 1, 1, -1, 3, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 2, 1, 1, 1, -1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 2, 1, 1, 1, -1, 3, 3, 2, 1, 0, 0, 3, 1, 2, 0, 0, 2, 1, 1, -1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 2, 1, 1, -1, 1, 3, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 2, 1, 1, -1, 1, 3, 3, 2, 0, 1, 0, 3, 1, 0, 2, 0, 2, 1, -1, 1, 1, 3, 3, 2, 0, 0, 1, 3, 1, 0, 0, 2, 2, 1, -1, 1, 1, 3, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, 1, -1, 1, 1, 3, 3, 0, 2, 1, 0, 3, 0, 1, 2, 0, 2, -1, 1, 1, 1, 3, 3, 0, 2, 0, 1, 3, 0, 1, 0, 2, 2, -1, 1, 1, 1, 3, 3, 0, 0, 2, 1, 3, 0, 0, 1, 2, 2, -1, 1, 1, 1 };
|
|
||||||
var lookupPairs4D = new int[] { 0, 3, 1, 2, 2, 3, 5, 2, 6, 1, 7, 1, 8, 3, 9, 2, 10, 3, 13, 2, 16, 3, 18, 3, 22, 1, 23, 1, 24, 3, 26, 3, 33, 2, 37, 2, 38, 1, 39, 1, 41, 2, 45, 2, 54, 1, 55, 1, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 62, 0, 63, 0, 256, 3, 258, 3, 264, 3, 266, 3, 272, 3, 274, 3, 280, 3, 282, 3, 2049, 2, 2053, 2, 2057, 2, 2061, 2, 2081, 2, 2085, 2, 2089, 2, 2093, 2, 2304, 9, 2305, 9, 2312, 9, 2313, 9, 16390, 1, 16391, 1, 16406, 1, 16407, 1, 16422, 1, 16423, 1, 16438, 1, 16439, 1, 16642, 8, 16646, 8, 16658, 8, 16662, 8, 18437, 6, 18439, 6, 18469, 6, 18471, 6, 18688, 9, 18689, 9, 18690, 8, 18693, 6, 18694, 8, 18695, 6, 18696, 9, 18697, 9, 18706, 8, 18710, 8, 18725, 6, 18727, 6, 131128, 0, 131129, 0, 131130, 0, 131131, 0, 131132, 0, 131133, 0, 131134, 0, 131135, 0, 131352, 7, 131354, 7, 131384, 7, 131386, 7, 133161, 5, 133165, 5, 133177, 5, 133181, 5, 133376, 9, 133377, 9, 133384, 9, 133385, 9, 133400, 7, 133402, 7, 133417, 5, 133421, 5, 133432, 7, 133433, 5, 133434, 7, 133437, 5, 147510, 4, 147511, 4, 147518, 4, 147519, 4, 147714, 8, 147718, 8, 147730, 8, 147734, 8, 147736, 7, 147738, 7, 147766, 4, 147767, 4, 147768, 7, 147770, 7, 147774, 4, 147775, 4, 149509, 6, 149511, 6, 149541, 6, 149543, 6, 149545, 5, 149549, 5, 149558, 4, 149559, 4, 149561, 5, 149565, 5, 149566, 4, 149567, 4, 149760, 9, 149761, 9, 149762, 8, 149765, 6, 149766, 8, 149767, 6, 149768, 9, 149769, 9, 149778, 8, 149782, 8, 149784, 7, 149786, 7, 149797, 6, 149799, 6, 149801, 5, 149805, 5, 149814, 4, 149815, 4, 149816, 7, 149817, 5, 149818, 7, 149821, 5, 149822, 4, 149823, 4, 149824, 37, 149825, 37, 149826, 36, 149829, 34, 149830, 36, 149831, 34, 149832, 37, 149833, 37, 149842, 36, 149846, 36, 149848, 35, 149850, 35, 149861, 34, 149863, 34, 149865, 33, 149869, 33, 149878, 32, 149879, 32, 149880, 35, 149881, 33, 149882, 35, 149885, 33, 149886, 32, 149887, 32, 150080, 49, 150082, 48, 150088, 49, 150098, 48, 150104, 47, 150106, 47, 151873, 46, 151877, 45, 151881, 46, 151909, 45, 151913, 44, 151917, 44, 152128, 49, 152129, 46, 152136, 49, 152137, 46, 166214, 43, 166215, 42, 166230, 43, 166247, 42, 166262, 41, 166263, 41, 166466, 48, 166470, 43, 166482, 48, 166486, 43, 168261, 45, 168263, 42, 168293, 45, 168295, 42, 168512, 31, 168513, 28, 168514, 31, 168517, 28, 168518, 25, 168519, 25, 280952, 40, 280953, 39, 280954, 40, 280957, 39, 280958, 38, 280959, 38, 281176, 47, 281178, 47, 281208, 40, 281210, 40, 282985, 44, 282989, 44, 283001, 39, 283005, 39, 283208, 30, 283209, 27, 283224, 30, 283241, 27, 283256, 22, 283257, 22, 297334, 41, 297335, 41, 297342, 38, 297343, 38, 297554, 29, 297558, 24, 297562, 29, 297590, 24, 297594, 21, 297598, 21, 299365, 26, 299367, 23, 299373, 26, 299383, 23, 299389, 20, 299391, 20, 299584, 31, 299585, 28, 299586, 31, 299589, 28, 299590, 25, 299591, 25, 299592, 30, 299593, 27, 299602, 29, 299606, 24, 299608, 30, 299610, 29, 299621, 26, 299623, 23, 299625, 27, 299629, 26, 299638, 24, 299639, 23, 299640, 22, 299641, 22, 299642, 21, 299645, 20, 299646, 21, 299647, 20, 299648, 61, 299649, 60, 299650, 61, 299653, 60, 299654, 59, 299655, 59, 299656, 58, 299657, 57, 299666, 55, 299670, 54, 299672, 58, 299674, 55, 299685, 52, 299687, 51, 299689, 57, 299693, 52, 299702, 54, 299703, 51, 299704, 56, 299705, 56, 299706, 53, 299709, 50, 299710, 53, 299711, 50, 299904, 61, 299906, 61, 299912, 58, 299922, 55, 299928, 58, 299930, 55, 301697, 60, 301701, 60, 301705, 57, 301733, 52, 301737, 57, 301741, 52, 301952, 79, 301953, 79, 301960, 76, 301961, 76, 316038, 59, 316039, 59, 316054, 54, 316071, 51, 316086, 54, 316087, 51, 316290, 78, 316294, 78, 316306, 73, 316310, 73, 318085, 77, 318087, 77, 318117, 70, 318119, 70, 318336, 79, 318337, 79, 318338, 78, 318341, 77, 318342, 78, 318343, 77, 430776, 56, 430777, 56, 430778, 53, 430781, 50, 430782, 53, 430783, 50, 431000, 75, 431002, 72, 431032, 75, 431034, 72, 432809, 74, 432813, 69, 432825, 74, 432829, 69, 433032, 76, 433033, 76, 433048, 75, 433065, 74, 433080, 75, 433081, 74, 447158, 71, 447159, 68, 447166, 71, 447167, 68, 447378, 73, 447382, 73, 447386, 72, 447414, 71, 447418, 72, 447422, 71, 449189, 70, 449191, 70, 449197, 69, 449207, 68, 449213, 69, 449215, 68, 449408, 67, 449409, 67, 449410, 66, 449413, 64, 449414, 66, 449415, 64, 449416, 67, 449417, 67, 449426, 66, 449430, 66, 449432, 65, 449434, 65, 449445, 64, 449447, 64, 449449, 63, 449453, 63, 449462, 62, 449463, 62, 449464, 65, 449465, 63, 449466, 65, 449469, 63, 449470, 62, 449471, 62, 449472, 19, 449473, 19, 449474, 18, 449477, 16, 449478, 18, 449479, 16, 449480, 19, 449481, 19, 449490, 18, 449494, 18, 449496, 17, 449498, 17, 449509, 16, 449511, 16, 449513, 15, 449517, 15, 449526, 14, 449527, 14, 449528, 17, 449529, 15, 449530, 17, 449533, 15, 449534, 14, 449535, 14, 449728, 19, 449729, 19, 449730, 18, 449734, 18, 449736, 19, 449737, 19, 449746, 18, 449750, 18, 449752, 17, 449754, 17, 449784, 17, 449786, 17, 451520, 19, 451521, 19, 451525, 16, 451527, 16, 451528, 19, 451529, 19, 451557, 16, 451559, 16,Line truncated
|
|
||||||
var contributions4D = new Contribution4[p4D.Length / 16];
|
var contributions4D = new Contribution4[p4D.Length / 16];
|
||||||
for (int i = 0; i < p4D.Length; i += 16)
|
for (var i = 0; i < p4D.Length; i += 16)
|
||||||
{
|
{
|
||||||
var baseSet = base4D[p4D[i]];
|
var baseSet = base4D[p4D[i]];
|
||||||
Contribution4 previous = null, current = null;
|
Contribution4 previous = null, current = null;
|
||||||
for (int k = 0; k < baseSet.Length; k += 5)
|
for (var k = 0; k < baseSet.Length; k += 5)
|
||||||
{
|
{
|
||||||
current = new Contribution4(baseSet[k], baseSet[k + 1], baseSet[k + 2], baseSet[k + 3], baseSet[k + 4]);
|
current = new Contribution4(baseSet[k], baseSet[k + 1], baseSet[k + 2], baseSet[k + 3], baseSet[k + 4]);
|
||||||
if (previous == null)
|
if (previous == null)
|
||||||
{
|
|
||||||
contributions4D[i / 16] = current;
|
contributions4D[i / 16] = current;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
previous.Next = current;
|
previous.Next = current;
|
||||||
}
|
|
||||||
previous = current;
|
previous = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
current.Next = new Contribution4(p4D[i + 1], p4D[i + 2], p4D[i + 3], p4D[i + 4], p4D[i + 5]);
|
current.Next = new Contribution4(p4D[i + 1], p4D[i + 2], p4D[i + 3], p4D[i + 4], p4D[i + 5]);
|
||||||
current.Next.Next = new Contribution4(p4D[i + 6], p4D[i + 7], p4D[i + 8], p4D[i + 9], p4D[i + 10]);
|
current.Next.Next = new Contribution4(p4D[i + 6], p4D[i + 7], p4D[i + 8], p4D[i + 9], p4D[i + 10]);
|
||||||
current.Next.Next.Next = new Contribution4(p4D[i + 11], p4D[i + 12], p4D[i + 13], p4D[i + 14], p4D[i + 15]);
|
current.Next.Next.Next = new Contribution4(p4D[i + 11], p4D[i + 12], p4D[i + 13], p4D[i + 14], p4D[i + 15]);
|
||||||
@@ -173,17 +234,8 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
|
|
||||||
lookup4D = new Contribution4[1048576];
|
lookup4D = new Contribution4[1048576];
|
||||||
for (var i = 0; i < lookupPairs4D.Length; i += 2)
|
for (var i = 0; i < lookupPairs4D.Length; i += 2)
|
||||||
{
|
|
||||||
lookup4D[lookupPairs4D[i]] = contributions4D[lookupPairs4D[i + 1]];
|
lookup4D[lookupPairs4D[i]] = contributions4D[lookupPairs4D[i + 1]];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
private static int FastFloor(double x)
|
|
||||||
{
|
|
||||||
var xi = (int)x;
|
|
||||||
return x < xi ? xi - 1 : xi;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpenSimplexNoise()
|
public OpenSimplexNoise()
|
||||||
: this(DateTime.Now.Ticks)
|
: this(DateTime.Now.Ticks)
|
||||||
@@ -197,29 +249,32 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
perm3D = new byte[256];
|
perm3D = new byte[256];
|
||||||
perm4D = new byte[256];
|
perm4D = new byte[256];
|
||||||
var source = new byte[256];
|
var source = new byte[256];
|
||||||
for (int i = 0; i < 256; i++)
|
for (var i = 0; i < 256; i++)
|
||||||
{
|
source[i] = (byte) i;
|
||||||
source[i] = (byte)i;
|
|
||||||
}
|
|
||||||
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
||||||
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
||||||
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
||||||
for (int i = 255; i >= 0; i--)
|
for (var i = 255; i >= 0; i--)
|
||||||
{
|
{
|
||||||
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
||||||
int r = (int)((seed + 31) % (i + 1));
|
var r = (int) ((seed + 31) % (i + 1));
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
{
|
r += i + 1;
|
||||||
r += (i + 1);
|
|
||||||
}
|
|
||||||
perm[i] = source[r];
|
perm[i] = source[r];
|
||||||
perm2D[i] = (byte)(perm[i] & 0x0E);
|
perm2D[i] = (byte) (perm[i] & 0x0E);
|
||||||
perm3D[i] = (byte)((perm[i] % 24) * 3);
|
perm3D[i] = (byte) (perm[i] % 24 * 3);
|
||||||
perm4D[i] = (byte)(perm[i] & 0xFC);
|
perm4D[i] = (byte) (perm[i] & 0xFC);
|
||||||
source[r] = source[i];
|
source[r] = source[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
private static int FastFloor(double x)
|
||||||
|
{
|
||||||
|
var xi = (int) x;
|
||||||
|
return x < xi ? xi - 1 : xi;
|
||||||
|
}
|
||||||
|
|
||||||
public double Evaluate(double x, double y)
|
public double Evaluate(double x, double y)
|
||||||
{
|
{
|
||||||
var stretchOffset = (x + y) * STRETCH_2D;
|
var stretchOffset = (x + y) * STRETCH_2D;
|
||||||
@@ -239,10 +294,10 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
var inSum = xins + yins;
|
var inSum = xins + yins;
|
||||||
|
|
||||||
var hash =
|
var hash =
|
||||||
(int)(xins - yins + 1) |
|
(int) (xins - yins + 1) |
|
||||||
(int)(inSum) << 1 |
|
((int) inSum << 1) |
|
||||||
(int)(inSum + yins) << 2 |
|
((int) (inSum + yins) << 2) |
|
||||||
(int)(inSum + xins) << 4;
|
((int) (inSum + xins) << 4);
|
||||||
|
|
||||||
var c = lookup2D[hash];
|
var c = lookup2D[hash];
|
||||||
|
|
||||||
@@ -263,8 +318,10 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
attn *= attn;
|
attn *= attn;
|
||||||
value += attn * attn * valuePart;
|
value += attn * attn * valuePart;
|
||||||
}
|
}
|
||||||
|
|
||||||
c = c.Next;
|
c = c.Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value * NORM_2D;
|
return value * NORM_2D;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,13 +349,13 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
var inSum = xins + yins + zins;
|
var inSum = xins + yins + zins;
|
||||||
|
|
||||||
var hash =
|
var hash =
|
||||||
(int)(yins - zins + 1) |
|
(int) (yins - zins + 1) |
|
||||||
(int)(xins - yins + 1) << 1 |
|
((int) (xins - yins + 1) << 1) |
|
||||||
(int)(xins - zins + 1) << 2 |
|
((int) (xins - zins + 1) << 2) |
|
||||||
(int)inSum << 3 |
|
((int) inSum << 3) |
|
||||||
(int)(inSum + zins) << 5 |
|
((int) (inSum + zins) << 5) |
|
||||||
(int)(inSum + yins) << 7 |
|
((int) (inSum + yins) << 7) |
|
||||||
(int)(inSum + xins) << 9;
|
((int) (inSum + xins) << 9);
|
||||||
|
|
||||||
var c = lookup3D[hash];
|
var c = lookup3D[hash];
|
||||||
|
|
||||||
@@ -324,6 +381,7 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
|
|
||||||
c = c.Next;
|
c = c.Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value * NORM_3D;
|
return value * NORM_3D;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,17 +412,17 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
var inSum = xins + yins + zins + wins;
|
var inSum = xins + yins + zins + wins;
|
||||||
|
|
||||||
var hash =
|
var hash =
|
||||||
(int)(zins - wins + 1) |
|
(int) (zins - wins + 1) |
|
||||||
(int)(yins - zins + 1) << 1 |
|
((int) (yins - zins + 1) << 1) |
|
||||||
(int)(yins - wins + 1) << 2 |
|
((int) (yins - wins + 1) << 2) |
|
||||||
(int)(xins - yins + 1) << 3 |
|
((int) (xins - yins + 1) << 3) |
|
||||||
(int)(xins - zins + 1) << 4 |
|
((int) (xins - zins + 1) << 4) |
|
||||||
(int)(xins - wins + 1) << 5 |
|
((int) (xins - wins + 1) << 5) |
|
||||||
(int)inSum << 6 |
|
((int) inSum << 6) |
|
||||||
(int)(inSum + wins) << 8 |
|
((int) (inSum + wins) << 8) |
|
||||||
(int)(inSum + zins) << 11 |
|
((int) (inSum + zins) << 11) |
|
||||||
(int)(inSum + yins) << 14 |
|
((int) (inSum + yins) << 14) |
|
||||||
(int)(inSum + xins) << 17;
|
((int) (inSum + xins) << 17);
|
||||||
|
|
||||||
var c = lookup4D[hash];
|
var c = lookup4D[hash];
|
||||||
|
|
||||||
@@ -392,14 +450,17 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
|
|
||||||
c = c.Next;
|
c = c.Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value * NORM_4D;
|
return value * NORM_4D;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Contribution2
|
private class Contribution2
|
||||||
{
|
{
|
||||||
public double dx, dy;
|
public readonly double dx;
|
||||||
public int xsb, ysb;
|
public readonly double dy;
|
||||||
public Contribution2 Next;
|
public Contribution2 Next;
|
||||||
|
public readonly int xsb;
|
||||||
|
public readonly int ysb;
|
||||||
|
|
||||||
public Contribution2(double multiplier, int xsb, int ysb)
|
public Contribution2(double multiplier, int xsb, int ysb)
|
||||||
{
|
{
|
||||||
@@ -412,9 +473,13 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
|
|
||||||
private class Contribution3
|
private class Contribution3
|
||||||
{
|
{
|
||||||
public double dx, dy, dz;
|
public readonly double dx;
|
||||||
public int xsb, ysb, zsb;
|
public readonly double dy;
|
||||||
|
public readonly double dz;
|
||||||
public Contribution3 Next;
|
public Contribution3 Next;
|
||||||
|
public readonly int xsb;
|
||||||
|
public readonly int ysb;
|
||||||
|
public readonly int zsb;
|
||||||
|
|
||||||
public Contribution3(double multiplier, int xsb, int ysb, int zsb)
|
public Contribution3(double multiplier, int xsb, int ysb, int zsb)
|
||||||
{
|
{
|
||||||
@@ -429,9 +494,15 @@ namespace Artemis.Plugins.LayerBrushes.Noise.Utilities
|
|||||||
|
|
||||||
private class Contribution4
|
private class Contribution4
|
||||||
{
|
{
|
||||||
public double dx, dy, dz, dw;
|
public readonly double dx;
|
||||||
public int xsb, ysb, zsb, wsb;
|
public readonly double dy;
|
||||||
|
public readonly double dz;
|
||||||
|
public readonly double dw;
|
||||||
public Contribution4 Next;
|
public Contribution4 Next;
|
||||||
|
public readonly int xsb;
|
||||||
|
public readonly int ysb;
|
||||||
|
public readonly int zsb;
|
||||||
|
public readonly int wsb;
|
||||||
|
|
||||||
public Contribution4(double multiplier, int xsb, int ysb, int zsb, int wsb)
|
public Contribution4(double multiplier, int xsb, int ysb, int zsb, int wsb)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<configuration>
|
<configuration>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
||||||
<package id="Stylet" version="1.3.0" targetFramework="net472" />
|
<package id="Stylet" version="1.3.0" targetFramework="net472" />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="QRCoder" version="1.3.5" targetFramework="net461" />
|
<package id="QRCoder" version="1.3.5" targetFramework="net461" />
|
||||||
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
<package id="SkiaSharp" version="1.68.1" targetFramework="net472" />
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
|
||||||
@@ -62,6 +61,8 @@ namespace Artemis.UI.Shared
|
|||||||
set => SetValue(ColorOpacityProperty, value);
|
set => SetValue(ColorOpacityProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
private static void ColorPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
private static void ColorPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
var colorPicker = (ColorPicker) d;
|
var colorPicker = (ColorPicker) d;
|
||||||
@@ -109,8 +110,6 @@ namespace Artemis.UI.Shared
|
|||||||
PopupOpen = !PopupOpen;
|
PopupOpen = !PopupOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
|
||||||
|
|
||||||
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
||||||
{
|
{
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ namespace Artemis.UI.Shared.Converters
|
|||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts <see cref="T:System.Windows.Media.Color" /> into a <see cref="T:System.Windows.Media.Color" /> with full opacity.
|
/// Converts <see cref="T:System.Windows.Media.Color" /> into a <see cref="T:System.Windows.Media.Color" /> with full
|
||||||
|
/// opacity.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ValueConversion(typeof(Color), typeof(string))]
|
[ValueConversion(typeof(Color), typeof(string))]
|
||||||
internal class ColorToSolidColorConverter : IValueConverter
|
internal class ColorToSolidColorConverter : IValueConverter
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Resources;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
@@ -31,7 +29,7 @@ using System.Windows;
|
|||||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
|
|
||||||
|
|
||||||
[assembly:ThemeInfo(
|
[assembly: ThemeInfo(
|
||||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
//(used if a resource is not found in the page,
|
//(used if a resource is not found in the page,
|
||||||
// or application resource dictionaries)
|
// or application resource dictionaries)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
|
||||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||||
<Profiles>
|
<Profiles>
|
||||||
<Profile Name="(Default)" />
|
<Profile Name="(Default)" />
|
||||||
|
|||||||
@@ -6,7 +6,5 @@
|
|||||||
xmlns:local="clr-namespace:Artemis.UI.Shared"
|
xmlns:local="clr-namespace:Artemis.UI.Shared"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<Grid>
|
<Grid />
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,17 +1,4 @@
|
|||||||
using System;
|
using System.Windows.Controls;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using System.Windows.Data;
|
|
||||||
using System.Windows.Documents;
|
|
||||||
using System.Windows.Input;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using System.Windows.Media.Imaging;
|
|
||||||
using System.Windows.Navigation;
|
|
||||||
using System.Windows.Shapes;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Shared
|
namespace Artemis.UI.Shared
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MaterialDesignColors" version="1.2.0" targetFramework="net472" />
|
<package id="MaterialDesignColors" version="1.2.0" targetFramework="net472" />
|
||||||
<package id="MaterialDesignThemes" version="2.6.0" targetFramework="net472" />
|
<package id="MaterialDesignThemes" version="2.6.0" targetFramework="net472" />
|
||||||
|
|||||||
@@ -63,8 +63,8 @@
|
|||||||
|
|
||||||
<!-- Disable tab stop/focusable on all content controls -->
|
<!-- Disable tab stop/focusable on all content controls -->
|
||||||
<Style TargetType="ContentControl">
|
<Style TargetType="ContentControl">
|
||||||
<Setter Property="IsTabStop" Value="False"/>
|
<Setter Property="IsTabStop" Value="False" />
|
||||||
<Setter Property="Focusable" Value="False"/>
|
<Setter Property="Focusable" Value="False" />
|
||||||
</Style>
|
</Style>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace Artemis.UI.Behaviors
|
|||||||
|
|
||||||
private static void OnLoaded(object sender, RoutedEventArgs e)
|
private static void OnLoaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
var frameworkElement = (FrameworkElement)sender;
|
var frameworkElement = (FrameworkElement) sender;
|
||||||
frameworkElement.Loaded -= OnLoaded;
|
frameworkElement.Loaded -= OnLoaded;
|
||||||
|
|
||||||
var window = Window.GetWindow(frameworkElement);
|
var window = Window.GetWindow(frameworkElement);
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media.Animation;
|
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using Artemis.Core.Ninject;
|
using Artemis.Core.Ninject;
|
||||||
using Artemis.Core.Services.Interfaces;
|
using Artemis.Core.Services.Interfaces;
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ namespace Artemis.UI.Events
|
|||||||
{
|
{
|
||||||
public class MainWindowKeyEvent
|
public class MainWindowKeyEvent
|
||||||
{
|
{
|
||||||
public bool KeyDown { get; }
|
|
||||||
public KeyEventArgs EventArgs { get; }
|
|
||||||
|
|
||||||
public MainWindowKeyEvent(bool keyDown, KeyEventArgs eventArgs)
|
public MainWindowKeyEvent(bool keyDown, KeyEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
KeyDown = keyDown;
|
KeyDown = keyDown;
|
||||||
EventArgs = eventArgs;
|
EventArgs = eventArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool KeyDown { get; }
|
||||||
|
public KeyEventArgs EventArgs { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
DisplayMemberPath="DisplayName"
|
DisplayMemberPath="DisplayName"
|
||||||
Style="{StaticResource MaterialDesignTabControl}">
|
Style="{StaticResource MaterialDesignTabControl}">
|
||||||
<TabControl.ContentTemplate>
|
<TabControl.ContentTemplate>
|
||||||
<DataTemplate >
|
<DataTemplate>
|
||||||
<materialDesign:TransitioningContent OpeningEffect="{materialDesign:TransitionEffect FadeIn}">
|
<materialDesign:TransitioningContent OpeningEffect="{materialDesign:TransitionEffect FadeIn}">
|
||||||
<ContentControl s:View.Model="{Binding}" TextElement.Foreground="{DynamicResource MaterialDesignBody}"/>
|
<ContentControl s:View.Model="{Binding}" TextElement.Foreground="{DynamicResource MaterialDesignBody}" />
|
||||||
</materialDesign:TransitioningContent>
|
</materialDesign:TransitioningContent>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</TabControl.ContentTemplate>
|
</TabControl.ContentTemplate>
|
||||||
|
|||||||
+3
-3
@@ -14,11 +14,11 @@
|
|||||||
d:DataContext="{d:DesignInstance local:LayerPropertiesViewModel}"
|
d:DataContext="{d:DesignInstance local:LayerPropertiesViewModel}"
|
||||||
behaviors:InputBindingBehavior.PropagateInputBindingsToWindow="True">
|
behaviors:InputBindingBehavior.PropagateInputBindingsToWindow="True">
|
||||||
<UserControl.InputBindings>
|
<UserControl.InputBindings>
|
||||||
<KeyBinding Command="{s:Action Play}" Key="Space"></KeyBinding>
|
<KeyBinding Command="{s:Action Play}" Key="Space" />
|
||||||
<KeyBinding Command="{s:Action PlayFromStart}" Modifiers="Shift" Key="Space"></KeyBinding>
|
<KeyBinding Command="{s:Action PlayFromStart}" Modifiers="Shift" Key="Space" />
|
||||||
</UserControl.InputBindings>
|
</UserControl.InputBindings>
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<s:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
|
<s:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<Grid x:Name="ContainerGrid">
|
<Grid x:Name="ContainerGrid">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
|||||||
-5
@@ -1,5 +1,4 @@
|
|||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Input;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
||||||
{
|
{
|
||||||
@@ -17,13 +16,9 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
private void TimelineScrollChanged(object sender, ScrollChangedEventArgs e)
|
private void TimelineScrollChanged(object sender, ScrollChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender == TimelineHeaderScrollViewer)
|
if (sender == TimelineHeaderScrollViewer)
|
||||||
{
|
|
||||||
TimelineRailsScrollViewer.ScrollToHorizontalOffset(e.HorizontalOffset);
|
TimelineRailsScrollViewer.ScrollToHorizontalOffset(e.HorizontalOffset);
|
||||||
}
|
|
||||||
else if (sender == TimelineRailsScrollViewer)
|
else if (sender == TimelineRailsScrollViewer)
|
||||||
{
|
|
||||||
TimelineHeaderScrollViewer.ScrollToHorizontalOffset(e.HorizontalOffset);
|
TimelineHeaderScrollViewer.ScrollToHorizontalOffset(e.HorizontalOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+2
-1
@@ -15,7 +15,8 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
private readonly IProfileEditorService _profileEditorService;
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
private bool _keyframesEnabled;
|
private bool _keyframesEnabled;
|
||||||
|
|
||||||
public LayerPropertyViewModel(BaseLayerProperty layerProperty, LayerPropertyViewModel parent, ILayerPropertyViewModelFactory layerPropertyViewModelFactory, IKernel kernel, IProfileEditorService profileEditorService)
|
public LayerPropertyViewModel(BaseLayerProperty layerProperty, LayerPropertyViewModel parent, ILayerPropertyViewModelFactory layerPropertyViewModelFactory, IKernel kernel,
|
||||||
|
IProfileEditorService profileEditorService)
|
||||||
{
|
{
|
||||||
_kernel = kernel;
|
_kernel = kernel;
|
||||||
_profileEditorService = profileEditorService;
|
_profileEditorService = profileEditorService;
|
||||||
|
|||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.PropertyInput
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.PropertyInput
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
Padding="0 -1"
|
Padding="0 -1"
|
||||||
materialDesign:ValidationAssist.UsePopup="True"
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Text="{Binding IntInputValue}"/>
|
Text="{Binding IntInputValue}" />
|
||||||
<TextBlock Margin="5 0 0 0" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.LayerProperty.InputAffix}" />
|
<TextBlock Margin="5 0 0 0" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.LayerProperty.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.PropertyInput
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.PropertyInput
|
||||||
|
|||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using Artemis.UI.Exceptions;
|
using Artemis.UI.Exceptions;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|||||||
+1
-2
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using PropertyChanged;
|
using PropertyChanged;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
@@ -26,7 +25,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.P
|
|||||||
[DependsOn(nameof(InputValue))]
|
[DependsOn(nameof(InputValue))]
|
||||||
public float Y
|
public float Y
|
||||||
{
|
{
|
||||||
get => ((SKPoint?)InputValue)?.Y ?? 0;
|
get => ((SKPoint?) InputValue)?.Y ?? 0;
|
||||||
set => InputValue = new SKPoint(X, value);
|
set => InputValue = new SKPoint(X, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@
|
|||||||
materialDesign:ValidationAssist.UsePopup="True"
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
ToolTip="Height"
|
ToolTip="Height"
|
||||||
Text="{Binding Height}"/>
|
Text="{Binding Height}" />
|
||||||
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
||||||
<TextBox Width="60"
|
<TextBox Width="60"
|
||||||
Margin="0 2"
|
Margin="0 2"
|
||||||
|
|||||||
+1
-2
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using PropertyChanged;
|
using PropertyChanged;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
@@ -26,7 +25,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.PropertyTree.P
|
|||||||
[DependsOn(nameof(InputValue))]
|
[DependsOn(nameof(InputValue))]
|
||||||
public float Height
|
public float Height
|
||||||
{
|
{
|
||||||
get => ((SKSize?)InputValue)?.Height ?? 0;
|
get => ((SKSize?) InputValue)?.Height ?? 0;
|
||||||
set => InputValue = new SKSize(Width, value);
|
set => InputValue = new SKSize(Width, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
<UserControl.InputBindings>
|
<UserControl.InputBindings>
|
||||||
<KeyBinding Command="{s:Action Undo}" Modifiers="Control" Key="Z"></KeyBinding>
|
<KeyBinding Command="{s:Action Undo}" Modifiers="Control" Key="Z" />
|
||||||
<KeyBinding Command="{s:Action Redo}" Modifiers="Control" Key="Y"></KeyBinding>
|
<KeyBinding Command="{s:Action Redo}" Modifiers="Control" Key="Y" />
|
||||||
</UserControl.InputBindings>
|
</UserControl.InputBindings>
|
||||||
|
|
||||||
<Grid Margin="16">
|
<Grid Margin="16">
|
||||||
|
|||||||
+1
-1
@@ -14,8 +14,8 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.ProfileTree.TreeItem
|
|||||||
public abstract class TreeItemViewModel : PropertyChangedBase
|
public abstract class TreeItemViewModel : PropertyChangedBase
|
||||||
{
|
{
|
||||||
private readonly IDialogService _dialogService;
|
private readonly IDialogService _dialogService;
|
||||||
private readonly ILayerService _layerService;
|
|
||||||
private readonly IFolderViewModelFactory _folderViewModelFactory;
|
private readonly IFolderViewModelFactory _folderViewModelFactory;
|
||||||
|
private readonly ILayerService _layerService;
|
||||||
private readonly ILayerViewModelFactory _layerViewModelFactory;
|
private readonly ILayerViewModelFactory _layerViewModelFactory;
|
||||||
private readonly IProfileEditorService _profileEditorService;
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Models.Profile.LayerShapes;
|
using Artemis.Core.Models.Profile.LayerShapes;
|
||||||
@@ -9,8 +8,6 @@ using Artemis.Core.Models.Surface;
|
|||||||
using Artemis.UI.Extensions;
|
using Artemis.UI.Extensions;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using RGB.NET.Core;
|
using RGB.NET.Core;
|
||||||
using SkiaSharp;
|
|
||||||
using SkiaSharp.Views.WPF;
|
|
||||||
using Rectangle = Artemis.Core.Models.Profile.LayerShapes.Rectangle;
|
using Rectangle = Artemis.Core.Models.Profile.LayerShapes.Rectangle;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
||||||
|
|||||||
@@ -172,7 +172,6 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<StackPanel ZIndex="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="10">
|
<StackPanel ZIndex="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="10">
|
||||||
<materialDesign:Card Padding="8">
|
<materialDesign:Card Padding="8">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|||||||
+4
-6
@@ -1,23 +1,21 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics.Eventing.Reader;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using SkiaSharp.Views.WPF;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||||
{
|
{
|
||||||
public class EditToolViewModel : VisualizationToolViewModel
|
public class EditToolViewModel : VisualizationToolViewModel
|
||||||
{
|
{
|
||||||
private bool _isDragging;
|
|
||||||
private double _dragOffsetY;
|
|
||||||
private double _dragOffsetX;
|
|
||||||
private Point _dragStart;
|
|
||||||
private bool _draggingHorizontally;
|
private bool _draggingHorizontally;
|
||||||
private bool _draggingVertically;
|
private bool _draggingVertically;
|
||||||
|
private double _dragOffsetX;
|
||||||
|
private double _dragOffsetY;
|
||||||
|
private Point _dragStart;
|
||||||
|
private bool _isDragging;
|
||||||
|
|
||||||
public EditToolViewModel(ProfileViewModel profileViewModel, IProfileEditorService profileEditorService) : base(profileViewModel, profileEditorService)
|
public EditToolViewModel(ProfileViewModel profileViewModel, IProfileEditorService profileEditorService) : base(profileViewModel, profileEditorService)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using MaterialDesignThemes.Wpf;
|
using MaterialDesignThemes.Wpf;
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.News
|
namespace Artemis.UI.Screens.News
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
@@ -31,6 +29,10 @@ namespace Artemis.UI.Screens
|
|||||||
SidebarViewModel.PropertyChanged += SidebarViewModelOnPropertyChanged;
|
SidebarViewModel.PropertyChanged += SidebarViewModelOnPropertyChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SidebarViewModel SidebarViewModel { get; }
|
||||||
|
public bool IsSidebarVisible { get; set; }
|
||||||
|
public bool ActiveItemReady { get; set; }
|
||||||
|
|
||||||
private void SidebarViewModelOnPropertyChanged(object sender, PropertyChangedEventArgs e)
|
private void SidebarViewModelOnPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.PropertyName == nameof(SidebarViewModel.SelectedItem))
|
if (e.PropertyName == nameof(SidebarViewModel.SelectedItem))
|
||||||
@@ -48,10 +50,6 @@ namespace Artemis.UI.Screens
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SidebarViewModel SidebarViewModel { get; }
|
|
||||||
public bool IsSidebarVisible { get; set; }
|
|
||||||
public bool ActiveItemReady { get; set; }
|
|
||||||
|
|
||||||
private void ApplyWindowsTheme(ThemeWatcher.WindowsTheme windowsTheme)
|
private void ApplyWindowsTheme(ThemeWatcher.WindowsTheme windowsTheme)
|
||||||
{
|
{
|
||||||
var paletteHelper = new PaletteHelper();
|
var paletteHelper = new PaletteHelper();
|
||||||
@@ -61,9 +59,9 @@ namespace Artemis.UI.Screens
|
|||||||
|
|
||||||
var extensionsPaletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper();
|
var extensionsPaletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper();
|
||||||
// That's nice, then don't use it in your own examples and provide a working alternative
|
// That's nice, then don't use it in your own examples and provide a working alternative
|
||||||
#pragma warning disable 612
|
#pragma warning disable 612
|
||||||
extensionsPaletteHelper.SetLightDark(windowsTheme == ThemeWatcher.WindowsTheme.Dark);
|
extensionsPaletteHelper.SetLightDark(windowsTheme == ThemeWatcher.WindowsTheme.Dark);
|
||||||
#pragma warning restore 612
|
#pragma warning restore 612
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WindowDeactivated()
|
public void WindowDeactivated()
|
||||||
|
|||||||
@@ -215,10 +215,10 @@
|
|||||||
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
|
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
|
||||||
materialDesign:DataGridAssist.ColumnHeaderPadding="8">
|
materialDesign:DataGridAssist.ColumnHeaderPadding="8">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Binding="{Binding Type}" Header="Type" IsReadOnly="True"/>
|
<DataGridTextColumn Binding="{Binding Type}" Header="Type" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Binding="{Binding Name}" Header="Name" IsReadOnly="True" Width="*"/>
|
<DataGridTextColumn Binding="{Binding Name}" Header="Name" IsReadOnly="True" Width="*" />
|
||||||
<DataGridTextColumn Binding="{Binding Description}" Header="Description" IsReadOnly="True" Width="*"/>
|
<DataGridTextColumn Binding="{Binding Description}" Header="Description" IsReadOnly="True" Width="*" />
|
||||||
<DataGridTextColumn Binding="{Binding Version}" Header="Version" IsReadOnly="True"/>
|
<DataGridTextColumn Binding="{Binding Version}" Header="Version" IsReadOnly="True" />
|
||||||
<DataGridCheckBoxColumn Header="Enabled"
|
<DataGridCheckBoxColumn Header="Enabled"
|
||||||
Binding="{Binding IsEnabled}"
|
Binding="{Binding IsEnabled}"
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnStyle}"
|
ElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnStyle}"
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
{
|
{
|
||||||
private readonly IDeviceSettingsViewModelFactory _deviceSettingsViewModelFactory;
|
private readonly IDeviceSettingsViewModelFactory _deviceSettingsViewModelFactory;
|
||||||
private readonly IKernel _kernel;
|
private readonly IKernel _kernel;
|
||||||
|
private readonly IPluginService _pluginService;
|
||||||
private readonly ISettingsService _settingsService;
|
private readonly ISettingsService _settingsService;
|
||||||
private readonly ISurfaceService _surfaceService;
|
private readonly ISurfaceService _surfaceService;
|
||||||
private readonly IPluginService _pluginService;
|
|
||||||
private readonly IWindowManager _windowManager;
|
private readonly IWindowManager _windowManager;
|
||||||
|
|
||||||
public SettingsViewModel(IKernel kernel,
|
public SettingsViewModel(IKernel kernel,
|
||||||
|
|||||||
@@ -1,17 +1,4 @@
|
|||||||
using System;
|
using System.Windows.Controls;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using System.Windows.Data;
|
|
||||||
using System.Windows.Documents;
|
|
||||||
using System.Windows.Input;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using System.Windows.Media.Imaging;
|
|
||||||
using System.Windows.Navigation;
|
|
||||||
using System.Windows.Shapes;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Sidebar
|
namespace Artemis.UI.Screens.Sidebar
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Artemis.Core.Events;
|
using Artemis.Core.Events;
|
||||||
using Artemis.Core.Services.Interfaces;
|
using Artemis.Core.Services.Interfaces;
|
||||||
@@ -85,10 +86,10 @@ namespace Artemis.UI.Screens.Sidebar
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Icon is provided as string to avoid having to reference MaterialDesignThemes
|
// Icon is provided as string to avoid having to reference MaterialDesignThemes
|
||||||
var parsedIcon = System.Enum.TryParse<PackIconKind>(module.DisplayIcon, true, out var iconEnum);
|
var parsedIcon = Enum.TryParse<PackIconKind>(module.DisplayIcon, true, out var iconEnum);
|
||||||
if (parsedIcon == false)
|
if (parsedIcon == false)
|
||||||
iconEnum = PackIconKind.QuestionMarkCircle;
|
iconEnum = PackIconKind.QuestionMarkCircle;
|
||||||
var sidebarItem = new FirstLevelNavigationItem { Icon = iconEnum, Label = module.DisplayName };
|
var sidebarItem = new FirstLevelNavigationItem {Icon = iconEnum, Label = module.DisplayName};
|
||||||
SidebarItems.Add(sidebarItem);
|
SidebarItems.Add(sidebarItem);
|
||||||
SidebarItemObjects.Add(sidebarItem, module);
|
SidebarItemObjects.Add(sidebarItem, module);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,9 +124,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
// Create VMs for missing devices
|
// Create VMs for missing devices
|
||||||
var viewModel = existing.FirstOrDefault(vm => vm.Device.RgbDevice == surfaceDeviceConfiguration.RgbDevice);
|
var viewModel = existing.FirstOrDefault(vm => vm.Device.RgbDevice == surfaceDeviceConfiguration.RgbDevice);
|
||||||
if (viewModel == null)
|
if (viewModel == null)
|
||||||
{
|
|
||||||
viewModel = new SurfaceDeviceViewModel(surfaceDeviceConfiguration);
|
viewModel = new SurfaceDeviceViewModel(surfaceDeviceConfiguration);
|
||||||
}
|
|
||||||
// Update existing devices
|
// Update existing devices
|
||||||
else
|
else
|
||||||
viewModel.Device = surfaceDeviceConfiguration;
|
viewModel.Device = surfaceDeviceConfiguration;
|
||||||
@@ -199,6 +197,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
var deviceViewModel = Devices[i];
|
var deviceViewModel = Devices[i];
|
||||||
deviceViewModel.Device.ZIndex = i + 1;
|
deviceViewModel.Device.ZIndex = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,6 +212,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
var deviceViewModel = Devices[i];
|
var deviceViewModel = Devices[i];
|
||||||
deviceViewModel.Device.ZIndex = i + 1;
|
deviceViewModel.Device.ZIndex = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,6 +224,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
var deviceViewModel = Devices[i];
|
var deviceViewModel = Devices[i];
|
||||||
deviceViewModel.Device.ZIndex = i + 1;
|
deviceViewModel.Device.ZIndex = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,6 +238,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
var deviceViewModel = Devices[i];
|
var deviceViewModel = Devices[i];
|
||||||
deviceViewModel.Device.ZIndex = i + 1;
|
deviceViewModel.Device.ZIndex = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
_surfaceService.UpdateSurfaceConfiguration(SelectedSurface, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using MaterialDesignThemes.Wpf;
|
using MaterialDesignThemes.Wpf;
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Workshop
|
namespace Artemis.UI.Screens.Workshop
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -47,7 +47,5 @@ namespace Artemis.UI.Services.Interfaces
|
|||||||
/// Occurs when the profile preview has been updated
|
/// Occurs when the profile preview has been updated
|
||||||
/// </summary>
|
/// </summary>
|
||||||
event EventHandler ProfilePreviewUpdated;
|
event EventHandler ProfilePreviewUpdated;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,11 +9,6 @@ namespace Artemis.UI.Utilities
|
|||||||
{
|
{
|
||||||
public class ThemeWatcher
|
public class ThemeWatcher
|
||||||
{
|
{
|
||||||
public ThemeWatcher()
|
|
||||||
{
|
|
||||||
WatchTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum WindowsTheme
|
public enum WindowsTheme
|
||||||
{
|
{
|
||||||
Light,
|
Light,
|
||||||
@@ -24,6 +19,11 @@ namespace Artemis.UI.Utilities
|
|||||||
|
|
||||||
private const string RegistryValueName = "AppsUseLightTheme";
|
private const string RegistryValueName = "AppsUseLightTheme";
|
||||||
|
|
||||||
|
public ThemeWatcher()
|
||||||
|
{
|
||||||
|
WatchTheme();
|
||||||
|
}
|
||||||
|
|
||||||
public void WatchTheme()
|
public void WatchTheme()
|
||||||
{
|
{
|
||||||
var currentUser = WindowsIdentity.GetCurrent();
|
var currentUser = WindowsIdentity.GetCurrent();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Castle.Core" version="4.4.0" targetFramework="net461" />
|
<package id="Castle.Core" version="4.4.0" targetFramework="net461" />
|
||||||
<package id="FluentValidation" version="8.5.0" targetFramework="net472" />
|
<package id="FluentValidation" version="8.5.0" targetFramework="net472" />
|
||||||
|
|||||||
Reference in new issue
Block a user