summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorフィルターペーパー <76888457+filterpaper@users.noreply.github.com>2025-09-10 16:41:29 +0800
committerGitHub <noreply@github.com>2025-09-10 01:41:29 -0700
commit633479ced5a70076cf6906f3ecf7d199928bdb55 (patch)
tree692bb575382f4755888ff6db0ef0eff24b73f67d /quantum
parenta91de722467afc2a080c8c1a7a6f904f1f361c07 (diff)
Restructure Pixel Rain interval code (#25516)
Co-authored-by: Joel Challis <git@zvecr.com>
Diffstat (limited to 'quantum')
-rw-r--r--quantum/rgb_matrix/animations/pixel_rain_anim.h25
1 files changed, 16 insertions, 9 deletions
diff --git a/quantum/rgb_matrix/animations/pixel_rain_anim.h b/quantum/rgb_matrix/animations/pixel_rain_anim.h
index c0370831d8..f92a285b67 100644
--- a/quantum/rgb_matrix/animations/pixel_rain_anim.h
+++ b/quantum/rgb_matrix/animations/pixel_rain_anim.h
@@ -6,20 +6,27 @@ RGB_MATRIX_EFFECT(PIXEL_RAIN)
6# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS 6# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
7 7
8static bool PIXEL_RAIN(effect_params_t* params) { 8static bool PIXEL_RAIN(effect_params_t* params) {
9 static fast_timer_t timer = 0; 9 static uint8_t index = 0;
10 static uint16_t index = RGB_MATRIX_LED_COUNT + 1; 10 static uint32_t timer = 0;
11 11
12 if ((params->iter == 0) && (timer_elapsed_fast(timer) > (320 - rgb_matrix_config.speed))) { 12 if (params->iter == 0 && params->init) {
13 index = random8_max(RGB_MATRIX_LED_COUNT); 13 index = random8_max(RGB_MATRIX_LED_COUNT);
14 timer = timer_read_fast();
15 } 14 }
16 15
17 RGB_MATRIX_USE_LIMITS(led_min, led_max); 16 RGB_MATRIX_USE_LIMITS(led_min, led_max);
18 if (led_min <= index && index < led_max && HAS_ANY_FLAGS(g_led_config.flags[index], params->flags)) { 17 if (timer < g_rgb_timer) { // Execute when the delay period has elapsed
19 hsv_t hsv = (random8() & 2) ? (hsv_t){0, 0, 0} : (hsv_t){random8(), random8_min_max(127, 255), rgb_matrix_config.hsv.v}; 18 if (led_min <= index && index < led_max && HAS_ANY_FLAGS(g_led_config.flags[index], params->flags)) {
20 rgb_t rgb = rgb_matrix_hsv_to_rgb(hsv); 19 // Assign a random HSV color to hsv with 50% probability, otherwise assign zeroed hsv
21 rgb_matrix_set_color(index, rgb.r, rgb.g, rgb.b); 20 hsv_t hsv = (random8() & 2) ? (hsv_t){0, 0, 0} : (hsv_t){random8(), random8_min_max(127, 255), rgb_matrix_config.hsv.v};
22 index = RGB_MATRIX_LED_COUNT + 1; 21 rgb_t rgb = rgb_matrix_hsv_to_rgb(hsv);
22 rgb_matrix_set_color(index, rgb.r, rgb.g, rgb.b);
23 }
24 if (!rgb_matrix_check_finished_leds(led_max)) {
25 // In the final LED range, update the LED index and advance the timer for
26 // the next cycle, scaling the delay between 256–2048 ms based on speed.
27 index = random8_max(RGB_MATRIX_LED_COUNT);
28 timer = g_rgb_timer + (2048 - scale16by8(1792, rgb_matrix_config.speed));
29 }
23 } 30 }
24 return rgb_matrix_check_finished_leds(led_max); 31 return rgb_matrix_check_finished_leds(led_max);
25} 32}