diff --git a/src/Artemis.ConsoleUI/packages.lock.json b/src/Artemis.ConsoleUI/packages.lock.json
index 54fea5121..f88410446 100644
--- a/src/Artemis.ConsoleUI/packages.lock.json
+++ b/src/Artemis.ConsoleUI/packages.lock.json
@@ -206,23 +206,23 @@
},
"RGB.NET.Core": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ=="
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ=="
},
"RGB.NET.Layout": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"RGB.NET.Presets": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@@ -1244,9 +1244,9 @@
"Ninject": "3.3.4",
"Ninject.Extensions.ChildKernel": "3.3.0",
"Ninject.Extensions.Conventions": "3.3.0",
- "RGB.NET.Core": "1.0.0-prerelease1",
- "RGB.NET.Layout": "1.0.0-prerelease1",
- "RGB.NET.Presets": "1.0.0-prerelease1",
+ "RGB.NET.Core": "1.0.0-prerelease7",
+ "RGB.NET.Layout": "1.0.0-prerelease7",
+ "RGB.NET.Presets": "1.0.0-prerelease7",
"Serilog": "2.10.0",
"Serilog.Sinks.Console": "4.0.0",
"Serilog.Sinks.Debug": "2.0.0",
diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj
index e80f308ce..4a860799e 100644
--- a/src/Artemis.Core/Artemis.Core.csproj
+++ b/src/Artemis.Core/Artemis.Core.csproj
@@ -47,9 +47,9 @@
-
-
-
+
+
+
diff --git a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
index 1fa950b3c..8c6dc49db 100644
--- a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
+++ b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
@@ -349,24 +349,7 @@ namespace Artemis.Core
return mappedLed;
return artemisLed;
}
-
- ///
- /// Generates the default layout file name of the device
- ///
- /// If true, the .xml extension is added to the file name
- /// The resulting file name e.g. CORSAIR GLAIVE.xml or K95 RGB-ISO.xml
- public string GetLayoutFileName(bool includeExtension = true)
- {
- // Take out invalid file name chars, may not be perfect but neither are you
- string fileName = System.IO.Path.GetInvalidFileNameChars().Aggregate(RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-'));
- if (RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard)
- fileName = $"{fileName}-{PhysicalLayout.ToString().ToUpper()}";
- if (includeExtension)
- fileName = $"{fileName}.xml";
-
- return fileName;
- }
-
+
///
/// Occurs when the underlying RGB.NET device was updated
///
diff --git a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
index fc540ff96..abb2e1ea3 100644
--- a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
+++ b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+using System.Linq;
using Ninject;
using RGB.NET.Core;
using Serilog;
@@ -75,7 +76,7 @@ namespace Artemis.Core.DeviceProviders
layoutDir,
device.RgbDevice.DeviceInfo.Manufacturer,
device.DeviceType.ToString(),
- device.GetLayoutFileName()
+ GetDeviceLayoutName(device)
);
return new ArtemisLayout(filePath, LayoutSource.Plugin);
}
@@ -92,7 +93,7 @@ namespace Artemis.Core.DeviceProviders
layoutDir,
device.RgbDevice.DeviceInfo.Manufacturer,
device.DeviceType.ToString(),
- device.GetLayoutFileName()
+ GetDeviceLayoutName(device)
);
return new ArtemisLayout(filePath, LayoutSource.User);
}
@@ -108,5 +109,20 @@ namespace Artemis.Core.DeviceProviders
{
throw new NotImplementedException("Device provider does not support detecting logical layouts (don't call base.GetLogicalLayout())");
}
+
+ ///
+ /// Called when determining which file name to use when loading the layout of the specified .
+ ///
+ /// The device to determine the layout file name for.
+ /// A file name, including an extension
+ public virtual string GetDeviceLayoutName(ArtemisDevice device)
+ {
+ // Take out invalid file name chars, may not be perfect but neither are you
+ string fileName = Path.GetInvalidFileNameChars().Aggregate(device.RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-'));
+ if (device.RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard)
+ fileName = $"{fileName}-{device.PhysicalLayout.ToString().ToUpper()}";
+
+ return fileName + ".xml";
+ }
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/Utilities/Easings.cs b/src/Artemis.Core/Utilities/Easings.cs
index 3bffa45ed..5bcc4cb90 100644
--- a/src/Artemis.Core/Utilities/Easings.cs
+++ b/src/Artemis.Core/Utilities/Easings.cs
@@ -54,6 +54,7 @@ namespace Artemis.Core
case Functions.BounceEaseIn: return BounceEaseIn(p);
case Functions.BounceEaseOut: return BounceEaseOut(p);
case Functions.BounceEaseInOut: return BounceEaseInOut(p);
+ case Functions.Step: return Step (p);
}
}
@@ -358,6 +359,13 @@ namespace Artemis.Core
return 0.5 * BounceEaseOut(p * 2 - 1) + 0.5;
}
+ ///
+ /// An snappy animation that moves instantly to the next destination on the next keyframe
+ ///
+ public static double Step (double p) {
+ return Math.Floor (p);
+ }
+
///
/// Easing Functions enumeration
///
@@ -393,7 +401,8 @@ namespace Artemis.Core
BackEaseInOut,
BounceEaseIn,
BounceEaseOut,
- BounceEaseInOut
+ BounceEaseInOut,
+ Step
}
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/packages.lock.json b/src/Artemis.Core/packages.lock.json
index d6d49560e..6461c9b8c 100644
--- a/src/Artemis.Core/packages.lock.json
+++ b/src/Artemis.Core/packages.lock.json
@@ -75,26 +75,26 @@
},
"RGB.NET.Core": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ=="
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ=="
},
"RGB.NET.Layout": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==",
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"RGB.NET.Presets": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==",
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"Serilog": {
diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj
index 253095749..c6849d64f 100644
--- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj
+++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj
@@ -39,7 +39,7 @@
-
+
diff --git a/src/Artemis.UI.Shared/packages.lock.json b/src/Artemis.UI.Shared/packages.lock.json
index ae3665203..d31dcf1f7 100644
--- a/src/Artemis.UI.Shared/packages.lock.json
+++ b/src/Artemis.UI.Shared/packages.lock.json
@@ -54,9 +54,9 @@
},
"RGB.NET.Core": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ=="
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ=="
},
"SharpVectors.Reloaded": {
"type": "Direct",
@@ -272,18 +272,18 @@
},
"RGB.NET.Layout": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"RGB.NET.Presets": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@@ -1325,9 +1325,9 @@
"Ninject": "3.3.4",
"Ninject.Extensions.ChildKernel": "3.3.0",
"Ninject.Extensions.Conventions": "3.3.0",
- "RGB.NET.Core": "1.0.0-prerelease1",
- "RGB.NET.Layout": "1.0.0-prerelease1",
- "RGB.NET.Presets": "1.0.0-prerelease1",
+ "RGB.NET.Core": "1.0.0-prerelease7",
+ "RGB.NET.Layout": "1.0.0-prerelease7",
+ "RGB.NET.Presets": "1.0.0-prerelease7",
"Serilog": "2.10.0",
"Serilog.Sinks.Console": "4.0.0",
"Serilog.Sinks.Debug": "2.0.0",
diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj
index da33f5fcb..1bb9d0780 100644
--- a/src/Artemis.UI/Artemis.UI.csproj
+++ b/src/Artemis.UI/Artemis.UI.csproj
@@ -145,8 +145,8 @@
-
-
+
+
diff --git a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs
index 97f47d8c7..19ee3a135 100644
--- a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs
+++ b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs
@@ -213,7 +213,8 @@ namespace Artemis.UI.Screens.Settings.Device
Device.RgbDevice.DeviceInfo.Manufacturer,
Device.DeviceType.ToString()
);
- string filePath = Path.Combine(directory, Device.GetLayoutFileName());
+
+ string filePath = Path.Combine(directory, Device.DeviceProvider.GetDeviceLayoutName(Device));
Core.Utilities.CreateAccessibleDirectory(directory);
// XML
diff --git a/src/Artemis.UI/packages.lock.json b/src/Artemis.UI/packages.lock.json
index c28d978da..34aad11eb 100644
--- a/src/Artemis.UI/packages.lock.json
+++ b/src/Artemis.UI/packages.lock.json
@@ -124,17 +124,17 @@
},
"RGB.NET.Core": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ=="
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ=="
},
"RGB.NET.Layout": {
"type": "Direct",
- "requested": "[1.0.0-prerelease1, )",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==",
+ "requested": "[1.0.0-prerelease7, )",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"Serilog": {
@@ -394,10 +394,10 @@
},
"RGB.NET.Presets": {
"type": "Transitive",
- "resolved": "1.0.0-prerelease1",
- "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==",
+ "resolved": "1.0.0-prerelease7",
+ "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==",
"dependencies": {
- "RGB.NET.Core": "1.0.0-prerelease1"
+ "RGB.NET.Core": "1.0.0-prerelease7"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@@ -1454,9 +1454,9 @@
"Ninject": "3.3.4",
"Ninject.Extensions.ChildKernel": "3.3.0",
"Ninject.Extensions.Conventions": "3.3.0",
- "RGB.NET.Core": "1.0.0-prerelease1",
- "RGB.NET.Layout": "1.0.0-prerelease1",
- "RGB.NET.Presets": "1.0.0-prerelease1",
+ "RGB.NET.Core": "1.0.0-prerelease7",
+ "RGB.NET.Layout": "1.0.0-prerelease7",
+ "RGB.NET.Presets": "1.0.0-prerelease7",
"Serilog": "2.10.0",
"Serilog.Sinks.Console": "4.0.0",
"Serilog.Sinks.Debug": "2.0.0",
@@ -1486,7 +1486,7 @@
"Microsoft.Xaml.Behaviors.Wpf": "1.1.31",
"Ninject": "3.3.4",
"Ninject.Extensions.Conventions": "3.3.0",
- "RGB.NET.Core": "1.0.0-prerelease1",
+ "RGB.NET.Core": "1.0.0-prerelease7",
"SharpVectors.Reloaded": "1.7.5",
"SkiaSharp": "2.80.3",
"SkiaSharp.Views.WPF": "2.80.3",