solid_reactive_cross.h (1739B)
1 #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED 2 # if defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) 3 4 # ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS 5 RGB_MATRIX_EFFECT(SOLID_REACTIVE_CROSS) 6 # endif 7 8 # ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS 9 RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS) 10 # endif 11 12 # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS 13 14 static hsv_t SOLID_REACTIVE_CROSS_math(hsv_t hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { 15 uint16_t effect = tick + dist; 16 dx = dx < 0 ? dx * -1 : dx; 17 dy = dy < 0 ? dy * -1 : dy; 18 dx = dx * 16 > 255 ? 255 : dx * 16; 19 dy = dy * 16 > 255 ? 255 : dy * 16; 20 effect += dx > dy ? dy : dx; 21 if (effect > 255) effect = 255; 22 # ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE 23 hsv.h = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 8) >> 4); 24 # endif 25 hsv.v = qadd8(hsv.v, 255 - effect); 26 return hsv; 27 } 28 29 # ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS 30 bool SOLID_REACTIVE_CROSS(effect_params_t* params) { 31 return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); 32 } 33 # endif 34 35 # ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS 36 bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { 37 return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); 38 } 39 # endif 40 41 # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS 42 # endif // !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) 43 #endif // RGB_MATRIX_KEYREACTIVE_ENABLED