A browser source overlay for winter vibes for your Live Streams or Videos
at main 1.1 kB view raw
1import Config from "./config.js"; 2import { drawSprite, loadSprite } from "./sprite.js"; 3 4const SPRITE = await loadSprite("snowplow"); 5/** 6 * @returns {Plow} 7 */ 8export function createPlow() { 9 return { 10 x: 11 Config.plow.direction === "left" 12 ? Config.canvas.width 13 : SPRITE.width * Config.plow.scale, 14 y: Config.canvas.height - SPRITE.height * Config.plow.scale, 15 speed: Config.plow.speed, 16 direction: Config.plow.direction, 17 }; 18} 19 20/** 21 * @param {Plow} plow 22 * @param {number} delta 23 */ 24export function movePlow(plow, delta) { 25 if (plow.direction === "left") { 26 plow.x -= plow.speed * delta; 27 } else { 28 plow.x += plow.speed * delta; 29 } 30} 31 32/** 33 * @param {Plow} plow 34 * @param {CanvasRenderingContext2D} ctx 35 * @param {DOMHighResTimeStamp} timestamp 36 */ 37export function drawPlow(plow, ctx, timestamp) { 38 drawSprite(ctx, SPRITE, plow.x, plow.y, Config.plow.scale, timestamp); 39} 40 41/** @param {Plow} plow */ 42export function plowDone(plow) { 43 return plow.direction === "left" 44 ? plow.x + SPRITE.width * Config.plow.scale < 0 45 : plow.x > Config.canvas.width; 46}