UNPKG

ngx-screen-saver

Version:
36 lines 4.95 kB
import { reverseLoop } from '../../utils/reverse-loop'; import { Star } from './star'; const MAX_STARS = 100; const starsArr = []; export const stars = (p5) => { const width = p5.windowWidth; const height = p5.windowHeight; let backgroundImage; // PRELOAD p5.preload = () => { backgroundImage = p5.loadImage('assets/ngx-screen-saver/galaxy.jpg'); }; // SETUP p5.setup = () => { p5.createCanvas(width, height).addClass('ngx-screen-saver'); p5.image(backgroundImage, 0, 0); for (let i = 0; i < MAX_STARS; i++) { const star = new Star(p5, p5.random(0, width), p5.random(0, height)); starsArr.push(star); } }; // DRAW p5.draw = () => { p5.image(backgroundImage, 0, 0); reverseLoop(starsArr, (star, idx) => { star.update(); star.draw(); if (star.destroy) { starsArr.splice(idx, 1); const newStar = new Star(p5, p5.random(0, width), p5.random(0, height)); starsArr.push(newStar); } }); }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NyZWVuLXNhdmVyL3NyYy9saWIvc2NyZWVuLXNhdmVycy9zdGFycy9zdGFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQVcsRUFBRSxDQUFDO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQU0sRUFBRSxFQUFFO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUUvQixJQUFJLGVBQXlCLENBQUM7SUFFOUIsVUFBVTtJQUNWLEVBQUUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLGVBQWUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDO0lBRUYsUUFBUTtJQUNSLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ2QsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFNUQsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFckUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUMsQ0FBQztJQUVGLE9BQU87SUFDUCxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNiLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUV4RSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcDUgZnJvbSAncDUnO1xyXG5pbXBvcnQgeyByZXZlcnNlTG9vcCB9IGZyb20gJy4uLy4uL3V0aWxzL3JldmVyc2UtbG9vcCc7XHJcbmltcG9ydCB7IFN0YXIgfSBmcm9tICcuL3N0YXInO1xyXG5cclxuY29uc3QgTUFYX1NUQVJTID0gMTAwO1xyXG5jb25zdCBzdGFyc0FycjogU3RhcltdID0gW107XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnMgPSAocDU6IHA1KSA9PiB7XHJcbiAgY29uc3Qgd2lkdGggPSBwNS53aW5kb3dXaWR0aDtcclxuICBjb25zdCBoZWlnaHQgPSBwNS53aW5kb3dIZWlnaHQ7XHJcblxyXG4gIGxldCBiYWNrZ3JvdW5kSW1hZ2U6IHA1LkltYWdlO1xyXG5cclxuICAvLyBQUkVMT0FEXHJcbiAgcDUucHJlbG9hZCA9ICgpID0+IHtcclxuICAgIGJhY2tncm91bmRJbWFnZSA9IHA1LmxvYWRJbWFnZSgnYXNzZXRzL25neC1zY3JlZW4tc2F2ZXIvZ2FsYXh5LmpwZycpO1xyXG4gIH07XHJcblxyXG4gIC8vIFNFVFVQXHJcbiAgcDUuc2V0dXAgPSAoKSA9PiB7XHJcbiAgICBwNS5jcmVhdGVDYW52YXMod2lkdGgsIGhlaWdodCkuYWRkQ2xhc3MoJ25neC1zY3JlZW4tc2F2ZXInKTtcclxuXHJcbiAgICBwNS5pbWFnZShiYWNrZ3JvdW5kSW1hZ2UsIDAsIDApO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1NUQVJTOyBpKyspIHtcclxuICAgICAgY29uc3Qgc3RhciA9IG5ldyBTdGFyKHA1LCBwNS5yYW5kb20oMCwgd2lkdGgpLCBwNS5yYW5kb20oMCwgaGVpZ2h0KSk7XHJcblxyXG4gICAgICBzdGFyc0Fyci5wdXNoKHN0YXIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIERSQVdcclxuICBwNS5kcmF3ID0gKCkgPT4ge1xyXG4gICAgcDUuaW1hZ2UoYmFja2dyb3VuZEltYWdlLCAwLCAwKTtcclxuXHJcbiAgICByZXZlcnNlTG9vcChzdGFyc0FyciwgKHN0YXIsIGlkeCkgPT4ge1xyXG4gICAgICBzdGFyLnVwZGF0ZSgpO1xyXG4gICAgICBzdGFyLmRyYXcoKTtcclxuXHJcbiAgICAgIGlmIChzdGFyLmRlc3Ryb3kpIHtcclxuICAgICAgICBzdGFyc0Fyci5zcGxpY2UoaWR4LCAxKTtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3U3RhciA9IG5ldyBTdGFyKHA1LCBwNS5yYW5kb20oMCwgd2lkdGgpLCBwNS5yYW5kb20oMCwgaGVpZ2h0KSk7XHJcblxyXG4gICAgICAgIHN0YXJzQXJyLnB1c2gobmV3U3Rhcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH07XHJcbn07XHJcbiJdfQ==