1515#include " fcn_declare.h"
1616
1717#if !(defined(WLED_DISABLE_PARTICLESYSTEM2D) && defined(WLED_DISABLE_PARTICLESYSTEM1D))
18- #include " FXparticleSystem.h"
18+ #include " FXparticleSystem.h" // include particle system code only if at least one system is enabled
19+ #ifdef WLED_DISABLE_PARTICLESYSTEM2D
20+ #define WLED_PS_DONT_REPLACE_2D_FX
21+ #endif
22+ #ifdef WLED_DISABLE_PARTICLESYSTEM1D
23+ #define WLED_PS_DONT_REPLACE_1D_FX
24+ #endif
1925 #ifdef ESP8266
2026 #if !defined(WLED_DISABLE_PARTICLESYSTEM2D) && !defined(WLED_DISABLE_PARTICLESYSTEM1D)
21- #error ESP8266 does not support 1D and 2D particle systems simultaneously. Please disable one of them.
27+ #error ESP8266 does not support 1D and 2D particle systems simultaneously. Please disable one of them.
2228 #endif
2329 #endif
2430#else
25- #define WLED_PS_DONT_REPLACE_FX
31+ #define WLED_PS_DONT_REPLACE_1D_FX
32+ #define WLED_PS_DONT_REPLACE_2D_FX
33+ #endif
34+ #ifdef WLED_PS_DONT_REPLACE_FX
35+ #define WLED_PS_DONT_REPLACE_1D_FX
36+ #define WLED_PS_DONT_REPLACE_2D_FX
2637#endif
2738
2839 // ////////////
@@ -768,7 +779,6 @@ uint16_t mode_dissolve_random(void) {
768779}
769780static const char _data_FX_MODE_DISSOLVE_RANDOM[] PROGMEM = " Dissolve Rnd@Repeat speed,Dissolve speed;,!;!" ;
770781
771-
772782/*
773783 * Blinks one LED at a time.
774784 * Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
@@ -790,7 +800,6 @@ uint16_t mode_sparkle(void) {
790800}
791801static const char _data_FX_MODE_SPARKLE[] PROGMEM = " Sparkle@!,,,,,,Overlay;!,!;!;;m12=0" ;
792802
793-
794803/*
795804 * Lights all LEDs in the color. Flashes single col 1 pixels randomly. (List name: Sparkle Dark)
796805 * Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
@@ -1765,7 +1774,6 @@ uint16_t mode_tricolor_fade(void) {
17651774}
17661775static const char _data_FX_MODE_TRICOLOR_FADE[] PROGMEM = " Tri Fade@!;1,2,3;!" ;
17671776
1768- #ifdef WLED_PS_DONT_REPLACE_FX
17691777/*
17701778 * Creates random comets
17711779 * Custom mode by Keith Lord: https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/MultiComet.h
@@ -1804,7 +1812,6 @@ uint16_t mode_multi_comet(void) {
18041812}
18051813static const char _data_FX_MODE_MULTI_COMET[] PROGMEM = " Multi Comet@!,Fade;!,!;!;1" ;
18061814#undef MAX_COMETS
1807- #endif // WLED_PS_DONT_REPLACE_FX
18081815
18091816/*
18101817 * Running random pixels ("Stream 2")
@@ -2131,7 +2138,7 @@ uint16_t mode_palette() {
21312138}
21322139static const char _data_FX_MODE_PALETTE[] PROGMEM = " Palette@Shift,Size,Rotation,,,Animate Shift,Animate Rotation,Anamorphic;;!;12;ix=112,c1=0,o1=1,o2=0,o3=1" ;
21332140
2134- #ifdef WLED_PS_DONT_REPLACE_FX
2141+ #if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
21352142// WLED limitation: Analog Clock overlay will NOT work when Fire2012 is active
21362143// Fire2012 by Mark Kriegsman, July 2012
21372144// as part of "Five Elements" shown here: http://youtu.be/knWiGsmgycY
@@ -2218,7 +2225,7 @@ uint16_t mode_fire_2012() {
22182225 return FRAMETIME;
22192226}
22202227static const char _data_FX_MODE_FIRE_2012[] PROGMEM = " Fire 2012@Cooling,Spark rate,,2D Blur,Boost;;!;1;pal=35,sx=64,ix=160,m12=1,c2=128" ; // bars
2221- #endif // WLED_PS_DONT_REPLACE_FX
2228+ #endif // WLED_PS_DONT_REPLACE_x_FX
22222229
22232230// colored stripes pulsing at a defined Beats-Per-Minute (BPM)
22242231uint16_t mode_bpm () {
@@ -3069,7 +3076,7 @@ uint16_t mode_bouncing_balls(void) {
30693076}
30703077static const char _data_FX_MODE_BOUNCINGBALLS[] PROGMEM = " Bouncing Balls@Gravity,# of balls,,,,,Overlay;!,!,!;!;1;m12=1" ; // bar
30713078
3072- #ifdef WLED_PS_DONT_REPLACE_FX
3079+ #ifdef WLED_PS_DONT_REPLACE_1D_FX
30733080/*
30743081 * bouncing balls on a track track Effect modified from Aircoookie's bouncing balls
30753082 * Courtesy of pjhatch (https://github.com/pjhatch)
@@ -3169,7 +3176,7 @@ static uint16_t rolling_balls(void) {
31693176 return FRAMETIME;
31703177}
31713178static const char _data_FX_MODE_ROLLINGBALLS[] PROGMEM = " Rolling Balls@!,# of balls,,,,Collide,Overlay,Trails;!,!,!;!;1;m12=1" ; // bar
3172- #endif // WLED_PS_DONT_REPLACE_FX
3179+ #endif // WLED_PS_DONT_REPLACE_1D_FX
31733180
31743181/*
31753182* Sinelon stolen from FASTLED examples
@@ -3226,7 +3233,6 @@ uint16_t mode_sinelon_rainbow(void) {
32263233}
32273234static const char _data_FX_MODE_SINELON_RAINBOW[] PROGMEM = " Sinelon Rainbow@!,Trail;,,!;!" ;
32283235
3229-
32303236// utility function that will add random glitter to SEGMENT
32313237void glitter_base (uint8_t intensity, uint32_t col = ULTRAWHITE) {
32323238 if (intensity > hw_random8 ()) SEGMENT.setPixelColor (hw_random16 (SEGLEN), col);
@@ -3431,7 +3437,7 @@ uint16_t mode_candle_multi()
34313437}
34323438static const char _data_FX_MODE_CANDLE_MULTI[] PROGMEM = " Candle Multi@!,!;!,!;!;;sx=96,ix=224,pal=0" ;
34333439
3434- #ifdef WLED_PS_DONT_REPLACE_FX
3440+ #ifdef WLED_PS_DONT_REPLACE_1D_FX
34353441/*
34363442/ Fireworks in starburst effect
34373443/ based on the video: https://www.reddit.com/r/arduino/comments/c3sd46/i_made_this_fireworks_effect_for_my_led_strips/
@@ -3563,9 +3569,9 @@ uint16_t mode_starburst(void) {
35633569}
35643570#undef STARBURST_MAX_FRAG
35653571static const char _data_FX_MODE_STARBURST[] PROGMEM = " Fireworks Starburst@Chance,Fragments,,,,,Overlay;,!;!;;pal=11,m12=0" ;
3566- #endif // WLED_PS_DONT_REPLACE_FX
3572+ #endif // WLED_PS_DONT_REPLACE_1DFX
35673573
3568- # ifdef WLED_PS_DONT_REPLACE_FX
3574+ # if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
35693575/*
35703576 * Exploding fireworks effect
35713577 * adapted from: http://www.anirama.com/1000leds/1d-fireworks/
@@ -3703,7 +3709,7 @@ uint16_t mode_exploding_fireworks(void)
37033709}
37043710#undef MAX_SPARKS
37053711static const char _data_FX_MODE_EXPLODING_FIREWORKS[] PROGMEM = " Fireworks 1D@Gravity,Firing side;!,!;!;12;pal=11,ix=128" ;
3706- #endif // WLED_PS_DONT_REPLACE_FX
3712+ #endif // WLED_PS_DONT_REPLACE_x_FX
37073713
37083714/*
37093715 * Drip Effect
@@ -4351,7 +4357,7 @@ static const char _data_FX_MODE_CHUNCHUN[] PROGMEM = "Chunchun@!,Gap size;!,!;!"
43514357 #define SPOT_MAX_COUNT 49 // Number of simultaneous waves
43524358#endif
43534359
4354- #ifdef WLED_PS_DONT_REPLACE_FX
4360+ #ifdef WLED_PS_DONT_REPLACE_1D_FX
43554361// 13 bytes
43564362typedef struct Spotlight {
43574363 float speed;
@@ -4485,7 +4491,7 @@ uint16_t mode_dancing_shadows(void)
44854491 return FRAMETIME;
44864492}
44874493static const char _data_FX_MODE_DANCING_SHADOWS[] PROGMEM = " Dancing Shadows@!,# of shadows;!;!" ;
4488- #endif // WLED_PS_DONT_REPLACE_FX
4494+ #endif // WLED_PS_DONT_REPLACE_1D_FX
44894495
44904496/*
44914497 Imitates a washing machine, rotating same waves forward, then pause, then backward.
@@ -6046,7 +6052,7 @@ uint16_t mode_2Dcrazybees(void) {
60466052static const char _data_FX_MODE_2DCRAZYBEES[] PROGMEM = " Crazy Bees@!,Blur,,,,Smear;;!;2;pal=11,ix=0" ;
60476053#undef MAX_BEES
60486054
6049- #ifdef WLED_PS_DONT_REPLACE_FX
6055+ #ifdef WLED_PS_DONT_REPLACE_2D_FX
60506056// ///////////////////////
60516057// 2D Ghost Rider //
60526058// ///////////////////////
@@ -6234,7 +6240,7 @@ uint16_t mode_2Dfloatingblobs(void) {
62346240}
62356241static const char _data_FX_MODE_2DBLOBS[] PROGMEM = " Blobs@!,# blobs,Blur,Trail;!;!;2;c1=8" ;
62366242#undef MAX_BLOBS
6237- #endif // WLED_PS_DONT_REPLACE_FX
6243+ #endif // WLED_PS_DONT_REPLACE_2D_FX
62386244
62396245// //////////////////////////
62406246// 2D Scrolling text //
@@ -10886,16 +10892,18 @@ void WS2812FX::setupEffectData() {
1088610892 addEffect (FX_MODE_SPOTS, &mode_spots, _data_FX_MODE_SPOTS);
1088710893 addEffect (FX_MODE_SPOTS_FADE, &mode_spots_fade, _data_FX_MODE_SPOTS_FADE);
1088810894 addEffect (FX_MODE_COMET, &mode_comet, _data_FX_MODE_COMET);
10889- #ifdef WLED_PS_DONT_REPLACE_FX
10890- addEffect (FX_MODE_MULTI_COMET, &mode_multi_comet, _data_FX_MODE_MULTI_COMET);
10891- addEffect (FX_MODE_ROLLINGBALLS, &rolling_balls, _data_FX_MODE_ROLLINGBALLS);
10895+ #if defined(WLED_PS_DONT_REPLACE_1D_FX) || defined(WLED_PS_DONT_REPLACE_2D_FX)
10896+ addEffect (FX_MODE_FIRE_2012, &mode_fire_2012, _data_FX_MODE_FIRE_2012);
10897+ addEffect (FX_MODE_EXPLODING_FIREWORKS, &mode_exploding_fireworks, _data_FX_MODE_EXPLODING_FIREWORKS);
10898+ #endif
1089210899 addEffect (FX_MODE_SPARKLE, &mode_sparkle, _data_FX_MODE_SPARKLE);
1089310900 addEffect (FX_MODE_GLITTER, &mode_glitter, _data_FX_MODE_GLITTER);
1089410901 addEffect (FX_MODE_SOLID_GLITTER, &mode_solid_glitter, _data_FX_MODE_SOLID_GLITTER);
10902+ addEffect (FX_MODE_MULTI_COMET, &mode_multi_comet, _data_FX_MODE_MULTI_COMET);
10903+ #ifdef WLED_PS_DONT_REPLACE_1D_FX
10904+ addEffect (FX_MODE_ROLLINGBALLS, &rolling_balls, _data_FX_MODE_ROLLINGBALLS);
1089510905 addEffect (FX_MODE_STARBURST, &mode_starburst, _data_FX_MODE_STARBURST);
1089610906 addEffect (FX_MODE_DANCING_SHADOWS, &mode_dancing_shadows, _data_FX_MODE_DANCING_SHADOWS);
10897- addEffect (FX_MODE_FIRE_2012, &mode_fire_2012, _data_FX_MODE_FIRE_2012);
10898- addEffect (FX_MODE_EXPLODING_FIREWORKS, &mode_exploding_fireworks, _data_FX_MODE_EXPLODING_FIREWORKS);
1089910907 #endif
1090010908 addEffect (FX_MODE_CANDLE, &mode_candle, _data_FX_MODE_CANDLE);
1090110909 addEffect (FX_MODE_BOUNCINGBALLS, &mode_bouncing_balls, _data_FX_MODE_BOUNCINGBALLS);
@@ -10959,7 +10967,7 @@ void WS2812FX::setupEffectData() {
1095910967 addEffect (FX_MODE_2DSPACESHIPS, &mode_2Dspaceships, _data_FX_MODE_2DSPACESHIPS);
1096010968 addEffect (FX_MODE_2DCRAZYBEES, &mode_2Dcrazybees, _data_FX_MODE_2DCRAZYBEES);
1096110969
10962- #ifdef WLED_PS_DONT_REPLACE_FX
10970+ #ifdef WLED_PS_DONT_REPLACE_2D_FX
1096310971 addEffect (FX_MODE_2DGHOSTRIDER, &mode_2Dghostrider, _data_FX_MODE_2DGHOSTRIDER);
1096410972 addEffect (FX_MODE_2DBLOBS, &mode_2Dfloatingblobs, _data_FX_MODE_2DBLOBS);
1096510973 #endif
0 commit comments