UNPKG

bouncehouse

Version:

A toolbox for building WebGl experiences

2 lines (1 loc) 1.44 kB
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).bouncehouse={})}(this,(function(t){"use strict";t.Render2D=class{constructor(t,i){this.options=i,this.canvas=t,this.time=0,this.context=this.canvas.getContext("2d"),this.width=i.width*devicePixelRatio,this.height=i.height*devicePixelRatio,this.mouseX,this.mouseY,this.options.trackMouse&&this.trackMousePos(),this.init()}init(){this.canvas.width=this.width,this.canvas.height=this.height,this.canvas.style.setProperty("width",`${this.options.width}px`),this.canvas.style.setProperty("height",`${this.options.height}px`),requestAnimationFrame(this.loop.bind(this))}loop(t){t/=1e3,this.time=t,this.draw(this.context,this.time,this.canvas),requestAnimationFrame(this.loop.bind(this))}draw(t,i,e){}trackMousePos(){this.canvas.addEventListener("mousemove",(t=>{this.mouseX=t.layerX*devicePixelRatio,this.mouseY=t.layerY*devicePixelRatio}))}addGradient(t,i){const e=this.context.createLinearGradient(i.startX,i.startY,i.endX,i.endY);t.forEach((t=>{e.addColorStop(t[0],t[1])})),this.context.fillStyle=e,this.context.fillRect(i.startX,i.startY,i.height,i.width)}addArc(t,i,e,s,o=0,h=2*Math.PI,n=!1){this.context.fillStyle=s,this.context.beginPath(),this.context.arc(t,i,e,o,h,n),this.context.fill()}},Object.defineProperty(t,"__esModule",{value:!0})}));