@litecanvas/utils 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/actor.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var c=Object.defineProperty;var p=(s,t)=>{for(var e in t)c(s,e,{get:t[e],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(s=!0)=>{for(let t in globalThis.utils)t!=="global"&&(s||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var l={};p(l,{ANCHOR_BOT_LEFT:()=>d,ANCHOR_BOT_RIGHT:()=>y,ANCHOR_CENTER:()=>b,ANCHOR_TOP_LEFT:()=>m,ANCHOR_TOP_RIGHT:()=>f,Actor:()=>u});var x=2*Math.PI,i=class{x;y;constructor(t=0,e=t){this.x=t,this.y=e}toString(){return`Vector (${this.x}, ${this.y})`}},h=s=>s instanceof i,a=(s=0,t=s)=>(h(s)&&(t=s.y,s=s.x),new i(s,t));var b=a(.5,.5),m=a(0,0),f=a(1,0),d=a(0,1),y=a(1,1),u=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(t,e,r=m){this.sprite=t,this.pos=e||a(0),this._o=a(r),this._s=a(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,e=t){this._s.x=t,this._s.y=e}scaleBy(t,e=t){this._s.x*=t,this._s.y*=e}getBounds(t=!0){let e=this.sprite.width*(t?this._s.x:1),r=this.sprite.height*(t?this._s.y:1),n=this.pos.x-e*this.anchor.x,o=this.pos.y-r*this.anchor.y;return[n,o,e,r]}draw(t=globalThis,e=!0){this.hidden||this.opacity<=0||(e&&t.push(),this.transform(t),this.drawImage(t),e&&t.pop())}transform(t){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,e=!0){let r=this.anchor,n=-this.sprite.width*(this.flipX?1-r.x:r.x),o=-this.sprite.height*(this.flipY?1-r.y:r.y);e&&t.alpha(this.opacity),t.image(n,o,this.sprite)}};globalThis.utils=Object.assign(globalThis.utils||{},l);})();
1
+ (()=>{var c=Object.defineProperty;var p=(r,e)=>{for(var t in e)c(r,t,{get:e[t],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(r=!0)=>{for(let e in globalThis.utils)e!=="global"&&(r||globalThis[e]===void 0)&&(globalThis[e]=globalThis.utils[e])};var m={};p(m,{ANCHOR_BOT_LEFT:()=>d,ANCHOR_BOT_RIGHT:()=>y,ANCHOR_CENTER:()=>h,ANCHOR_TOP_LEFT:()=>l,ANCHOR_TOP_RIGHT:()=>f,Actor:()=>u});var x=2*Math.PI,n=class{x;y;constructor(e=0,t=e){this.x=e,this.y=t}toString(){return`Vector (${this.x}, ${this.y})`}},b=r=>r instanceof n,a=(r=0,e=r)=>(b(r)&&(e=r.y,r=r.x),new n(r,e));var h=a(.5,.5),l=a(0,0),f=a(1,0),d=a(0,1),y=a(1,1),u=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(e,t,s=l){this.sprite=e,this.pos=t||a(0),this._o=a(s),this._s=a(1,1)}set x(e){this.pos.x=e}get x(){return this.pos.x}set y(e){this.pos.y=e}get y(){return this.pos.y}set anchor(e){this._o.x=e.x,this._o.y=e.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(e,t=e){this._s.x=e,this._s.y=t}scaleBy(e,t=e){this._s.x*=e,this._s.y*=t}getBounds(e=!0){let t=this.sprite.width*(e?this._s.x:1),s=this.sprite.height*(e?this._s.y:1),i=this.pos.x-t*this.anchor.x,o=this.pos.y-s*this.anchor.y;return[i,o,t,s]}draw(e=globalThis,t=!0){this.hidden||this.opacity<=0||(t&&e.push(),this.transform(e),this.drawImage(e),t&&e.pop())}transform(e){e.translate(this.pos.x,this.pos.y),e.rotate(e.deg2rad(this.angle)),e.scale((this.flipX?-1:1)*this._s.x,(this.flipY?-1:1)*this._s.y)}drawImage(e,t=!0){let s=this.anchor,i=-this.sprite.width*(this.flipX?1-s.x:s.x),o=-this.sprite.height*(this.flipY?1-s.y:s.y);t&&e.alpha(this.opacity),e.image(i,o,this.sprite)}};globalThis.utils=Object.assign(globalThis.utils||{},m);})();
package/dist/all.js CHANGED
@@ -103,8 +103,7 @@
103
103
  vecRound: () => vecRound,
104
104
  vecSet: () => vecSet,
105
105
  vecSetMag: () => vecSetMag,
106
- vecSub: () => vecSub,
107
- wave: () => wave_default
106
+ vecSub: () => vecSub
108
107
  });
109
108
 
110
109
  // src/camera/index.js
@@ -127,11 +126,6 @@
127
126
  rotation = 0;
128
127
  /** @type {number} */
129
128
  scale = 1;
130
- _shake = {
131
- x: 0,
132
- y: 0,
133
- removeListener: null
134
- };
135
129
  /**
136
130
  * @param {LitecanvasInstance} engine
137
131
  */
@@ -139,12 +133,14 @@
139
133
  this._engine = engine || globalThis;
140
134
  this.ox = ox;
141
135
  this.oy = oy;
142
- this.resize(
143
- width || this._engine.WIDTH - ox,
144
- height || this._engine.HEIGHT - oy
145
- );
136
+ this.resize(width || this._engine.W - ox, height || this._engine.H - oy);
146
137
  this.x = this.width / 2;
147
138
  this.y = this.height / 2;
139
+ this._shake = {
140
+ x: 0,
141
+ y: 0,
142
+ removeListener: null
143
+ };
148
144
  }
149
145
  resize(width, height) {
150
146
  this.width = width;
@@ -246,31 +242,6 @@
246
242
  getBounds() {
247
243
  return [this.ox, this.oy, this.width, this.height];
248
244
  }
249
- /**
250
- * Check if a rect is inside of the camera.
251
- *
252
- * @param {number} x
253
- * @param {number} y
254
- * @param {number} width
255
- * @param {number} height
256
- * @returns {boolean}
257
- */
258
- viewing(x, y, width, height) {
259
- const cameraX = this.width / 2 - this.x;
260
- const cameraY = this.height / 2 - this.y;
261
- const cameraWidth = this.width / this.scale;
262
- const cameraHeight = this.height / this.scale;
263
- return this._engine.colrect(
264
- x,
265
- y,
266
- width,
267
- height,
268
- cameraX,
269
- cameraY,
270
- cameraWidth,
271
- cameraHeight
272
- );
273
- }
274
245
  /**
275
246
  * Shake the camera
276
247
  *
@@ -935,9 +906,6 @@
935
906
  // src/math/diff.js
936
907
  var diff_default = (a, b) => Math.abs(b - a) || 0;
937
908
 
938
- // src/math/wave.js
939
- var wave_default = (lower, higher, t, fn = Math.sin) => lower + (fn(t) + 1) / 2 * (higher - lower);
940
-
941
909
  // src/math/fract.js
942
910
  var fract_default = (value) => value % 1 || 0;
943
911
 
@@ -1334,11 +1302,12 @@
1334
1302
  }
1335
1303
  /**
1336
1304
  * Sets a seed for the Perlin noise generator, ensuring deterministic results.
1305
+ *
1337
1306
  * @param {number} value - Seed value.
1338
1307
  */
1339
1308
  noiseSeed(value = null) {
1340
1309
  if (value != null) {
1341
- this._e.seed(value);
1310
+ this._e.rseed(value);
1342
1311
  }
1343
1312
  const random = this._e.rand || Math.random;
1344
1313
  for (let i = 0; i < PERLIN_SIZE + 1; i++) {
package/dist/all.min.js CHANGED
@@ -1,3 +1,3 @@
1
- (()=>{var Mt=Object.defineProperty;var It=(e,t)=>{for(var s in t)Mt(e,s,{get:t[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(e=!0)=>{for(let t in globalThis.utils)t!=="global"&&(e||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var z={};It(z,{ANCHOR_BOT_LEFT:()=>te,ANCHOR_BOT_RIGHT:()=>ee,ANCHOR_CENTER:()=>Qt,ANCHOR_TOP_LEFT:()=>J,ANCHOR_TOP_RIGHT:()=>Jt,Actor:()=>C,BACK_IN:()=>ne,BACK_IN_OUT:()=>le,BACK_OUT:()=>oe,BOUNCE_IN:()=>ct,BOUNCE_IN_OUT:()=>me,BOUNCE_OUT:()=>v,Camera:()=>y,DOWN:()=>Zt,EASE_IN:()=>re,EASE_IN_OUT:()=>ae,EASE_OUT:()=>ie,ELASTIC_IN:()=>he,ELASTIC_IN_OUT:()=>ce,ELASTIC_OUT:()=>ue,Grid:()=>M,LEFT:()=>Kt,LINEAR:()=>ut,Noise:()=>Y,ONE:()=>qt,RIGHT:()=>$t,TypedGrid:()=>P,UP:()=>Vt,Vector:()=>F,ZERO:()=>Q,advance:()=>rt,choose:()=>Ft,colcirc:()=>W,colrect:()=>B,diff:()=>tt,dist:()=>at,flipImage:()=>ft,fract:()=>st,head:()=>wt,intersection:()=>E,last:()=>Tt,lerpAngle:()=>ht,mag:()=>nt,makeCircle:()=>xt,makeRectangle:()=>_t,mean:()=>ot,median:()=>lt,mod:()=>it,range:()=>gt,resolverect:()=>U,scaleImage:()=>dt,shuffle:()=>yt,sum:()=>A,tail:()=>Et,tintImage:()=>bt,tween:()=>se,vec:()=>o,vecAbs:()=>zt,vecAdd:()=>L,vecAngle:()=>Ct,vecAngleBetween:()=>Rt,vecCeil:()=>Xt,vecClamp:()=>Wt,vecCross:()=>vt,vecDist:()=>Ot,vecDist2:()=>St,vecDiv:()=>I,vecDot:()=>K,vecEq:()=>D,vecFloor:()=>Ut,vecIsZero:()=>jt,vecLerp:()=>Nt,vecLimit:()=>Lt,vecMag:()=>$,vecMag2:()=>Z,vecMove:()=>Gt,vecMult:()=>w,vecNorm:()=>S,vecRand:()=>Yt,vecReflect:()=>Pt,vecRotate:()=>Ht,vecRound:()=>Bt,vecSet:()=>V,vecSetMag:()=>Dt,vecSub:()=>O,wave:()=>et});var y=class{_engine=null;x=0;y=0;ox=0;oy=0;width=0;height=0;rotation=0;scale=1;_shake={x:0,y:0,removeListener:null};constructor(t=null,s=0,r=0,i=null,a=null){this._engine=t||globalThis,this.ox=s,this.oy=r,this.resize(i||this._engine.WIDTH-s,a||this._engine.HEIGHT-r),this.x=this.width/2,this.y=this.height/2}resize(t,s){this.width=t,this.height=s,this._engine.emit("camera-resized",this)}start(t=!1){if(this._engine.push(),t){let i=path();i.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(i)}let s=this.ox+this.width/2,r=this.oy+this.height/2;this._engine.translate(s,r),this._engine.scale(this.scale),this._engine.rotate(this.rotation),this._engine.translate(-this.x+this._shake.x,-this.y+this._shake.y)}end(){this._engine.pop()}lookAt(t,s){this.x=t,this.y=s}move(t,s){this.x+=t,this.y+=s}zoom(t){this.scale*=t}zoomTo(t){this.scale=t}rotate(t){this.rotation+=t}rotateTo(t){this.rotation=t}getWorldPoint(t,s,r={}){let i=Math.cos(-this.rotation),a=Math.sin(-this.rotation);return t=(t-this.width/2-this.ox)/this.scale,s=(s-this.height/2-this.oy)/this.scale,r.x=i*t-a*s+this.x,r.y=a*t+i*s+this.y,r}getCameraPoint(t,s,r={}){let i=Math.cos(-this.rotation),a=Math.sin(-this.rotation);return t=t-this.x,s=s-this.y,t=i*t-a*s,s=a*t+i*s,r.x=t*this.scale+this.width/2+this.ox,r.y=s*this.scale+this.height/2+this.oy,r}getBounds(){return[this.ox,this.oy,this.width,this.height]}viewing(t,s,r,i){let a=this.width/2-this.x,n=this.height/2-this.y,l=this.width/this.scale,h=this.height/this.scale;return this._engine.colrect(t,s,r,i,a,n,l,h)}shake(t=1,s=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",r=>{this._shake.x=this._engine.randi(-t,t),this._shake.y=this._engine.randi(-t,t),s-=r,s<=0&&this.unshake()}))}unshake(){this.shaking&&(this._shake.removeListener(),this._shake.removeListener=null,this._shake.x=this._shake.y=0)}get shaking(){return this._shake.removeListener!==null}};var E=(e,t,s,r,i,a,n,l)=>{let h=Math.max(e,i),b=Math.min(e+s,i+n)-h,c=Math.max(t,a),x=Math.min(t+r,a+l)-c;return[h,c,b,x]};var U=(e,t,s,r,i,a,n,l)=>{let[h,b,c,x]=E(e,t,s,r,i,a,n,l),d="",g=e,u=t;return c<x?e<i?(d="right",g=i-s):(d="left",g=i+n):t<a?(d="bottom",u=a-r):(d="top",u=a+l),{direction:d,x:g,y:u}};var B=(e,t,s,r,i,a,n,l)=>e<i+n&&e+s>i&&t<a+l&&t+r>a;var W=(e,t,s,r,i,a)=>(r-e)*(r-e)+(i-t)*(i-t)<=(s+a)*(s+a);var M=class e{_w;_h;_c;constructor(t,s,r=[]){this._w=Math.max(1,~~t),this._h=Math.max(1,~~s),this._c=r}[Symbol.iterator](){let t=0;return{next:()=>({value:[this.indexToPointX(t),this.indexToPointY(t),this._c[t++]],done:t>this._c.length})}}clone(){return new e(this._w,this._h,this._c)}clear(){this.forEach((t,s)=>this.set(t,s,void 0))}get width(){return this._w}get height(){return this._h}set(t,s,r){this._c[this.pointToIndex(t,s)]=r}get(t,s){return this._c[this.pointToIndex(t,s)]}has(t,s){return this.get(t,s)!=null}check(t,s){return t>=0&&t<this._w&&s>=0&&s<this._h}get length(){return this._w*this._h}pointToIndex(t,s){return this.clampX(~~t)+this.clampY(~~s)*this._w}indexToPointX(t){return t%this._w}indexToPointY(t){return Math.floor(t/this._w)}forEach(t,s=!1){let r=s?this.length-1:0,i=s?-1:this.length,a=s?-1:1;for(;r!==i;){let n=this.indexToPointX(r),l=this.indexToPointY(r),h=this._c[r];if(t(n,l,h,this)===!1)break;r+=a}}fill(t){this.forEach((s,r)=>{this.set(s,r,t)})}clampX(t){return G(t,0,this._w-1)}clampY(t){return G(t,0,this._h-1)}toArray(){return this._c.slice()}toString(t=" ",s=!0){if(!s)return this._c.join(t);let r=[];return this.forEach((i,a,n)=>{r[a]=r[a]||"",r[a]+=n+t}),r.join(`
2
- `)}},P=class e extends M{constructor(t,s,r=Uint8Array){super(t,s,null),this._c=new r(this._w*this._h)}has(t,s){return this.get(t,s)!==0}clone(){let t=new e(this._w,this._h,this._c.constructor);return this.forEach((s,r,i)=>{t.set(s,r,i)}),t}};function G(e,t,s){return e<t?t:e>s?s:e}var At=Math.sqrt,j=Math.cos,q=Math.sin,kt=2*Math.PI,F=class{x;y;constructor(t=0,s=t){this.x=t,this.y=s}toString(){return`Vector (${this.x}, ${this.y})`}},_=e=>e instanceof F,o=(e=0,t=e)=>(_(e)&&(t=e.y,e=e.x),new F(e,t)),D=(e,t,s=t)=>_(t)?D(e,t.x,t.y):e.x===t&&e.y===s,V=(e,t,s=t)=>(_(t)?V(e,t.x,t.y):(e.x=t,e.y=s),e),L=(e,t,s=t)=>_(t)?L(e,t.x,t.y):(e.x+=t,e.y+=s,e),O=(e,t,s=t)=>_(t)?O(e,t.x,t.y):(e.x-=t,e.y-=s,e),w=(e,t,s=t)=>_(t)?w(e,t.x,t.y):(e.x*=t,e.y*=s,e),I=(e,t,s=t)=>_(t)?I(e,t.x,t.y):(e.x/=t||1,e.y/=s||1,e),Ht=(e,t)=>{let s=j(t),r=q(t);return e.x=s*e.x-r*e.y,e.y=r*e.x+s*e.y,e},Pt=(e,t)=>{let s=S(o(t));return O(e,w(s,2*K(e,s)))},Dt=(e,t)=>(S(e),w(e,t),e),$=e=>Math.hypot(e.x,e.y),Z=e=>e.x*e.x+e.y*e.y,S=e=>{let t=$(e);return t>0&&I(e,t),e},Lt=(e,t=1)=>{let s=Z(e);return s>t*t&&(I(e,At(s)),w(e,t)),e},Ot=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),St=(e,t)=>{let s=e.x-t.x,r=e.y-t.y;return s*s+r*r},Ct=e=>Math.atan2(e.y,e.x),Rt=(e,t)=>Math.atan2(t.y-e.y,t.x-e.x),K=(e,t)=>e.x*t.x+e.y*t.y,vt=(e,t)=>e.x*t.y-e.y*t.x,Nt=(e,t,s)=>(e.x+=(t.x-e.x)*s||0,e.y+=(t.y-e.y)*s||0,e),Yt=(e=1,t=e,s=globalThis.rand||Math.random)=>{let r=s()*kt,i=s()*(t-e)+e;return o(j(r)*i,q(r)*i)},zt=e=>(e.x=Math.abs(e.x),e.y=Math.abs(e.y),e),Xt=e=>(e.x=Math.ceil(e.x),e.y=Math.ceil(e.y),e),Ut=e=>(e.x=Math.floor(e.x),e.y=Math.floor(e.y),e),Bt=e=>(e.x=Math.round(e.x),e.y=Math.round(e.y),e),Wt=(e,t,s)=>(e.x<t.x&&(e.x=t.x),e.x>s.x&&(e.x=s.x),e.y<t.y&&(e.y=t.y),e.y>s.y&&(e.y=s.y),e),Gt=(e,t,s=1)=>L(e,t.x*s,t.y*s),jt=e=>D(e,Q),Q=o(0,0),qt=o(1,1),Vt=o(0,-1),$t=o(1,0),Zt=o(0,1),Kt=o(-1,0);var Qt=o(.5,.5),J=o(0,0),Jt=o(1,0),te=o(0,1),ee=o(1,1),C=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(t,s,r=J){this.sprite=t,this.pos=s||o(0),this._o=o(r),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),r=this.sprite.height*(t?this._s.y:1),i=this.pos.x-s*this.anchor.x,a=this.pos.y-r*this.anchor.y;return[i,a,s,r]}draw(t=globalThis,s=!0){this.hidden||this.opacity<=0||(s&&t.push(),this.transform(t),this.drawImage(t),s&&t.pop())}transform(t){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,s=!0){let r=this.anchor,i=-this.sprite.width*(this.flipX?1-r.x:r.x),a=-this.sprite.height*(this.flipY?1-r.y:r.y);s&&t.alpha(this.opacity),t.image(i,a,this.sprite)}};var tt=(e,t)=>Math.abs(t-e)||0;var et=(e,t,s,r=Math.sin)=>e+(r(s)+1)/2*(t-e);var st=e=>e%1||0;var rt=advance=(e,t,s,r=1)=>{s&&(t.x+=s.x*r,t.y+=s.y*r),e.x+=t.x*r,e.y+=t.y*r};var it=(e,t)=>(t+e%t)%t;var at=(e,t,s,r)=>Math.hypot(s-e,r-t);var nt=(e,t)=>Math.hypot(e,t);var A=e=>{let t=0;for(let s=0;s<e.length;s++)t+=e[s];return t};var ot=e=>A(e)/e.length;var lt=(...e)=>{let t=e.sort((r,i)=>r-i),s=Math.floor(t.length/2);return t.length%2===0?(t[s-1]+t[s])/2:t[s]};var ht=(e,t,s)=>{let r=(t-e)%360;return r>180?r-=360:r<-180&&(r+=360),e+r*s};var k=Math.PI/2,se=(e,t,s,r=1,i=ut)=>new R(e,t,s,r,i),ut=e=>e,re=e=>e*e,ie=e=>-e*(e-2),ae=e=>e<.5?2*e*e:-2*e*e+4*e-1,ne=e=>e*e*e-e*Math.sin(e*Math.PI),oe=e=>{let t=1-e;return 1-(t*t*t-t*Math.sin(t*Math.PI))},le=e=>{if(e<.5){let s=2*e;return .5*(s*s*s-s*Math.sin(s*Math.PI))}let t=1-(2*e-1);return .5*(1-(t*t*t-t*Math.sin(e*Math.PI)))+.5},he=e=>Math.sin(13*k*e)*Math.pow(2,10*(e-1)),ue=e=>Math.sin(-13*k*(e+1))*Math.pow(2,-10*e)+1,ce=e=>{if(e<.5){let r=Math.sin(13*k*(2*e)),i=Math.pow(2,10*(2*e-1));return .5*r*i}let t=Math.sin(-13*k*(2*e-1+1)),s=Math.pow(2,-10*(2*e-1));return .5*(t*s+2)},ct=e=>1-v(1-e),v=e=>e<4/11?121*e*e/16:e<8/11?363/40*e*e-99/10*e+17/5:e<9/10?4356/361*e*e-35442/1805*e+16061/1805:54/5*e*e-513/25*e+268/25,me=e=>e<.5?.5*ct(e*2):.5*v(e*2-1)+.5,R=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(t,s,r,i,a){this._o=t,this._p=s,this._x=r,this._d=i,this._e=a,this._w=0}start(t){if(this.running)return this;this._cu.stop(!1),this._ch=this._cu=this,this.running=!0;let s=this._o[this._p]||0,r=this._rel?s+this._x:this._x;return this._lc=this._lc||t||globalThis,this._u=this._lc.listen("update",i=>{if(this._t<=this._w){this._t+=i;return}let a=this._t-this._w;this._o[this._p]=this._lc.lerp(s,r,this._e(a/this._d)),this._t+=i,a>=this._d&&(this._o[this._p]=r,this.stop())}),this}stop(t=!0){if(!this._u)return this;if(this.running=!1,this._u(),this._t=0,t)for(let s of this._cb)s(this._o);return this}restart(t=null,s=!1){return this.stop(s).restart(t)}onEnd(t){return this._cb.push(t),this}chain(t){return this._ch.onEnd(()=>{this._cu=t.start(this._lc)}),this._ch=t,this}reset(){return this._cb.length=0,this.stop()}relative(t=!0){return this._rel=t,this}delay(t){return this._w=t,this}get current(){return this._cu}get progress(){return this.running&&this._t>this._w?(this._t-this._w)/this._d:0}};var mt=4,H=1<<mt,pt=8,pe=1<<pt,f=4095,N=e=>.5*(1-Math.cos(e*Math.PI)),Y=class{_p=[];_po=4;_pf=.5;_e=null;constructor(t){this._e=t||globalThis,this.noiseSeed()}noise(t,s=0,r=0){t<0&&(t=-t),s<0&&(s=-s),r<0&&(r=-r);let i=Math.floor(t),a=Math.floor(s),n=Math.floor(r),l=t-i,h=s-a,b=r-n,c,x,d=0,g=.5,u,m,T;for(let X=0;X<this._po;X++){let p=i+(a<<mt)+(n<<pt);c=N(l),x=N(h),u=this._p[p&f],u+=c*(this._p[p+1&f]-u),m=this._p[p+H&f],m+=c*(this._p[p+H+1&f]-m),u+=x*(m-u),p+=pe,m=this._p[p&f],m+=c*(this._p[p+1&f]-m),T=this._p[p+H&f],T+=c*(this._p[p+H+1&f]-T),m+=x*(T-m),u+=N(b)*(m-u),d+=u*g,g*=this._pf,i<<=1,l*=2,a<<=1,h*=2,n<<=1,b*=2,l>=1&&(i++,l--),h>=1&&(a++,h--),b>=1&&(n++,b--)}return d}noiseDetail(t,s){t>0&&(this._po=t),s>0&&(this._pf=s)}noiseSeed(t=null){t!=null&&this._e.seed(t);let s=this._e.rand||Math.random;for(let r=0;r<f+1;r++)this._p[r]=s()}};var ft=(e,t=!0,s=!1,r=globalThis)=>r.paint(e.width,e.height,i=>{r.push(),r.scale(t?-1:1,s?-1:1),r.image(t?-e.width:0,s?-e.height:0,e),r.pop()});var dt=(e,t,s=!0,r=globalThis)=>r.paint(e.width*t,e.height*t,i=>{r.push(),i.imageSmoothingEnabled=!s,r.scale(t),r.image(0,0,e),r.pop()});var bt=(e,t,s=1,r=globalThis)=>r.paint(e.width,e.height,i=>{r.push(),r.alpha(s),r.rectfill(0,0,e.width,e.height,t),i.globalCompositeOperation="destination-atop",r.alpha(1),r.image(0,0,e),r.pop()});var xt=(e,t,{borderWidth:s=0,borderColor:r=0,engine:i=globalThis}={})=>{let a=e*2+s;return i.paint(a,a,()=>{i.circfill(a/2,a/2,e,t),s>0&&(i.linewidth(s),i.stroke(r))})};var _t=(e,t,s,{borderWidth:r=0,borderColor:i=0,engine:a=globalThis}={})=>{let n=e+r*2,l=t+r*2;return a.paint(n,l,()=>{a.rectfill(r>0?r:0,r>0?r:0,e,t,s),r>0&&(a.linewidth(r),a.stroke(i))})};var gt=(e,t=0,s=1)=>[...new Array(e).keys()].map(r=>t+s*r);var yt=(e,t=globalThis.rand||Math.random)=>{e=[...e];for(let s=e.length-1;s>0;s--){let r=Math.floor(t()*(s+1)),i=e[s];e[s]=e[r],e[r]=i}return e};var Ft=(e,t=globalThis.rand||Math.random)=>e[Math.floor(t()*e.length)];var wt=e=>e[0];var Tt=e=>e[e.length-1];var Et=e=>e.slice(1);globalThis.utils=Object.assign(globalThis.utils||{},z);})();
1
+ (()=>{var Tt=Object.defineProperty;var kt=(e,t)=>{for(var s in t)Tt(e,s,{get:t[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(e=!0)=>{for(let t in globalThis.utils)t!=="global"&&(e||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var X={};kt(X,{ANCHOR_BOT_LEFT:()=>Jt,ANCHOR_BOT_RIGHT:()=>te,ANCHOR_CENTER:()=>Kt,ANCHOR_TOP_LEFT:()=>J,ANCHOR_TOP_RIGHT:()=>Qt,Actor:()=>R,BACK_IN:()=>ie,BACK_IN_OUT:()=>ne,BACK_OUT:()=>oe,BOUNCE_IN:()=>ht,BOUNCE_IN_OUT:()=>me,BOUNCE_OUT:()=>z,Camera:()=>y,DOWN:()=>Zt,EASE_IN:()=>se,EASE_IN_OUT:()=>ae,EASE_OUT:()=>re,ELASTIC_IN:()=>ue,ELASTIC_IN_OUT:()=>he,ELASTIC_OUT:()=>le,Grid:()=>k,LEFT:()=>Gt,LINEAR:()=>lt,Noise:()=>D,ONE:()=>jt,RIGHT:()=>$t,TypedGrid:()=>C,UP:()=>Wt,Vector:()=>w,ZERO:()=>Q,advance:()=>st,choose:()=>yt,colcirc:()=>q,colrect:()=>U,diff:()=>tt,dist:()=>at,flipImage:()=>pt,fract:()=>et,head:()=>wt,intersection:()=>T,last:()=>Nt,lerpAngle:()=>ut,mag:()=>it,makeCircle:()=>bt,makeRectangle:()=>xt,mean:()=>ot,median:()=>nt,mod:()=>rt,range:()=>gt,resolverect:()=>H,scaleImage:()=>ft,shuffle:()=>_t,sum:()=>E,tail:()=>Mt,tintImage:()=>dt,tween:()=>ee,vec:()=>o,vecAbs:()=>Dt,vecAdd:()=>L,vecAngle:()=>Ft,vecAngleBetween:()=>Rt,vecCeil:()=>Xt,vecClamp:()=>Ut,vecCross:()=>Yt,vecDist:()=>Lt,vecDist2:()=>St,vecDiv:()=>A,vecDot:()=>K,vecEq:()=>O,vecFloor:()=>Bt,vecIsZero:()=>Vt,vecLerp:()=>zt,vecLimit:()=>Ot,vecMag:()=>Z,vecMag2:()=>G,vecMove:()=>qt,vecMult:()=>N,vecNorm:()=>F,vecRand:()=>vt,vecReflect:()=>Pt,vecRotate:()=>It,vecRound:()=>Ht,vecSet:()=>$,vecSetMag:()=>Ct,vecSub:()=>S});var y=class{_engine=null;x=0;y=0;ox=0;oy=0;width=0;height=0;rotation=0;scale=1;constructor(t=null,s=0,r=0,a=null,i=null){this._engine=t||globalThis,this.ox=s,this.oy=r,this.resize(a||this._engine.W-s,i||this._engine.H-r),this.x=this.width/2,this.y=this.height/2,this._shake={x:0,y:0,removeListener:null}}resize(t,s){this.width=t,this.height=s,this._engine.emit("camera-resized",this)}start(t=!1){if(this._engine.push(),t){let a=path();a.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(a)}let s=this.ox+this.width/2,r=this.oy+this.height/2;this._engine.translate(s,r),this._engine.scale(this.scale),this._engine.rotate(this.rotation),this._engine.translate(-this.x+this._shake.x,-this.y+this._shake.y)}end(){this._engine.pop()}lookAt(t,s){this.x=t,this.y=s}move(t,s){this.x+=t,this.y+=s}zoom(t){this.scale*=t}zoomTo(t){this.scale=t}rotate(t){this.rotation+=t}rotateTo(t){this.rotation=t}getWorldPoint(t,s,r={}){let a=Math.cos(-this.rotation),i=Math.sin(-this.rotation);return t=(t-this.width/2-this.ox)/this.scale,s=(s-this.height/2-this.oy)/this.scale,r.x=a*t-i*s+this.x,r.y=i*t+a*s+this.y,r}getCameraPoint(t,s,r={}){let a=Math.cos(-this.rotation),i=Math.sin(-this.rotation);return t=t-this.x,s=s-this.y,t=a*t-i*s,s=i*t+a*s,r.x=t*this.scale+this.width/2+this.ox,r.y=s*this.scale+this.height/2+this.oy,r}getBounds(){return[this.ox,this.oy,this.width,this.height]}shake(t=1,s=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",r=>{this._shake.x=this._engine.randi(-t,t),this._shake.y=this._engine.randi(-t,t),s-=r,s<=0&&this.unshake()}))}unshake(){this.shaking&&(this._shake.removeListener(),this._shake.removeListener=null,this._shake.x=this._shake.y=0)}get shaking(){return this._shake.removeListener!==null}};var T=(e,t,s,r,a,i,n,u)=>{let h=Math.max(e,a),b=Math.min(e+s,a+n)-h,m=Math.max(t,i),x=Math.min(t+r,i+u)-m;return[h,m,b,x]};var H=(e,t,s,r,a,i,n,u)=>{let[h,b,m,x]=T(e,t,s,r,a,i,n,u),d="",_=e,l=t;return m<x?e<a?(d="right",_=a-s):(d="left",_=a+n):t<i?(d="bottom",l=i-r):(d="top",l=i+u),{direction:d,x:_,y:l}};var U=(e,t,s,r,a,i,n,u)=>e<a+n&&e+s>a&&t<i+u&&t+r>i;var q=(e,t,s,r,a,i)=>(r-e)*(r-e)+(a-t)*(a-t)<=(s+i)*(s+i);var k=class e{_w;_h;_c;constructor(t,s,r=[]){this._w=Math.max(1,~~t),this._h=Math.max(1,~~s),this._c=r}[Symbol.iterator](){let t=0;return{next:()=>({value:[this.indexToPointX(t),this.indexToPointY(t),this._c[t++]],done:t>this._c.length})}}clone(){return new e(this._w,this._h,this._c)}clear(){this.forEach((t,s)=>this.set(t,s,void 0))}get width(){return this._w}get height(){return this._h}set(t,s,r){this._c[this.pointToIndex(t,s)]=r}get(t,s){return this._c[this.pointToIndex(t,s)]}has(t,s){return this.get(t,s)!=null}check(t,s){return t>=0&&t<this._w&&s>=0&&s<this._h}get length(){return this._w*this._h}pointToIndex(t,s){return this.clampX(~~t)+this.clampY(~~s)*this._w}indexToPointX(t){return t%this._w}indexToPointY(t){return Math.floor(t/this._w)}forEach(t,s=!1){let r=s?this.length-1:0,a=s?-1:this.length,i=s?-1:1;for(;r!==a;){let n=this.indexToPointX(r),u=this.indexToPointY(r),h=this._c[r];if(t(n,u,h,this)===!1)break;r+=i}}fill(t){this.forEach((s,r)=>{this.set(s,r,t)})}clampX(t){return V(t,0,this._w-1)}clampY(t){return V(t,0,this._h-1)}toArray(){return this._c.slice()}toString(t=" ",s=!0){if(!s)return this._c.join(t);let r=[];return this.forEach((a,i,n)=>{r[i]=r[i]||"",r[i]+=n+t}),r.join(`
2
+ `)}},C=class e extends k{constructor(t,s,r=Uint8Array){super(t,s,null),this._c=new r(this._w*this._h)}has(t,s){return this.get(t,s)!==0}clone(){let t=new e(this._w,this._h,this._c.constructor);return this.forEach((s,r,a)=>{t.set(s,r,a)}),t}};function V(e,t,s){return e<t?t:e>s?s:e}var At=Math.sqrt,j=Math.cos,W=Math.sin,Et=2*Math.PI,w=class{x;y;constructor(t=0,s=t){this.x=t,this.y=s}toString(){return`Vector (${this.x}, ${this.y})`}},g=e=>e instanceof w,o=(e=0,t=e)=>(g(e)&&(t=e.y,e=e.x),new w(e,t)),O=(e,t,s=t)=>g(t)?O(e,t.x,t.y):e.x===t&&e.y===s,$=(e,t,s=t)=>(g(t)?$(e,t.x,t.y):(e.x=t,e.y=s),e),L=(e,t,s=t)=>g(t)?L(e,t.x,t.y):(e.x+=t,e.y+=s,e),S=(e,t,s=t)=>g(t)?S(e,t.x,t.y):(e.x-=t,e.y-=s,e),N=(e,t,s=t)=>g(t)?N(e,t.x,t.y):(e.x*=t,e.y*=s,e),A=(e,t,s=t)=>g(t)?A(e,t.x,t.y):(e.x/=t||1,e.y/=s||1,e),It=(e,t)=>{let s=j(t),r=W(t);return e.x=s*e.x-r*e.y,e.y=r*e.x+s*e.y,e},Pt=(e,t)=>{let s=F(o(t));return S(e,N(s,2*K(e,s)))},Ct=(e,t)=>(F(e),N(e,t),e),Z=e=>Math.hypot(e.x,e.y),G=e=>e.x*e.x+e.y*e.y,F=e=>{let t=Z(e);return t>0&&A(e,t),e},Ot=(e,t=1)=>{let s=G(e);return s>t*t&&(A(e,At(s)),N(e,t)),e},Lt=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),St=(e,t)=>{let s=e.x-t.x,r=e.y-t.y;return s*s+r*r},Ft=e=>Math.atan2(e.y,e.x),Rt=(e,t)=>Math.atan2(t.y-e.y,t.x-e.x),K=(e,t)=>e.x*t.x+e.y*t.y,Yt=(e,t)=>e.x*t.y-e.y*t.x,zt=(e,t,s)=>(e.x+=(t.x-e.x)*s||0,e.y+=(t.y-e.y)*s||0,e),vt=(e=1,t=e,s=globalThis.rand||Math.random)=>{let r=s()*Et,a=s()*(t-e)+e;return o(j(r)*a,W(r)*a)},Dt=e=>(e.x=Math.abs(e.x),e.y=Math.abs(e.y),e),Xt=e=>(e.x=Math.ceil(e.x),e.y=Math.ceil(e.y),e),Bt=e=>(e.x=Math.floor(e.x),e.y=Math.floor(e.y),e),Ht=e=>(e.x=Math.round(e.x),e.y=Math.round(e.y),e),Ut=(e,t,s)=>(e.x<t.x&&(e.x=t.x),e.x>s.x&&(e.x=s.x),e.y<t.y&&(e.y=t.y),e.y>s.y&&(e.y=s.y),e),qt=(e,t,s=1)=>L(e,t.x*s,t.y*s),Vt=e=>O(e,Q),Q=o(0,0),jt=o(1,1),Wt=o(0,-1),$t=o(1,0),Zt=o(0,1),Gt=o(-1,0);var Kt=o(.5,.5),J=o(0,0),Qt=o(1,0),Jt=o(0,1),te=o(1,1),R=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(t,s,r=J){this.sprite=t,this.pos=s||o(0),this._o=o(r),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),r=this.sprite.height*(t?this._s.y:1),a=this.pos.x-s*this.anchor.x,i=this.pos.y-r*this.anchor.y;return[a,i,s,r]}draw(t=globalThis,s=!0){this.hidden||this.opacity<=0||(s&&t.push(),this.transform(t),this.drawImage(t),s&&t.pop())}transform(t){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,s=!0){let r=this.anchor,a=-this.sprite.width*(this.flipX?1-r.x:r.x),i=-this.sprite.height*(this.flipY?1-r.y:r.y);s&&t.alpha(this.opacity),t.image(a,i,this.sprite)}};var tt=(e,t)=>Math.abs(t-e)||0;var et=e=>e%1||0;var st=advance=(e,t,s,r=1)=>{s&&(t.x+=s.x*r,t.y+=s.y*r),e.x+=t.x*r,e.y+=t.y*r};var rt=(e,t)=>(t+e%t)%t;var at=(e,t,s,r)=>Math.hypot(s-e,r-t);var it=(e,t)=>Math.hypot(e,t);var E=e=>{let t=0;for(let s=0;s<e.length;s++)t+=e[s];return t};var ot=e=>E(e)/e.length;var nt=(...e)=>{let t=e.sort((r,a)=>r-a),s=Math.floor(t.length/2);return t.length%2===0?(t[s-1]+t[s])/2:t[s]};var ut=(e,t,s)=>{let r=(t-e)%360;return r>180?r-=360:r<-180&&(r+=360),e+r*s};var I=Math.PI/2,ee=(e,t,s,r=1,a=lt)=>new Y(e,t,s,r,a),lt=e=>e,se=e=>e*e,re=e=>-e*(e-2),ae=e=>e<.5?2*e*e:-2*e*e+4*e-1,ie=e=>e*e*e-e*Math.sin(e*Math.PI),oe=e=>{let t=1-e;return 1-(t*t*t-t*Math.sin(t*Math.PI))},ne=e=>{if(e<.5){let s=2*e;return .5*(s*s*s-s*Math.sin(s*Math.PI))}let t=1-(2*e-1);return .5*(1-(t*t*t-t*Math.sin(e*Math.PI)))+.5},ue=e=>Math.sin(13*I*e)*Math.pow(2,10*(e-1)),le=e=>Math.sin(-13*I*(e+1))*Math.pow(2,-10*e)+1,he=e=>{if(e<.5){let r=Math.sin(13*I*(2*e)),a=Math.pow(2,10*(2*e-1));return .5*r*a}let t=Math.sin(-13*I*(2*e-1+1)),s=Math.pow(2,-10*(2*e-1));return .5*(t*s+2)},ht=e=>1-z(1-e),z=e=>e<4/11?121*e*e/16:e<8/11?363/40*e*e-99/10*e+17/5:e<9/10?4356/361*e*e-35442/1805*e+16061/1805:54/5*e*e-513/25*e+268/25,me=e=>e<.5?.5*ht(e*2):.5*z(e*2-1)+.5,Y=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(t,s,r,a,i){this._o=t,this._p=s,this._x=r,this._d=a,this._e=i,this._w=0}start(t){if(this.running)return this;this._cu.stop(!1),this._ch=this._cu=this,this.running=!0;let s=this._o[this._p]||0,r=this._rel?s+this._x:this._x;return this._lc=this._lc||t||globalThis,this._u=this._lc.listen("update",a=>{if(this._t<=this._w){this._t+=a;return}let i=this._t-this._w;this._o[this._p]=this._lc.lerp(s,r,this._e(i/this._d)),this._t+=a,i>=this._d&&(this._o[this._p]=r,this.stop())}),this}stop(t=!0){if(!this._u)return this;if(this.running=!1,this._u(),this._t=0,t)for(let s of this._cb)s(this._o);return this}restart(t=null,s=!1){return this.stop(s).restart(t)}onEnd(t){return this._cb.push(t),this}chain(t){return this._ch.onEnd(()=>{this._cu=t.start(this._lc)}),this._ch=t,this}reset(){return this._cb.length=0,this.stop()}relative(t=!0){return this._rel=t,this}delay(t){return this._w=t,this}get current(){return this._cu}get progress(){return this.running&&this._t>this._w?(this._t-this._w)/this._d:0}};var mt=4,P=1<<mt,ct=8,ce=1<<ct,f=4095,v=e=>.5*(1-Math.cos(e*Math.PI)),D=class{_p=[];_po=4;_pf=.5;_e=null;constructor(t){this._e=t||globalThis,this.noiseSeed()}noise(t,s=0,r=0){t<0&&(t=-t),s<0&&(s=-s),r<0&&(r=-r);let a=Math.floor(t),i=Math.floor(s),n=Math.floor(r),u=t-a,h=s-i,b=r-n,m,x,d=0,_=.5,l,c,M;for(let B=0;B<this._po;B++){let p=a+(i<<mt)+(n<<ct);m=v(u),x=v(h),l=this._p[p&f],l+=m*(this._p[p+1&f]-l),c=this._p[p+P&f],c+=m*(this._p[p+P+1&f]-c),l+=x*(c-l),p+=ce,c=this._p[p&f],c+=m*(this._p[p+1&f]-c),M=this._p[p+P&f],M+=m*(this._p[p+P+1&f]-M),c+=x*(M-c),l+=v(b)*(c-l),d+=l*_,_*=this._pf,a<<=1,u*=2,i<<=1,h*=2,n<<=1,b*=2,u>=1&&(a++,u--),h>=1&&(i++,h--),b>=1&&(n++,b--)}return d}noiseDetail(t,s){t>0&&(this._po=t),s>0&&(this._pf=s)}noiseSeed(t=null){t!=null&&this._e.rseed(t);let s=this._e.rand||Math.random;for(let r=0;r<f+1;r++)this._p[r]=s()}};var pt=(e,t=!0,s=!1,r=globalThis)=>r.paint(e.width,e.height,a=>{r.push(),r.scale(t?-1:1,s?-1:1),r.image(t?-e.width:0,s?-e.height:0,e),r.pop()});var ft=(e,t,s=!0,r=globalThis)=>r.paint(e.width*t,e.height*t,a=>{r.push(),a.imageSmoothingEnabled=!s,r.scale(t),r.image(0,0,e),r.pop()});var dt=(e,t,s=1,r=globalThis)=>r.paint(e.width,e.height,a=>{r.push(),r.alpha(s),r.rectfill(0,0,e.width,e.height,t),a.globalCompositeOperation="destination-atop",r.alpha(1),r.image(0,0,e),r.pop()});var bt=(e,t,{borderWidth:s=0,borderColor:r=0,engine:a=globalThis}={})=>{let i=e*2+s;return a.paint(i,i,()=>{a.circfill(i/2,i/2,e,t),s>0&&(a.linewidth(s),a.stroke(r))})};var xt=(e,t,s,{borderWidth:r=0,borderColor:a=0,engine:i=globalThis}={})=>{let n=e+r*2,u=t+r*2;return i.paint(n,u,()=>{i.rectfill(r>0?r:0,r>0?r:0,e,t,s),r>0&&(i.linewidth(r),i.stroke(a))})};var gt=(e,t=0,s=1)=>[...new Array(e).keys()].map(r=>t+s*r);var _t=(e,t=globalThis.rand||Math.random)=>{e=[...e];for(let s=e.length-1;s>0;s--){let r=Math.floor(t()*(s+1)),a=e[s];e[s]=e[r],e[r]=a}return e};var yt=(e,t=globalThis.rand||Math.random)=>e[Math.floor(t()*e.length)];var wt=e=>e[0];var Nt=e=>e[e.length-1];var Mt=e=>e.slice(1);globalThis.utils=Object.assign(globalThis.utils||{},X);})();
3
3
  /*! @litecanvas/utils by Luiz Bills | MIT Licensed */
package/dist/camera.js CHANGED
@@ -30,11 +30,6 @@
30
30
  rotation = 0;
31
31
  /** @type {number} */
32
32
  scale = 1;
33
- _shake = {
34
- x: 0,
35
- y: 0,
36
- removeListener: null
37
- };
38
33
  /**
39
34
  * @param {LitecanvasInstance} engine
40
35
  */
@@ -42,12 +37,14 @@
42
37
  this._engine = engine || globalThis;
43
38
  this.ox = ox;
44
39
  this.oy = oy;
45
- this.resize(
46
- width || this._engine.WIDTH - ox,
47
- height || this._engine.HEIGHT - oy
48
- );
40
+ this.resize(width || this._engine.W - ox, height || this._engine.H - oy);
49
41
  this.x = this.width / 2;
50
42
  this.y = this.height / 2;
43
+ this._shake = {
44
+ x: 0,
45
+ y: 0,
46
+ removeListener: null
47
+ };
51
48
  }
52
49
  resize(width, height) {
53
50
  this.width = width;
@@ -149,31 +146,6 @@
149
146
  getBounds() {
150
147
  return [this.ox, this.oy, this.width, this.height];
151
148
  }
152
- /**
153
- * Check if a rect is inside of the camera.
154
- *
155
- * @param {number} x
156
- * @param {number} y
157
- * @param {number} width
158
- * @param {number} height
159
- * @returns {boolean}
160
- */
161
- viewing(x, y, width, height) {
162
- const cameraX = this.width / 2 - this.x;
163
- const cameraY = this.height / 2 - this.y;
164
- const cameraWidth = this.width / this.scale;
165
- const cameraHeight = this.height / this.scale;
166
- return this._engine.colrect(
167
- x,
168
- y,
169
- width,
170
- height,
171
- cameraX,
172
- cameraY,
173
- cameraWidth,
174
- cameraHeight
175
- );
176
- }
177
149
  /**
178
150
  * Shake the camera
179
151
  *
@@ -1 +1 @@
1
- (()=>{globalThis.utils=globalThis.utils||{};globalThis.utils.global=(o=!0)=>{for(let i in globalThis.utils)i!=="global"&&(o||globalThis[i]===void 0)&&(globalThis[i]=globalThis.utils[i])};var n=class{_engine=null;x=0;y=0;ox=0;oy=0;width=0;height=0;rotation=0;scale=1;_shake={x:0,y:0,removeListener:null};constructor(i=null,t=0,s=0,h=null,e=null){this._engine=i||globalThis,this.ox=t,this.oy=s,this.resize(h||this._engine.WIDTH-t,e||this._engine.HEIGHT-s),this.x=this.width/2,this.y=this.height/2}resize(i,t){this.width=i,this.height=t,this._engine.emit("camera-resized",this)}start(i=!1){if(this._engine.push(),i){let h=path();h.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(h)}let t=this.ox+this.width/2,s=this.oy+this.height/2;this._engine.translate(t,s),this._engine.scale(this.scale),this._engine.rotate(this.rotation),this._engine.translate(-this.x+this._shake.x,-this.y+this._shake.y)}end(){this._engine.pop()}lookAt(i,t){this.x=i,this.y=t}move(i,t){this.x+=i,this.y+=t}zoom(i){this.scale*=i}zoomTo(i){this.scale=i}rotate(i){this.rotation+=i}rotateTo(i){this.rotation=i}getWorldPoint(i,t,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return i=(i-this.width/2-this.ox)/this.scale,t=(t-this.height/2-this.oy)/this.scale,s.x=h*i-e*t+this.x,s.y=e*i+h*t+this.y,s}getCameraPoint(i,t,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return i=i-this.x,t=t-this.y,i=h*i-e*t,t=e*i+h*t,s.x=i*this.scale+this.width/2+this.ox,s.y=t*this.scale+this.height/2+this.oy,s}getBounds(){return[this.ox,this.oy,this.width,this.height]}viewing(i,t,s,h){let e=this.width/2-this.x,a=this.height/2-this.y,l=this.width/this.scale,r=this.height/this.scale;return this._engine.colrect(i,t,s,h,e,a,l,r)}shake(i=1,t=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",s=>{this._shake.x=this._engine.randi(-i,i),this._shake.y=this._engine.randi(-i,i),t-=s,t<=0&&this.unshake()}))}unshake(){this.shaking&&(this._shake.removeListener(),this._shake.removeListener=null,this._shake.x=this._shake.y=0)}get shaking(){return this._shake.removeListener!==null}};globalThis.utils=Object.assign(globalThis.utils||{},{Camera:n});})();
1
+ (()=>{globalThis.utils=globalThis.utils||{};globalThis.utils.global=(o=!0)=>{for(let i in globalThis.utils)i!=="global"&&(o||globalThis[i]===void 0)&&(globalThis[i]=globalThis.utils[i])};var n=class{_engine=null;x=0;y=0;ox=0;oy=0;width=0;height=0;rotation=0;scale=1;constructor(i=null,t=0,s=0,h=null,e=null){this._engine=i||globalThis,this.ox=t,this.oy=s,this.resize(h||this._engine.W-t,e||this._engine.H-s),this.x=this.width/2,this.y=this.height/2,this._shake={x:0,y:0,removeListener:null}}resize(i,t){this.width=i,this.height=t,this._engine.emit("camera-resized",this)}start(i=!1){if(this._engine.push(),i){let h=path();h.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(h)}let t=this.ox+this.width/2,s=this.oy+this.height/2;this._engine.translate(t,s),this._engine.scale(this.scale),this._engine.rotate(this.rotation),this._engine.translate(-this.x+this._shake.x,-this.y+this._shake.y)}end(){this._engine.pop()}lookAt(i,t){this.x=i,this.y=t}move(i,t){this.x+=i,this.y+=t}zoom(i){this.scale*=i}zoomTo(i){this.scale=i}rotate(i){this.rotation+=i}rotateTo(i){this.rotation=i}getWorldPoint(i,t,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return i=(i-this.width/2-this.ox)/this.scale,t=(t-this.height/2-this.oy)/this.scale,s.x=h*i-e*t+this.x,s.y=e*i+h*t+this.y,s}getCameraPoint(i,t,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return i=i-this.x,t=t-this.y,i=h*i-e*t,t=e*i+h*t,s.x=i*this.scale+this.width/2+this.ox,s.y=t*this.scale+this.height/2+this.oy,s}getBounds(){return[this.ox,this.oy,this.width,this.height]}shake(i=1,t=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",s=>{this._shake.x=this._engine.randi(-i,i),this._shake.y=this._engine.randi(-i,i),t-=s,t<=0&&this.unshake()}))}unshake(){this.shaking&&(this._shake.removeListener(),this._shake.removeListener=null,this._shake.x=this._shake.y=0)}get shaking(){return this._shake.removeListener!==null}};globalThis.utils=Object.assign(globalThis.utils||{},{Camera:n});})();
package/dist/image.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var f=Object.defineProperty;var d=(t,a)=>{for(var s in a)f(t,s,{get:a[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(t=!0)=>{for(let a in globalThis.utils)a!=="global"&&(t||globalThis[a]===void 0)&&(globalThis[a]=globalThis.utils[a])};var n={};d(n,{flipImage:()=>o,makeCircle:()=>u,makeRectangle:()=>p,scaleImage:()=>l,tintImage:()=>m});var o=(t,a=!0,s=!1,e=globalThis)=>e.paint(t.width,t.height,r=>{e.push(),e.scale(a?-1:1,s?-1:1),e.image(a?-t.width:0,s?-t.height:0,t),e.pop()});var l=(t,a,s=!0,e=globalThis)=>e.paint(t.width*a,t.height*a,r=>{e.push(),r.imageSmoothingEnabled=!s,e.scale(a),e.image(0,0,t),e.pop()});var m=(t,a,s=1,e=globalThis)=>e.paint(t.width,t.height,r=>{e.push(),e.alpha(s),e.rectfill(0,0,t.width,t.height,a),r.globalCompositeOperation="destination-atop",e.alpha(1),e.image(0,0,t),e.pop()});var u=(t,a,{borderWidth:s=0,borderColor:e=0,engine:r=globalThis}={})=>{let i=t*2+s;return r.paint(i,i,()=>{r.circfill(i/2,i/2,t,a),s>0&&(r.linewidth(s),r.stroke(e))})};var p=(t,a,s,{borderWidth:e=0,borderColor:r=0,engine:i=globalThis}={})=>{let c=t+e*2,b=a+e*2;return i.paint(c,b,()=>{i.rectfill(e>0?e:0,e>0?e:0,t,a,s),e>0&&(i.linewidth(e),i.stroke(r))})};globalThis.utils=Object.assign(globalThis.utils||{},n);})();
1
+ (()=>{var f=Object.defineProperty;var d=(t,a)=>{for(var r in a)f(t,r,{get:a[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(t=!0)=>{for(let a in globalThis.utils)a!=="global"&&(t||globalThis[a]===void 0)&&(globalThis[a]=globalThis.utils[a])};var n={};d(n,{flipImage:()=>u,makeCircle:()=>l,makeRectangle:()=>p,scaleImage:()=>o,tintImage:()=>m});var u=(t,a=!0,r=!1,e=globalThis)=>e.paint(t.width,t.height,s=>{e.push(),e.scale(a?-1:1,r?-1:1),e.image(a?-t.width:0,r?-t.height:0,t),e.pop()});var o=(t,a,r=!0,e=globalThis)=>e.paint(t.width*a,t.height*a,s=>{e.push(),s.imageSmoothingEnabled=!r,e.scale(a),e.image(0,0,t),e.pop()});var m=(t,a,r=1,e=globalThis)=>e.paint(t.width,t.height,s=>{e.push(),e.alpha(r),e.rectfill(0,0,t.width,t.height,a),s.globalCompositeOperation="destination-atop",e.alpha(1),e.image(0,0,t),e.pop()});var l=(t,a,{borderWidth:r=0,borderColor:e=0,engine:s=globalThis}={})=>{let i=t*2+r;return s.paint(i,i,()=>{s.circfill(i/2,i/2,t,a),r>0&&(s.linewidth(r),s.stroke(e))})};var p=(t,a,r,{borderWidth:e=0,borderColor:s=0,engine:i=globalThis}={})=>{let b=t+e*2,c=a+e*2;return i.paint(b,c,()=>{i.rectfill(e>0?e:0,e>0?e:0,t,a,r),e>0&&(i.linewidth(e),i.stroke(s))})};globalThis.utils=Object.assign(globalThis.utils||{},n);})();
package/dist/math.js CHANGED
@@ -28,16 +28,12 @@
28
28
  mean: () => mean_default,
29
29
  median: () => median_default,
30
30
  mod: () => mod_default,
31
- sum: () => sum_default,
32
- wave: () => wave_default
31
+ sum: () => sum_default
33
32
  });
34
33
 
35
34
  // src/math/diff.js
36
35
  var diff_default = (a, b) => Math.abs(b - a) || 0;
37
36
 
38
- // src/math/wave.js
39
- var wave_default = (lower, higher, t, fn = Math.sin) => lower + (fn(t) + 1) / 2 * (higher - lower);
40
-
41
37
  // src/math/fract.js
42
38
  var fract_default = (value) => value % 1 || 0;
43
39
 
package/dist/math.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var M=Object.defineProperty;var g=(e,t)=>{for(var r in t)M(e,r,{get:t[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(e=!0)=>{for(let t in globalThis.utils)t!=="global"&&(e||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var n={};g(n,{advance:()=>a,diff:()=>c,dist:()=>p,fract:()=>u,lerpAngle:()=>h,mag:()=>f,mean:()=>y,median:()=>i,mod:()=>l,sum:()=>s,wave:()=>x});var c=(e,t)=>Math.abs(t-e)||0;var x=(e,t,r,o=Math.sin)=>e+(o(r)+1)/2*(t-e);var u=e=>e%1||0;var A=2*Math.PI;var a=advance=(e,t,r,o=1)=>{r&&(t.x+=r.x*o,t.y+=r.y*o),e.x+=t.x*o,e.y+=t.y*o};var l=(e,t)=>(t+e%t)%t;var p=(e,t,r,o)=>Math.hypot(r-e,o-t);var f=(e,t)=>Math.hypot(e,t);var s=e=>{let t=0;for(let r=0;r<e.length;r++)t+=e[r];return t};var y=e=>s(e)/e.length;var i=(...e)=>{let t=e.sort((o,d)=>o-d),r=Math.floor(t.length/2);return t.length%2===0?(t[r-1]+t[r])/2:t[r]};var h=(e,t,r)=>{let o=(t-e)%360;return o>180?o-=360:o<-180&&(o+=360),e+o*r};globalThis.utils=Object.assign(globalThis.utils||{},n);})();
1
+ (()=>{var d=Object.defineProperty;var M=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(e=!0)=>{for(let t in globalThis.utils)t!=="global"&&(e||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var n={};M(n,{advance:()=>u,diff:()=>c,dist:()=>l,fract:()=>x,lerpAngle:()=>i,mag:()=>p,mean:()=>f,median:()=>y,mod:()=>a,sum:()=>s});var c=(e,t)=>Math.abs(t-e)||0;var x=e=>e%1||0;var T=2*Math.PI;var u=advance=(e,t,r,o=1)=>{r&&(t.x+=r.x*o,t.y+=r.y*o),e.x+=t.x*o,e.y+=t.y*o};var a=(e,t)=>(t+e%t)%t;var l=(e,t,r,o)=>Math.hypot(r-e,o-t);var p=(e,t)=>Math.hypot(e,t);var s=e=>{let t=0;for(let r=0;r<e.length;r++)t+=e[r];return t};var f=e=>s(e)/e.length;var y=(...e)=>{let t=e.sort((o,h)=>o-h),r=Math.floor(t.length/2);return t.length%2===0?(t[r-1]+t[r])/2:t[r]};var i=(e,t,r)=>{let o=(t-e)%360;return o>180?o-=360:o<-180&&(o+=360),e+o*r};globalThis.utils=Object.assign(globalThis.utils||{},n);})();
package/dist/noise.js CHANGED
@@ -137,11 +137,12 @@
137
137
  }
138
138
  /**
139
139
  * Sets a seed for the Perlin noise generator, ensuring deterministic results.
140
+ *
140
141
  * @param {number} value - Seed value.
141
142
  */
142
143
  noiseSeed(value = null) {
143
144
  if (value != null) {
144
- this._e.seed(value);
145
+ this._e.rseed(value);
145
146
  }
146
147
  const random = this._e.rand || Math.random;
147
148
  for (let i = 0; i < PERLIN_SIZE + 1; i++) {
package/dist/noise.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var A=Object.defineProperty;var H=(o,e)=>{for(var t in e)A(o,t,{get:e[t],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(o=!0)=>{for(let e in globalThis.utils)e!=="global"&&(o||globalThis[e]===void 0)&&(globalThis[e]=globalThis.utils[e])};var y={};H(y,{Noise:()=>v});var T=4,h=1<<T,E=8,D=1<<E,i=4095,F=o=>.5*(1-Math.cos(o*Math.PI)),v=class{_p=[];_po=4;_pf=.5;_e=null;constructor(e){this._e=e||globalThis,this.noiseSeed()}noise(e,t=0,s=0){e<0&&(e=-e),t<0&&(t=-t),s<0&&(s=-s);let m=Math.floor(e),u=Math.floor(t),c=Math.floor(s),p=e-m,b=t-u,f=s-c,l,g,x=0,_=.5,n,a,d;for(let w=0;w<this._po;w++){let r=m+(u<<T)+(c<<E);l=F(p),g=F(b),n=this._p[r&i],n+=l*(this._p[r+1&i]-n),a=this._p[r+h&i],a+=l*(this._p[r+h+1&i]-a),n+=g*(a-n),r+=D,a=this._p[r&i],a+=l*(this._p[r+1&i]-a),d=this._p[r+h&i],d+=l*(this._p[r+h+1&i]-d),a+=g*(d-a),n+=F(f)*(a-n),x+=n*_,_*=this._pf,m<<=1,p*=2,u<<=1,b*=2,c<<=1,f*=2,p>=1&&(m++,p--),b>=1&&(u++,b--),f>=1&&(c++,f--)}return x}noiseDetail(e,t){e>0&&(this._po=e),t>0&&(this._pf=t)}noiseSeed(e=null){e!=null&&this._e.seed(e);let t=this._e.rand||Math.random;for(let s=0;s<i+1;s++)this._p[s]=t()}};globalThis.utils=Object.assign(globalThis.utils||{},y);})();
1
+ (()=>{var T=Object.defineProperty;var E=(o,e)=>{for(var t in e)T(o,t,{get:e[t],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(o=!0)=>{for(let e in globalThis.utils)e!=="global"&&(o||globalThis[e]===void 0)&&(globalThis[e]=globalThis.utils[e])};var v={};E(v,{Noise:()=>y});var k=4,h=1<<k,A=8,P=1<<A,i=4095,N=o=>.5*(1-Math.cos(o*Math.PI)),y=class{_p=[];_po=4;_pf=.5;_e=null;constructor(e){this._e=e||globalThis,this.noiseSeed()}noise(e,t=0,r=0){e<0&&(e=-e),t<0&&(t=-t),r<0&&(r=-r);let m=Math.floor(e),l=Math.floor(t),p=Math.floor(r),b=e-m,c=t-l,f=r-p,u,g,x=0,w=.5,n,a,d;for(let _=0;_<this._po;_++){let s=m+(l<<k)+(p<<A);u=N(b),g=N(c),n=this._p[s&i],n+=u*(this._p[s+1&i]-n),a=this._p[s+h&i],a+=u*(this._p[s+h+1&i]-a),n+=g*(a-n),s+=P,a=this._p[s&i],a+=u*(this._p[s+1&i]-a),d=this._p[s+h&i],d+=u*(this._p[s+h+1&i]-d),a+=g*(d-a),n+=N(f)*(a-n),x+=n*w,w*=this._pf,m<<=1,b*=2,l<<=1,c*=2,p<<=1,f*=2,b>=1&&(m++,b--),c>=1&&(l++,c--),f>=1&&(p++,f--)}return x}noiseDetail(e,t){e>0&&(this._po=e),t>0&&(this._pf=t)}noiseSeed(e=null){e!=null&&this._e.rseed(e);let t=this._e.rand||Math.random;for(let r=0;r<i+1;r++)this._p[r]=t()}};globalThis.utils=Object.assign(globalThis.utils||{},v);})();
package/dist/tween.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var p=Object.defineProperty;var b=(t,e)=>{for(var s in e)p(t,s,{get:e[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(t=!0)=>{for(let e in globalThis.utils)e!=="global"&&(t||globalThis[e]===void 0)&&(globalThis[e]=globalThis.utils[e])};var l={};b(l,{BACK_IN:()=>_,BACK_IN_OUT:()=>x,BACK_OUT:()=>F,BOUNCE_IN:()=>c,BOUNCE_IN_OUT:()=>T,BOUNCE_OUT:()=>u,EASE_IN:()=>f,EASE_IN_OUT:()=>g,EASE_OUT:()=>d,ELASTIC_IN:()=>v,ELASTIC_IN_OUT:()=>w,ELASTIC_OUT:()=>y,LINEAR:()=>m,tween:()=>h});var n=Math.PI/2,h=(t,e,s,a=1,r=m)=>new o(t,e,s,a,r),m=t=>t,f=t=>t*t,d=t=>-t*(t-2),g=t=>t<.5?2*t*t:-2*t*t+4*t-1,_=t=>t*t*t-t*Math.sin(t*Math.PI),F=t=>{let e=1-t;return 1-(e*e*e-e*Math.sin(e*Math.PI))},x=t=>{if(t<.5){let s=2*t;return .5*(s*s*s-s*Math.sin(s*Math.PI))}let e=1-(2*t-1);return .5*(1-(e*e*e-e*Math.sin(t*Math.PI)))+.5},v=t=>Math.sin(13*n*t)*Math.pow(2,10*(t-1)),y=t=>Math.sin(-13*n*(t+1))*Math.pow(2,-10*t)+1,w=t=>{if(t<.5){let a=Math.sin(13*n*(2*t)),r=Math.pow(2,10*(2*t-1));return .5*a*r}let e=Math.sin(-13*n*(2*t-1+1)),s=Math.pow(2,-10*(2*t-1));return .5*(e*s+2)},c=t=>1-u(1-t),u=t=>t<4/11?121*t*t/16:t<8/11?363/40*t*t-99/10*t+17/5:t<9/10?4356/361*t*t-35442/1805*t+16061/1805:54/5*t*t-513/25*t+268/25,T=t=>t<.5?.5*c(t*2):.5*u(t*2-1)+.5,o=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(e,s,a,r,i){this._o=e,this._p=s,this._x=a,this._d=r,this._e=i,this._w=0}start(e){if(this.running)return this;this._cu.stop(!1),this._ch=this._cu=this,this.running=!0;let s=this._o[this._p]||0,a=this._rel?s+this._x:this._x;return this._lc=this._lc||e||globalThis,this._u=this._lc.listen("update",r=>{if(this._t<=this._w){this._t+=r;return}let i=this._t-this._w;this._o[this._p]=this._lc.lerp(s,a,this._e(i/this._d)),this._t+=r,i>=this._d&&(this._o[this._p]=a,this.stop())}),this}stop(e=!0){if(!this._u)return this;if(this.running=!1,this._u(),this._t=0,e)for(let s of this._cb)s(this._o);return this}restart(e=null,s=!1){return this.stop(s).restart(e)}onEnd(e){return this._cb.push(e),this}chain(e){return this._ch.onEnd(()=>{this._cu=e.start(this._lc)}),this._ch=e,this}reset(){return this._cb.length=0,this.stop()}relative(e=!0){return this._rel=e,this}delay(e){return this._w=e,this}get current(){return this._cu}get progress(){return this.running&&this._t>this._w?(this._t-this._w)/this._d:0}};globalThis.utils=Object.assign(globalThis.utils||{},l);})();
1
+ (()=>{var c=Object.defineProperty;var b=(e,t)=>{for(var r in t)c(e,r,{get:t[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=(e=!0)=>{for(let t in globalThis.utils)t!=="global"&&(e||globalThis[t]===void 0)&&(globalThis[t]=globalThis.utils[t])};var m={};b(m,{BACK_IN:()=>_,BACK_IN_OUT:()=>y,BACK_OUT:()=>N,BOUNCE_IN:()=>p,BOUNCE_IN_OUT:()=>A,BOUNCE_OUT:()=>o,EASE_IN:()=>f,EASE_IN_OUT:()=>g,EASE_OUT:()=>d,ELASTIC_IN:()=>x,ELASTIC_IN_OUT:()=>v,ELASTIC_OUT:()=>w,LINEAR:()=>l,tween:()=>h});var n=Math.PI/2,h=(e,t,r,s=1,a=l)=>new u(e,t,r,s,a),l=e=>e,f=e=>e*e,d=e=>-e*(e-2),g=e=>e<.5?2*e*e:-2*e*e+4*e-1,_=e=>e*e*e-e*Math.sin(e*Math.PI),N=e=>{let t=1-e;return 1-(t*t*t-t*Math.sin(t*Math.PI))},y=e=>{if(e<.5){let r=2*e;return .5*(r*r*r-r*Math.sin(r*Math.PI))}let t=1-(2*e-1);return .5*(1-(t*t*t-t*Math.sin(e*Math.PI)))+.5},x=e=>Math.sin(13*n*e)*Math.pow(2,10*(e-1)),w=e=>Math.sin(-13*n*(e+1))*Math.pow(2,-10*e)+1,v=e=>{if(e<.5){let s=Math.sin(13*n*(2*e)),a=Math.pow(2,10*(2*e-1));return .5*s*a}let t=Math.sin(-13*n*(2*e-1+1)),r=Math.pow(2,-10*(2*e-1));return .5*(t*r+2)},p=e=>1-o(1-e),o=e=>e<4/11?121*e*e/16:e<8/11?363/40*e*e-99/10*e+17/5:e<9/10?4356/361*e*e-35442/1805*e+16061/1805:54/5*e*e-513/25*e+268/25,A=e=>e<.5?.5*p(e*2):.5*o(e*2-1)+.5,u=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(t,r,s,a,i){this._o=t,this._p=r,this._x=s,this._d=a,this._e=i,this._w=0}start(t){if(this.running)return this;this._cu.stop(!1),this._ch=this._cu=this,this.running=!0;let r=this._o[this._p]||0,s=this._rel?r+this._x:this._x;return this._lc=this._lc||t||globalThis,this._u=this._lc.listen("update",a=>{if(this._t<=this._w){this._t+=a;return}let i=this._t-this._w;this._o[this._p]=this._lc.lerp(r,s,this._e(i/this._d)),this._t+=a,i>=this._d&&(this._o[this._p]=s,this.stop())}),this}stop(t=!0){if(!this._u)return this;if(this.running=!1,this._u(),this._t=0,t)for(let r of this._cb)r(this._o);return this}restart(t=null,r=!1){return this.stop(r).restart(t)}onEnd(t){return this._cb.push(t),this}chain(t){return this._ch.onEnd(()=>{this._cu=t.start(this._lc)}),this._ch=t,this}reset(){return this._cb.length=0,this.stop()}relative(t=!0){return this._rel=t,this}delay(t){return this._w=t,this}get current(){return this._cu}get progress(){return this.running&&this._t>this._w?(this._t-this._w)/this._d:0}};globalThis.utils=Object.assign(globalThis.utils||{},m);})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litecanvas/utils",
3
- "version": "0.32.0",
3
+ "version": "0.34.0",
4
4
  "description": "Utilities to help build litecanvas games",
5
5
  "author": "Luiz Bills <luizbills@pm.me>",
6
6
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "litecanvas": "latest"
38
38
  },
39
39
  "devDependencies": {
40
- "esbuild": "^0.25.1",
40
+ "esbuild": "^0.25.5",
41
41
  "gzip-size": "^7.0.0",
42
42
  "prettier": "^3.5.3"
43
43
  }
@@ -23,12 +23,6 @@ export default class Camera {
23
23
  /** @type {number} */
24
24
  scale = 1
25
25
 
26
- _shake = {
27
- x: 0,
28
- y: 0,
29
- removeListener: null,
30
- }
31
-
32
26
  /**
33
27
  * @param {LitecanvasInstance} engine
34
28
  */
@@ -38,13 +32,16 @@ export default class Camera {
38
32
  this.ox = ox
39
33
  this.oy = oy
40
34
 
41
- this.resize(
42
- width || this._engine.WIDTH - ox,
43
- height || this._engine.HEIGHT - oy
44
- )
35
+ this.resize(width || this._engine.W - ox, height || this._engine.H - oy)
45
36
 
46
37
  this.x = this.width / 2
47
38
  this.y = this.height / 2
39
+
40
+ this._shake = {
41
+ x: 0,
42
+ y: 0,
43
+ removeListener: null,
44
+ }
48
45
  }
49
46
 
50
47
  resize(width, height) {
@@ -171,33 +168,6 @@ export default class Camera {
171
168
  return [this.ox, this.oy, this.width, this.height]
172
169
  }
173
170
 
174
- /**
175
- * Check if a rect is inside of the camera.
176
- *
177
- * @param {number} x
178
- * @param {number} y
179
- * @param {number} width
180
- * @param {number} height
181
- * @returns {boolean}
182
- */
183
- viewing(x, y, width, height) {
184
- const cameraX = this.width / 2 - this.x
185
- const cameraY = this.height / 2 - this.y
186
- const cameraWidth = this.width / this.scale
187
- const cameraHeight = this.height / this.scale
188
-
189
- return this._engine.colrect(
190
- x,
191
- y,
192
- width,
193
- height,
194
- cameraX,
195
- cameraY,
196
- cameraWidth,
197
- cameraHeight
198
- )
199
- }
200
-
201
171
  /**
202
172
  * Shake the camera
203
173
  *
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Returns the resulting rectangle of the intersection between two rectangles.
3
- * Note: this function should be called with or after `litecanvas#colrect`.
3
+ * Note: this function should be called with or after `colrect`.
4
4
  *
5
5
  * @param {number} x1
6
6
  * @param {number} y1
@@ -2,7 +2,7 @@ import intersection from "./intersection"
2
2
  /**
3
3
  * Determines the direction of the collision between two rectangles and
4
4
  * the new position of the first rectangle to be adjusted.
5
- * Note: this function should be called with or after `litecanvas#colrect`.
5
+ * Note: this function should be called with or after `colrect`.
6
6
  *
7
7
  * @param {number} x1
8
8
  * @param {number} y1
@@ -41,29 +41,6 @@ function init() {
41
41
  }
42
42
  ```
43
43
 
44
- ## wave
45
-
46
- Interpolate between 2 values using a periodic function (default: `Math.sin`).
47
-
48
- Syntax: `wave(lower: number, higher: number, time: number, fn = Math.sin): number`
49
-
50
- ```js
51
- import litecanvas from "litecanvas"
52
- import { wave } from "@litecanvas/utils"
53
-
54
- litecanvas({
55
- loop: { draw },
56
- })
57
-
58
- function draw() {
59
- cls(0)
60
- const y = wave(-200, 200, ELAPSED)
61
- circfill(CENTERX, CENTERY + y, 50, 4)
62
- }
63
- ```
64
-
65
- [See in playground](https://litecanvas.js.org?c=eJwlyrEKwjAUheE9T3HGBKME0UVwEM0mIuqgY4ytBC6JNGlLKXl3bVwOP4evTY7i4k3haYgLRi5V1vjORD4ygEL4bDDi1ZgeWbIsGKtbb5MLvpxcYHKWIldiiuBjwoAtetNVfL5USqKMPu7OV30oyDW2dkR8r083fblL%2FOOBGQaJ9U%2BvBMtfqxAsyg%3D%3D)
66
-
67
44
  ## advance
68
45
 
69
46
  Move a vector (position) using another vectors: velocity (required) and acceleration (optional).
@@ -79,14 +56,14 @@ import { vec, advance } from "@litecanvas/utils"
79
56
  litecanvas()
80
57
 
81
58
  function init() {
82
- pos = vec(0, CENTERY)
59
+ pos = vec(0, CY)
83
60
  vel = vec(0, 0)
84
61
  acc = vec(100, 0)
85
62
  }
86
63
 
87
64
  function update(dt) {
88
65
  advance(pos, vel, acc, dt)
89
- if (pos.x > WIDTH) {
66
+ if (pos.x > W) {
90
67
  pos.x = 0
91
68
  }
92
69
  }
package/src/math/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export { default as diff } from "./diff.js"
2
- export { default as wave } from "./wave.js"
3
2
  export { default as fract } from "./fract.js"
4
3
  export { default as advance } from "./advance.js"
5
4
  export { default as mod } from "./mod.js"
@@ -155,11 +155,12 @@ export class Noise {
155
155
 
156
156
  /**
157
157
  * Sets a seed for the Perlin noise generator, ensuring deterministic results.
158
+ *
158
159
  * @param {number} value - Seed value.
159
160
  */
160
161
  noiseSeed(value = null) {
161
162
  if (value != null) {
162
- this._e.seed(value)
163
+ this._e.rseed(value)
163
164
  }
164
165
  const random = this._e.rand || Math.random
165
166
  for (let i = 0; i < PERLIN_SIZE + 1; i++) {
@@ -33,7 +33,7 @@ litecanvas()
33
33
  function init() {
34
34
  pos = {
35
35
  x: 100,
36
- y: CENTERY,
36
+ y: CY,
37
37
  }
38
38
 
39
39
  // create the animation
@@ -221,7 +221,7 @@ litecanvas()
221
221
  function init() {
222
222
  pos = {
223
223
  x: 100,
224
- y: CENTERY,
224
+ y: CY,
225
225
  }
226
226
 
227
227
  tween(pos, "x", 250, 2, BOUNCE_OUT).start()
package/src/math/wave.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Interpolate between 2 values using a periodic function (default: `Math.sin`).
3
- *
4
- * @param {number} lower
5
- * @param {number} higher
6
- * @param {number} t
7
- * @param {function} [fn=Math.sin]
8
- * @returns {number}
9
- */
10
- export default (lower, higher, t, fn = Math.sin) =>
11
- lower + ((fn(t) + 1) / 2) * (higher - lower)