| 578 | } |
| 579 | |
| 580 | uint8_t getFirePaletteIndex(uint32_t millis32, int width, int max_width, int height, int max_height, |
| 581 | uint32_t y_speed) { |
| 582 | uint16_t scale = fireScaleXY.as<uint16_t>(); |
| 583 | |
| 584 | float xf = (float)width / (float)max_width; |
| 585 | uint8_t x = (uint8_t)(xf * 255); |
| 586 | |
| 587 | uint32_t cosx = cos8(x); |
| 588 | uint32_t sinx = sin8(x); |
| 589 | |
| 590 | float trig_scale = scale * fireScaleX.value(); |
| 591 | cosx *= trig_scale; |
| 592 | sinx *= trig_scale; |
| 593 | |
| 594 | uint32_t y = height * scale + y_speed; |
| 595 | |
| 596 | uint16_t z = millis32 / fireInvSpeedZ.as<uint16_t>(); |
| 597 | |
| 598 | uint16_t noise16 = inoise16(cosx << 8, sinx << 8, y << 8, z << 8); |
| 599 | |
| 600 | uint8_t noise_val = noise16 >> 8; |
| 601 | |
| 602 | int8_t subtraction_factor = abs8(height - (max_height - 1)) * 255 / |
| 603 | (max_height - 1); |
| 604 | |
| 605 | return qsub8(noise_val, subtraction_factor); |
| 606 | } |
| 607 | |
| 608 | void fillFrameBufferFire(uint32_t now) { |
| 609 | fl::CRGBPalette16 myPal = getFirePalette(); |
no test coverage detected