Browse Source

Add customizable snake and knight animation increments (#16337)

Michał Szczepaniak 3 years ago
parent
commit
5b6faa173b
2 changed files with 12 additions and 4 deletions
  1. 4 4
      quantum/rgblight/rgblight.c
  2. 8 0
      quantum/rgblight/rgblight.h

+ 4 - 4
quantum/rgblight/rgblight.c

@@ -1273,19 +1273,19 @@ void rgblight_effect_snake(animation_status_t *anim) {
     }
     rgblight_set();
     if (increment == 1) {
-        if (pos - 1 < 0) {
+        if (pos - RGBLIGHT_EFFECT_SNAKE_INCREMENT < 0) {
             pos = rgblight_ranges.effect_num_leds - 1;
 #    if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
             anim->pos = 0;
 #    endif
         } else {
-            pos -= 1;
+            pos -= RGBLIGHT_EFFECT_SNAKE_INCREMENT;
 #    if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
             anim->pos = 1;
 #    endif
         }
     } else {
-        pos = (pos + 1) % rgblight_ranges.effect_num_leds;
+        pos = (pos + RGBLIGHT_EFFECT_SNAKE_INCREMENT) % rgblight_ranges.effect_num_leds;
 #    if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
         anim->pos = pos;
 #    endif
@@ -1299,7 +1299,7 @@ __attribute__((weak)) const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63
 void rgblight_effect_knight(animation_status_t *anim) {
     static int8_t low_bound  = 0;
     static int8_t high_bound = RGBLIGHT_EFFECT_KNIGHT_LENGTH - 1;
-    static int8_t increment  = 1;
+    static int8_t increment  = RGBLIGHT_EFFECT_KNIGHT_INCREMENT;
     uint8_t       i, cur;
 
 #    if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)

+ 8 - 0
quantum/rgblight/rgblight.h

@@ -126,10 +126,18 @@ enum RGBLIGHT_EFFECT_MODE {
 #    define RGBLIGHT_EFFECT_SNAKE_LENGTH 4
 #endif
 
+#ifndef RGBLIGHT_EFFECT_SNAKE_INCREMENT
+#    define RGBLIGHT_EFFECT_SNAKE_INCREMENT 1
+#endif
+
 #ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH
 #    define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
 #endif
 
+#ifndef RGBLIGHT_EFFECT_KNIGHT_INCREMENT
+#    define RGBLIGHT_EFFECT_KNIGHT_INCREMENT 1
+#endif
+
 #ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET
 #    define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0
 #endif