38 lines
825 B
C++
38 lines
825 B
C++
#include "effect_dvd.h"
|
|
#include "my_fastled.h"
|
|
|
|
void DvdEffect::loop(uint16_t ms) {
|
|
bool dir_changed = false;
|
|
EVERY_N_MILLISECONDS( 250 ) {
|
|
_x += _x_dir;
|
|
_y += _y_dir;
|
|
|
|
if (_x == 0 || _x + settings.effects.dvd.width >= window->width) {
|
|
_x_dir = -_x_dir;
|
|
dir_changed = true;
|
|
}
|
|
if (_y == 0 || _y + settings.effects.dvd.height >= window->height) {
|
|
_y_dir = -_y_dir;
|
|
dir_changed = true;
|
|
}
|
|
}
|
|
|
|
window->clear();
|
|
|
|
for (int x=0; x<settings.effects.dvd.width; x++) for (int y=0; y<settings.effects.dvd.height; y++) {
|
|
window->setPixel(_x + x, _y + y, (CRGB*)&_color);
|
|
}
|
|
|
|
if (dir_changed) _color = (CRGB)CHSV(random8(), 255, 255);
|
|
}
|
|
|
|
bool DvdEffect::can_be_shown_with_clock() { return true; }
|
|
|
|
DvdEffect::DvdEffect() {
|
|
_color = CHSV(random8(), 255, 255);
|
|
}
|
|
|
|
DvdEffect::~DvdEffect() {
|
|
delete window;
|
|
}
|