From c3b296726e45a98795359e1e246b87e7fe3192a5 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 11 Feb 2020 19:49:09 +0100 Subject: [PATCH] SKColor keyframe engine - Avoid overflowing bytes with certain easings --- .../KeyframeEngines/SKColorKeyframeEngine.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Artemis.Core/Models/Profile/KeyframeEngines/SKColorKeyframeEngine.cs b/src/Artemis.Core/Models/Profile/KeyframeEngines/SKColorKeyframeEngine.cs index 9e427d237..e0f0246b2 100644 --- a/src/Artemis.Core/Models/Profile/KeyframeEngines/SKColorKeyframeEngine.cs +++ b/src/Artemis.Core/Models/Profile/KeyframeEngines/SKColorKeyframeEngine.cs @@ -21,11 +21,16 @@ namespace Artemis.Core.Models.Profile.KeyframeEngines var alphaDiff = nextKeyframe.Value.Alpha - currentKeyframe.Value.Alpha; return new SKColor( - (byte) (currentKeyframe.Value.Red + redDiff * KeyframeProgressEased), - (byte) (currentKeyframe.Value.Green + greenDiff * KeyframeProgressEased), - (byte) (currentKeyframe.Value.Blue + blueDiff * KeyframeProgressEased), - (byte)(currentKeyframe.Value.Alpha + alphaDiff * KeyframeProgressEased) + ClampToByte(currentKeyframe.Value.Red + redDiff * KeyframeProgressEased), + ClampToByte(currentKeyframe.Value.Green + greenDiff * KeyframeProgressEased), + ClampToByte(currentKeyframe.Value.Blue + blueDiff * KeyframeProgressEased), + ClampToByte(currentKeyframe.Value.Alpha + alphaDiff * KeyframeProgressEased) ); } + + private byte ClampToByte(float value) + { + return (byte) Math.Max(0, Math.Min(255, value)); + } } } \ No newline at end of file