@litecanvas/utils
Version:
Utilities to help build litecanvas games
2 lines (1 loc) • 2.16 kB
JavaScript
(()=>{var f=Object.defineProperty;var g=(r,t)=>{for(var s in t)f(r,s,{get:t[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(r=!0)=>{for(let t in globalThis.utils)t!=="global"&&(r||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var a={};g(a,{ANCHOR_BOT_LEFT:()=>_,ANCHOR_BOT_RIGHT:()=>T,ANCHOR_CENTER:()=>m,ANCHOR_TOP_LEFT:()=>u,ANCHOR_TOP_RIGHT:()=>b,Actor:()=>h});var w=2*Math.PI,n=class{constructor(t=0,s=t){this.x=parseFloat(t)||0,this.y=parseFloat(s)||0}toString(){return`Vector (${this.x}, ${this.y})`}},d=r=>r instanceof n,o=(r=0,t=r)=>(d(r)&&(t=r.y,r=r.x),new n(r,t));var y=(r,t,s,e,i,c,p)=>{let x=i-Math.max(r,Math.min(i,r+s)),l=c-Math.max(t,Math.min(c,t+e));return x*x+l*l<=p*p};var m=o(.5,.5),u=o(0,0),b=o(1,0),_=o(0,1),T=o(1,1),h=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(t,s,e=u){this.sprite=t||{width:0,height:0},this.pos=s||o(0),this._o=o(e),this._s=o(1,1)}set x(t){this.pos.x=t}get x(){return this.pos.x}set y(t){this.pos.y=t}get y(){return this.pos.y}set anchor(t){this._o.x=t.x,this._o.y=t.y}get anchor(){return this._o}get width(){return this.sprite.width*this._s.x}get height(){return this.sprite.height*this._s.y}get scale(){return this._s}scaleTo(t,s=t){this._s.x=t,this._s.y=s}scaleBy(t,s=t){this._s.x*=t,this._s.y*=s}getBounds(t=!0){let s=this.sprite.width*(t?this._s.x:1),e=this.sprite.height*(t?this._s.y:1),i=this.pos.x-s*this.anchor.x,c=this.pos.y-e*this.anchor.y;return[i,c,s,e]}in(t,s,e=1){return y(...this.getBounds(),t,s,e)}col(t){return colrect(...this.getBounds(),...t.getBounds())}draw(t=globalThis,s=!0){s&&t.push(),this.transform(t),this.sprite.width&&this.sprite.height&&!this.hidden&&this.opacity>0&&this.drawImage(t),s&&t.pop()}transform(t=globalThis){t.translate(this.pos.x,this.pos.y),t.rotate(t.deg2rad(this.angle)),t.scale((this.flipX?-1:1)*this._s.x,(this.flipY?-1:1)*this._s.y)}drawImage(t=globalThis,s=!0){let e=this.anchor,i=-this.sprite.width*(this.flipX?1-e.x:e.x),c=-this.sprite.height*(this.flipY?1-e.y:e.y);s&&t.alpha(this.opacity),t.image(i,c,this.sprite)}};globalThis.utils=Object.assign(globalThis.utils||{},a);})();