@litecanvas/utils 0.20.0 → 0.22.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/all.js +40 -11
- package/dist/all.min.js +2 -2
- package/dist/camera.js +3 -1
- package/dist/camera.min.js +1 -1
- package/dist/math.min.js +1 -1
- package/dist/tween.js +37 -10
- package/dist/tween.min.js +1 -1
- package/package.json +1 -1
- package/src/camera/index.js +3 -1
- package/src/math/advance.js +1 -1
- package/src/tween/index.js +41 -10
package/dist/all.js
CHANGED
|
@@ -180,7 +180,9 @@
|
|
|
180
180
|
start(clip = false) {
|
|
181
181
|
this._engine.push();
|
|
182
182
|
if (clip) {
|
|
183
|
-
|
|
183
|
+
const region = path();
|
|
184
|
+
region.rect(this.ox, this.oy, this.width, this.height);
|
|
185
|
+
this._engine.clip(region);
|
|
184
186
|
}
|
|
185
187
|
const centerX = this.ox + this.width / 2, centerY = this.oy + this.height / 2;
|
|
186
188
|
this._engine.translate(centerX, centerY);
|
|
@@ -978,6 +980,8 @@
|
|
|
978
980
|
_x;
|
|
979
981
|
/** @type {number} */
|
|
980
982
|
_d;
|
|
983
|
+
/** @type {number} */
|
|
984
|
+
_w;
|
|
981
985
|
/** @type {(x: number) => number} */
|
|
982
986
|
_e;
|
|
983
987
|
/** @type {boolean} */
|
|
@@ -1007,6 +1011,7 @@
|
|
|
1007
1011
|
this._x = toValue;
|
|
1008
1012
|
this._d = duration;
|
|
1009
1013
|
this._e = easing;
|
|
1014
|
+
this._w = 0;
|
|
1010
1015
|
}
|
|
1011
1016
|
/**
|
|
1012
1017
|
* @param {LitecanvasInstance} [engine]
|
|
@@ -1022,13 +1027,14 @@
|
|
|
1022
1027
|
const toValue = this._rel ? fromValue + this._x : this._x;
|
|
1023
1028
|
this._lc = this._lc || engine || globalThis;
|
|
1024
1029
|
this._u = this._lc.listen("update", (dt) => {
|
|
1025
|
-
this.
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
+
if (this._t <= this._w) {
|
|
1031
|
+
this._t += dt;
|
|
1032
|
+
return;
|
|
1033
|
+
}
|
|
1034
|
+
const t = this._t - this._w;
|
|
1035
|
+
this._o[this._p] = this._lc.lerp(fromValue, toValue, this._e(t / this._d));
|
|
1030
1036
|
this._t += dt;
|
|
1031
|
-
if (
|
|
1037
|
+
if (t >= this._d) {
|
|
1032
1038
|
this._o[this._p] = toValue;
|
|
1033
1039
|
this.stop();
|
|
1034
1040
|
}
|
|
@@ -1038,6 +1044,7 @@
|
|
|
1038
1044
|
}
|
|
1039
1045
|
/**
|
|
1040
1046
|
* @param {Function} callback
|
|
1047
|
+
* @returns {this}
|
|
1041
1048
|
*/
|
|
1042
1049
|
onEnd(callback) {
|
|
1043
1050
|
this._cb.push(callback);
|
|
@@ -1045,7 +1052,7 @@
|
|
|
1045
1052
|
}
|
|
1046
1053
|
/**
|
|
1047
1054
|
* @param {boolean} completed if `false` don't call the `onEnd()` registered callbacks.
|
|
1048
|
-
* @returns
|
|
1055
|
+
* @returns {this}
|
|
1049
1056
|
*/
|
|
1050
1057
|
stop(completed = true) {
|
|
1051
1058
|
if (!this.running || !this._u) return;
|
|
@@ -1061,7 +1068,7 @@
|
|
|
1061
1068
|
}
|
|
1062
1069
|
/**
|
|
1063
1070
|
* @param {TweenController} another
|
|
1064
|
-
* @returns {
|
|
1071
|
+
* @returns {this}
|
|
1065
1072
|
*/
|
|
1066
1073
|
chain(another) {
|
|
1067
1074
|
this._ch.onEnd(() => {
|
|
@@ -1070,24 +1077,46 @@
|
|
|
1070
1077
|
this._ch = another;
|
|
1071
1078
|
return this;
|
|
1072
1079
|
}
|
|
1080
|
+
/**
|
|
1081
|
+
* @param {boolean} [flag=true]
|
|
1082
|
+
* @returns {this}
|
|
1083
|
+
*/
|
|
1073
1084
|
reset() {
|
|
1074
1085
|
this._cb.length = 0;
|
|
1075
1086
|
return this.stop();
|
|
1076
1087
|
}
|
|
1088
|
+
/**
|
|
1089
|
+
* @param {boolean} [flag=true]
|
|
1090
|
+
* @returns {this}
|
|
1091
|
+
*/
|
|
1077
1092
|
relative(flag = true) {
|
|
1078
1093
|
this._rel = flag;
|
|
1079
1094
|
return this;
|
|
1080
1095
|
}
|
|
1096
|
+
/**
|
|
1097
|
+
* @param {number} value
|
|
1098
|
+
* @returns {this}
|
|
1099
|
+
*/
|
|
1100
|
+
delay(value) {
|
|
1101
|
+
this._w = value;
|
|
1102
|
+
return this;
|
|
1103
|
+
}
|
|
1081
1104
|
/**
|
|
1082
1105
|
* Returns the current tween of the chain.
|
|
1083
1106
|
*
|
|
1084
|
-
* @returns {
|
|
1107
|
+
* @returns {this}
|
|
1085
1108
|
*/
|
|
1086
1109
|
get current() {
|
|
1087
1110
|
return this._cu;
|
|
1088
1111
|
}
|
|
1112
|
+
/**
|
|
1113
|
+
* @returns {number} the current progress (0..1)
|
|
1114
|
+
*/
|
|
1089
1115
|
get progress() {
|
|
1090
|
-
|
|
1116
|
+
if (this.running && this._t > this._w) {
|
|
1117
|
+
return (this._t - this._w) / this._d;
|
|
1118
|
+
}
|
|
1119
|
+
return 0;
|
|
1091
1120
|
}
|
|
1092
1121
|
};
|
|
1093
1122
|
|
package/dist/all.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{var Q=Object.defineProperty;var v=(e,t)=>{for(var s in t)Q(e,s,{get:t[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let e in globalThis.utils)e!=="global"&&(globalThis[e]=globalThis.utils[e])};var k={};v(k,{ANCHOR_BOT_LEFT:()=>
|
|
2
|
-
`)}},M=class e extends g{constructor(t,s,i=Uint8Array){super(t,s,null),this._c=new i(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,i,r)=>{t.set(s,i,r)}),t}};function X(e,t,s){return e<t?t:e>s?s:e}var I=Math.sqrt,R=Math.cos,Y=Math.sin,tt=2*Math.PI,p=class{x;y;constructor(t=0,s=t){this.x=t,this.y=s}toString(){return`Vector (${this.x}, ${this.y})`}},l=e=>e instanceof p,n=(e=0,t=e)=>(l(e)&&(t=e.y,e=e.x),new p(e,t)),
|
|
1
|
+
(()=>{var Q=Object.defineProperty;var v=(e,t)=>{for(var s in t)Q(e,s,{get:t[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let e in globalThis.utils)e!=="global"&&(globalThis[e]=globalThis.utils[e])};var k={};v(k,{ANCHOR_BOT_LEFT:()=>Ht,ANCHOR_BOT_RIGHT:()=>At,ANCHOR_CENTER:()=>It,ANCHOR_TOP_LEFT:()=>G,ANCHOR_TOP_RIGHT:()=>bt,Actor:()=>S,BACK_IN:()=>kt,BACK_IN_OUT:()=>Pt,BACK_OUT:()=>Lt,BOUNCE_IN:()=>J,BOUNCE_IN_OUT:()=>Bt,BOUNCE_OUT:()=>D,Camera:()=>f,DOWN:()=>Et,EASE_IN:()=>St,EASE_IN_OUT:()=>Dt,EASE_OUT:()=>Ct,ELASTIC_IN:()=>Xt,ELASTIC_IN_OUT:()=>Yt,ELASTIC_OUT:()=>Rt,Grid:()=>g,LEFT:()=>Mt,LINEAR:()=>Z,ONE:()=>mt,RIGHT:()=>wt,TypedGrid:()=>M,UP:()=>Tt,Vector:()=>p,ZERO:()=>F,advance:()=>q,diff:()=>V,fract:()=>$,intersection:()=>x,mod:()=>K,range:()=>z,resolve:()=>P,tween:()=>Ot,vec:()=>n,vecAbs:()=>ft,vecAdd:()=>H,vecAngle:()=>ht,vecAngleBetween:()=>at,vecCeil:()=>pt,vecClamp:()=>xt,vecCross:()=>ct,vecDist:()=>ot,vecDist2:()=>nt,vecDiv:()=>y,vecDot:()=>W,vecEq:()=>b,vecFloor:()=>_t,vecIsZero:()=>yt,vecLerp:()=>lt,vecLimit:()=>rt,vecMag:()=>U,vecMag2:()=>N,vecMove:()=>gt,vecMult:()=>_,vecNorm:()=>O,vecRand:()=>ut,vecReflect:()=>st,vecRotate:()=>et,vecRound:()=>dt,vecSet:()=>B,vecSetMag:()=>it,vecSub:()=>A,wave:()=>j});var x=(e,t,s,i,r,o,h,a)=>{let c=Math.max(e,r),L=Math.min(e+s,r+h)-c,d=Math.max(t,o),T=Math.min(t+i,o+a)-d;return[c,d,L,T]};var P=(e,t,s,i,r,o,h,a)=>{let[c,L,d,T]=x(e,t,s,i,r,o,h,a),u="",w=e,E=t;return d<T?e<r?(u="right",w=r-s):(u="left",w=r+h):t<o?(u="bottom",E=o-i):(u="top",E=o+a),{direction:u,x:w,y:E}};var f=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,i=0,r=null,o=null){this._engine=t||globalThis,this.ox=s,this.oy=i,this.resize(r||this._engine.WIDTH-s,o||this._engine.HEIGHT-i),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 r=path();r.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(r)}let s=this.ox+this.width/2,i=this.oy+this.height/2;this._engine.translate(s,i),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,i={}){let r=Math.cos(-this.rotation),o=Math.sin(-this.rotation);return t=(t-this.width/2-this.ox)/this.scale,s=(s-this.height/2-this.oy)/this.scale,i.x=r*t-o*s+this.x,i.y=o*t+r*s+this.y,i}getCameraPoint(t,s,i={}){let r=Math.cos(-this.rotation),o=Math.sin(-this.rotation);return t=t-this.x,s=s-this.y,t=r*t-o*s,s=o*t+r*s,i.x=t*this.scale+this.width/2+this.ox,i.y=s*this.scale+this.height/2+this.oy,i}getBounds(){return[this.ox,this.oy,this.width,this.height]}viewing(t,s,i,r){let o=this.width/2-this.x,h=this.height/2-this.y,a=this.width/this.scale,c=this.height/this.scale;return this._engine.colrect(t,s,i,r,o,h,a,c)}shake(t=1,s=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",i=>{this._shake.x=this._engine.randi(-t,t),this._shake.y=this._engine.randi(-t,t),s-=i,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 g=class e{_w;_h;_c;constructor(t,s,i=[]){this._w=Math.max(1,~~t),this._h=Math.max(1,~~s),this._c=i}[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,i){this._c[this.pointToIndex(t,s)]=i}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 i=s?this.length-1:0,r=s?-1:this.length,o=s?-1:1;for(;i!==r;){let h=this.indexToPointX(i),a=this.indexToPointY(i),c=this._c[i];if(t(h,a,c,this)===!1)break;i+=o}}fill(t){this.forEach((s,i)=>{this.set(s,i,t)})}clampX(t){return X(t,0,this._w-1)}clampY(t){return X(t,0,this._h-1)}toArray(){return this._c.slice()}toString(t=" ",s=!0){if(!s)return this._c.join(t);let i=[];return this.forEach((r,o,h)=>{i[o]=i[o]||"",i[o]+=h+t}),i.join(`
|
|
2
|
+
`)}},M=class e extends g{constructor(t,s,i=Uint8Array){super(t,s,null),this._c=new i(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,i,r)=>{t.set(s,i,r)}),t}};function X(e,t,s){return e<t?t:e>s?s:e}var I=Math.sqrt,R=Math.cos,Y=Math.sin,tt=2*Math.PI,p=class{x;y;constructor(t=0,s=t){this.x=t,this.y=s}toString(){return`Vector (${this.x}, ${this.y})`}},l=e=>e instanceof p,n=(e=0,t=e)=>(l(e)&&(t=e.y,e=e.x),new p(e,t)),b=(e,t,s=t)=>l(t)?b(e,t.x,t.y):e.x===t&&e.y===s,B=(e,t,s=t)=>(l(t)?B(e,t.x,t.y):(e.x=t,e.y=s),e),H=(e,t,s=t)=>l(t)?H(e,t.x,t.y):(e.x+=t,e.y+=s,e),A=(e,t,s=t)=>l(t)?A(e,t.x,t.y):(e.x-=t,e.y-=s,e),_=(e,t,s=t)=>l(t)?_(e,t.x,t.y):(e.x*=t,e.y*=s,e),y=(e,t,s=t)=>l(t)?y(e,t.x,t.y):(e.x/=t||1,e.y/=s||1,e),et=(e,t)=>{let s=R(t),i=Y(t);return e.x=s*e.x-i*e.y,e.y=i*e.x+s*e.y,e},st=(e,t)=>{let s=O(n(t));return A(e,_(s,2*W(e,s)))},it=(e,t)=>(O(e),_(e,t),e),U=e=>I(e.x*e.x+e.y*e.y),N=e=>e.x*e.x+e.y*e.y,O=e=>{let t=U(e);return t>0&&y(e,t),e},rt=(e,t=1)=>{let s=N(e);return s>t*t&&(y(e,I(s)),_(e,t)),e},ot=(e,t)=>{let s=e.x-t.x,i=e.y-t.y;return I(s*s+i*i)},nt=(e,t)=>{let s=e.x-t.x,i=e.y-t.y;return s*s+i*i},ht=e=>Math.atan2(e.y,e.x),at=(e,t)=>Math.atan2(t.y-e.y,t.x-e.x),W=(e,t)=>e.x*t.x+e.y*t.y,ct=(e,t)=>e.x*t.y-e.y*t.x,lt=(e,t,s)=>(e.x+=(t.x-e.x)*s||0,e.y+=(t.y-e.y)*s||0,e),ut=(e=1,t=e,s=globalThis.rand||Math.random)=>{let i=s()*tt,r=s()*(t-e)+e;return n(R(i)*r,Y(i)*r)},ft=e=>(e.x=Math.abs(e.x),e.y=Math.abs(e.y),e),pt=e=>(e.x=Math.ceil(e.x),e.y=Math.ceil(e.y),e),_t=e=>(e.x=Math.floor(e.x),e.y=Math.floor(e.y),e),dt=e=>(e.x=Math.round(e.x),e.y=Math.round(e.y),e),xt=(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)=>H(e,t.x*s,t.y*s),yt=e=>b(e,F),F=n(0,0),mt=n(1,1),Tt=n(0,-1),wt=n(1,0),Et=n(0,1),Mt=n(-1,0);var It=n(.5,.5),G=n(0,0),bt=n(1,0),Ht=n(0,1),At=n(1,1),S=class{sprite;pos;_o;_s;flipX=!1;flipY=!1;angle=0;opacity=1;hidden=!1;constructor(t,s,i=G){this.sprite=t,this.pos=s||n(0),this._o=n(i),this._s=n(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),i=this.sprite.height*(t?this._s.y:1),r=this.pos.x-s*this.anchor.x,o=this.pos.y-i*this.anchor.y;return[r,o,s,i]}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 i=this.anchor,r=-this.sprite.width*(this.flipX?1-i.x:i.x),o=-this.sprite.height*(this.flipY?1-i.y:i.y);s&&t.alpha(this.opacity),t.image(r,o,this.sprite)}};var V=(e,t)=>Math.abs(t-e)||0;var j=(e,t,s,i=Math.sin)=>e+(i(s)+1)/2*(t-e);var $=e=>e%1||0;var z=e=>Array.from(Array(e).keys());var q=advance=(e,t,s,i=1)=>{s&&(t.x+=s.x*i,t.y+=s.y*i),e.x+=t.x*i,e.y+=t.y*i};var K=(e,t)=>(t+e%t)%t;var m=Math.PI/2,Ot=(e,t,s,i=1,r=Z)=>new C(e,t,s,i,r),Z=e=>e,St=e=>e*e,Ct=e=>-e*(e-2),Dt=e=>e<.5?2*e*e:-2*e*e+4*e-1,kt=e=>e*e*e-e*Math.sin(e*Math.PI),Lt=e=>{let t=1-e;return 1-(t*t*t-t*Math.sin(t*Math.PI))},Pt=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},Xt=e=>Math.sin(13*m*e)*Math.pow(2,10*(e-1)),Rt=e=>Math.sin(-13*m*(e+1))*Math.pow(2,-10*e)+1,Yt=e=>{if(e<.5){let i=Math.sin(13*m*(2*e)),r=Math.pow(2,10*(2*e-1));return .5*i*r}let t=Math.sin(-13*m*(2*e-1+1)),s=Math.pow(2,-10*(2*e-1));return .5*(t*s+2)},J=e=>1-D(1-e),D=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,Bt=e=>e<.5?.5*J(e*2):.5*D(e*2-1)+.5,C=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(t,s,i,r,o){this._o=t,this._p=s,this._x=i,this._d=r,this._e=o,this._w=0}start(t){this.running||this.stop(),this._cu.stop(!1),this._ch=this._cu=this;let s=this._o[this._p]||0,i=this._rel?s+this._x:this._x;return this._lc=this._lc||t||globalThis,this._u=this._lc.listen("update",r=>{if(this._t<=this._w){this._t+=r;return}let o=this._t-this._w;this._o[this._p]=this._lc.lerp(s,i,this._e(o/this._d)),this._t+=r,o>=this._d&&(this._o[this._p]=i,this.stop())}),this.running=!0,this}onEnd(t){return this._cb.push(t),this}stop(t=!0){if(!(!this.running||!this._u)){if(this.running=!1,this._u(),this._t=0,t)for(let s of this._cb)s(this._o);return 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||{},k);})();
|
|
3
3
|
/*! @litecanvas/utils by Luiz Bills | MIT Licensed */
|
package/dist/camera.js
CHANGED
|
@@ -58,7 +58,9 @@
|
|
|
58
58
|
start(clip = false) {
|
|
59
59
|
this._engine.push();
|
|
60
60
|
if (clip) {
|
|
61
|
-
|
|
61
|
+
const region = path();
|
|
62
|
+
region.rect(this.ox, this.oy, this.width, this.height);
|
|
63
|
+
this._engine.clip(region);
|
|
62
64
|
}
|
|
63
65
|
const centerX = this.ox + this.width / 2, centerY = this.oy + this.height / 2;
|
|
64
66
|
this._engine.translate(centerX, centerY);
|
package/dist/camera.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let o in globalThis.utils)o!=="global"&&(globalThis[o]=globalThis.utils[o])};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(
|
|
1
|
+
(()=>{globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let o in globalThis.utils)o!=="global"&&(globalThis[o]=globalThis.utils[o])};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(t=null,i=0,s=0,h=null,e=null){this._engine=t||globalThis,this.ox=i,this.oy=s,this.resize(h||this._engine.WIDTH-i,e||this._engine.HEIGHT-s),this.x=this.width/2,this.y=this.height/2}resize(t,i){this.width=t,this.height=i,this._engine.emit("camera-resized",this)}start(t=!1){if(this._engine.push(),t){let h=path();h.rect(this.ox,this.oy,this.width,this.height),this._engine.clip(h)}let i=this.ox+this.width/2,s=this.oy+this.height/2;this._engine.translate(i,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(t,i){this.x=t,this.y=i}move(t,i){this.x+=t,this.y+=i}zoom(t){this.scale*=t}zoomTo(t){this.scale=t}rotate(t){this.rotation+=t}rotateTo(t){this.rotation=t}getWorldPoint(t,i,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return t=(t-this.width/2-this.ox)/this.scale,i=(i-this.height/2-this.oy)/this.scale,s.x=h*t-e*i+this.x,s.y=e*t+h*i+this.y,s}getCameraPoint(t,i,s={}){let h=Math.cos(-this.rotation),e=Math.sin(-this.rotation);return t=t-this.x,i=i-this.y,t=h*t-e*i,i=e*t+h*i,s.x=t*this.scale+this.width/2+this.ox,s.y=i*this.scale+this.height/2+this.oy,s}getBounds(){return[this.ox,this.oy,this.width,this.height]}viewing(t,i,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(t,i,s,h,e,a,l,r)}shake(t=1,i=.3){this.shaking||(this._shake.removeListener=this._engine.listen("update",s=>{this._shake.x=this._engine.randi(-t,t),this._shake.y=this._engine.randi(-t,t),i-=s,i<=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/math.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var p=Object.defineProperty;var l=(t,o)=>{for(var r in o)p(t,r,{get:o[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let t in globalThis.utils)t!=="global"&&(globalThis[t]=globalThis.utils[t])};var s={};l(s,{advance:()=>
|
|
1
|
+
(()=>{var p=Object.defineProperty;var l=(t,o)=>{for(var r in o)p(t,r,{get:o[r],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let t in globalThis.utils)t!=="global"&&(globalThis[t]=globalThis.utils[t])};var s={};l(s,{advance:()=>a,diff:()=>n,fract:()=>x,mod:()=>u,range:()=>y,wave:()=>c});var n=(t,o)=>Math.abs(o-t)||0;var c=(t,o,r,e=Math.sin)=>t+(e(r)+1)/2*(o-t);var x=t=>t%1||0;var y=t=>Array.from(Array(t).keys());var g=2*Math.PI;var a=advance=(t,o,r,e=1)=>{r&&(o.x+=r.x*e,o.y+=r.y*e),t.x+=o.x*e,t.y+=o.y*e};var u=(t,o)=>(o+t%o)%o;globalThis.utils=Object.assign(globalThis.utils||{},s);})();
|
package/dist/tween.js
CHANGED
|
@@ -102,6 +102,8 @@
|
|
|
102
102
|
_x;
|
|
103
103
|
/** @type {number} */
|
|
104
104
|
_d;
|
|
105
|
+
/** @type {number} */
|
|
106
|
+
_w;
|
|
105
107
|
/** @type {(x: number) => number} */
|
|
106
108
|
_e;
|
|
107
109
|
/** @type {boolean} */
|
|
@@ -131,6 +133,7 @@
|
|
|
131
133
|
this._x = toValue;
|
|
132
134
|
this._d = duration;
|
|
133
135
|
this._e = easing;
|
|
136
|
+
this._w = 0;
|
|
134
137
|
}
|
|
135
138
|
/**
|
|
136
139
|
* @param {LitecanvasInstance} [engine]
|
|
@@ -146,13 +149,14 @@
|
|
|
146
149
|
const toValue = this._rel ? fromValue + this._x : this._x;
|
|
147
150
|
this._lc = this._lc || engine || globalThis;
|
|
148
151
|
this._u = this._lc.listen("update", (dt) => {
|
|
149
|
-
this.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
if (this._t <= this._w) {
|
|
153
|
+
this._t += dt;
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const t = this._t - this._w;
|
|
157
|
+
this._o[this._p] = this._lc.lerp(fromValue, toValue, this._e(t / this._d));
|
|
154
158
|
this._t += dt;
|
|
155
|
-
if (
|
|
159
|
+
if (t >= this._d) {
|
|
156
160
|
this._o[this._p] = toValue;
|
|
157
161
|
this.stop();
|
|
158
162
|
}
|
|
@@ -162,6 +166,7 @@
|
|
|
162
166
|
}
|
|
163
167
|
/**
|
|
164
168
|
* @param {Function} callback
|
|
169
|
+
* @returns {this}
|
|
165
170
|
*/
|
|
166
171
|
onEnd(callback) {
|
|
167
172
|
this._cb.push(callback);
|
|
@@ -169,7 +174,7 @@
|
|
|
169
174
|
}
|
|
170
175
|
/**
|
|
171
176
|
* @param {boolean} completed if `false` don't call the `onEnd()` registered callbacks.
|
|
172
|
-
* @returns
|
|
177
|
+
* @returns {this}
|
|
173
178
|
*/
|
|
174
179
|
stop(completed = true) {
|
|
175
180
|
if (!this.running || !this._u) return;
|
|
@@ -185,7 +190,7 @@
|
|
|
185
190
|
}
|
|
186
191
|
/**
|
|
187
192
|
* @param {TweenController} another
|
|
188
|
-
* @returns {
|
|
193
|
+
* @returns {this}
|
|
189
194
|
*/
|
|
190
195
|
chain(another) {
|
|
191
196
|
this._ch.onEnd(() => {
|
|
@@ -194,24 +199,46 @@
|
|
|
194
199
|
this._ch = another;
|
|
195
200
|
return this;
|
|
196
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* @param {boolean} [flag=true]
|
|
204
|
+
* @returns {this}
|
|
205
|
+
*/
|
|
197
206
|
reset() {
|
|
198
207
|
this._cb.length = 0;
|
|
199
208
|
return this.stop();
|
|
200
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* @param {boolean} [flag=true]
|
|
212
|
+
* @returns {this}
|
|
213
|
+
*/
|
|
201
214
|
relative(flag = true) {
|
|
202
215
|
this._rel = flag;
|
|
203
216
|
return this;
|
|
204
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* @param {number} value
|
|
220
|
+
* @returns {this}
|
|
221
|
+
*/
|
|
222
|
+
delay(value) {
|
|
223
|
+
this._w = value;
|
|
224
|
+
return this;
|
|
225
|
+
}
|
|
205
226
|
/**
|
|
206
227
|
* Returns the current tween of the chain.
|
|
207
228
|
*
|
|
208
|
-
* @returns {
|
|
229
|
+
* @returns {this}
|
|
209
230
|
*/
|
|
210
231
|
get current() {
|
|
211
232
|
return this._cu;
|
|
212
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* @returns {number} the current progress (0..1)
|
|
236
|
+
*/
|
|
213
237
|
get progress() {
|
|
214
|
-
|
|
238
|
+
if (this.running && this._t > this._w) {
|
|
239
|
+
return (this._t - this._w) / this._d;
|
|
240
|
+
}
|
|
241
|
+
return 0;
|
|
215
242
|
}
|
|
216
243
|
};
|
|
217
244
|
|
package/dist/tween.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var h=Object.defineProperty;var p=(t,e)=>{for(var s in e)h(t,s,{get:e[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let t in globalThis.utils)t!=="global"&&(globalThis[t]=globalThis.utils[t])};var
|
|
1
|
+
(()=>{var h=Object.defineProperty;var p=(t,e)=>{for(var s in e)h(t,s,{get:e[s],enumerable:!0})};globalThis.utils=globalThis.utils||{};globalThis.utils.global=()=>{for(let t in globalThis.utils)t!=="global"&&(globalThis[t]=globalThis.utils[t])};var c={};p(c,{BACK_IN:()=>E,BACK_IN_OUT:()=>m,BACK_OUT:()=>x,BOUNCE_IN:()=>f,BOUNCE_IN_OUT:()=>y,BOUNCE_OUT:()=>l,EASE_IN:()=>d,EASE_IN_OUT:()=>T,EASE_OUT:()=>g,ELASTIC_IN:()=>I,ELASTIC_IN_OUT:()=>w,ELASTIC_OUT:()=>b,LINEAR:()=>u,tween:()=>_});var n=Math.PI/2,_=(t,e,s,i=1,o=u)=>new a(t,e,s,i,o),u=t=>t,d=t=>t*t,g=t=>-t*(t-2),T=t=>t<.5?2*t*t:-2*t*t+4*t-1,E=t=>t*t*t-t*Math.sin(t*Math.PI),x=t=>{let e=1-t;return 1-(e*e*e-e*Math.sin(e*Math.PI))},m=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},I=t=>Math.sin(13*n*t)*Math.pow(2,10*(t-1)),b=t=>Math.sin(-13*n*(t+1))*Math.pow(2,-10*t)+1,w=t=>{if(t<.5){let i=Math.sin(13*n*(2*t)),o=Math.pow(2,10*(2*t-1));return .5*i*o}let e=Math.sin(-13*n*(2*t-1+1)),s=Math.pow(2,-10*(2*t-1));return .5*(e*s+2)},f=t=>1-l(1-t),l=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,y=t=>t<.5?.5*f(t*2):.5*l(t*2-1)+.5,a=class{running=!1;_o;_p;_x;_d;_w;_e;_rel;_cb=[];_t=0;_u=0;_ch=this;_cu=this;_lc;constructor(e,s,i,o,r){this._o=e,this._p=s,this._x=i,this._d=o,this._e=r,this._w=0}start(e){this.running||this.stop(),this._cu.stop(!1),this._ch=this._cu=this;let s=this._o[this._p]||0,i=this._rel?s+this._x:this._x;return this._lc=this._lc||e||globalThis,this._u=this._lc.listen("update",o=>{if(this._t<=this._w){this._t+=o;return}let r=this._t-this._w;this._o[this._p]=this._lc.lerp(s,i,this._e(r/this._d)),this._t+=o,r>=this._d&&(this._o[this._p]=i,this.stop())}),this.running=!0,this}onEnd(e){return this._cb.push(e),this}stop(e=!0){if(!(!this.running||!this._u)){if(this.running=!1,this._u(),this._t=0,e)for(let s of this._cb)s(this._o);return 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||{},c);})();
|
package/package.json
CHANGED
package/src/camera/index.js
CHANGED
|
@@ -60,7 +60,9 @@ export default class Camera {
|
|
|
60
60
|
this._engine.push()
|
|
61
61
|
|
|
62
62
|
if (clip) {
|
|
63
|
-
|
|
63
|
+
const region = path()
|
|
64
|
+
region.rect(this.ox, this.oy, this.width, this.height)
|
|
65
|
+
this._engine.clip(region)
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
const centerX = this.ox + this.width / 2,
|
package/src/math/advance.js
CHANGED
package/src/tween/index.js
CHANGED
|
@@ -86,6 +86,8 @@ class TweenController {
|
|
|
86
86
|
_x
|
|
87
87
|
/** @type {number} */
|
|
88
88
|
_d
|
|
89
|
+
/** @type {number} */
|
|
90
|
+
_w
|
|
89
91
|
/** @type {(x: number) => number} */
|
|
90
92
|
_e
|
|
91
93
|
/** @type {boolean} */
|
|
@@ -117,6 +119,7 @@ class TweenController {
|
|
|
117
119
|
this._x = toValue
|
|
118
120
|
this._d = duration
|
|
119
121
|
this._e = easing
|
|
122
|
+
this._w = 0
|
|
120
123
|
}
|
|
121
124
|
|
|
122
125
|
/**
|
|
@@ -137,13 +140,17 @@ class TweenController {
|
|
|
137
140
|
this._lc = this._lc || engine || globalThis
|
|
138
141
|
|
|
139
142
|
this._u = this._lc.listen("update", (dt) => {
|
|
140
|
-
this.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
if (this._t <= this._w) {
|
|
144
|
+
this._t += dt
|
|
145
|
+
return
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const t = this._t - this._w
|
|
149
|
+
this._o[this._p] = this._lc.lerp(fromValue, toValue, this._e(t / this._d))
|
|
150
|
+
|
|
145
151
|
this._t += dt
|
|
146
|
-
|
|
152
|
+
|
|
153
|
+
if (t >= this._d) {
|
|
147
154
|
this._o[this._p] = toValue
|
|
148
155
|
this.stop()
|
|
149
156
|
}
|
|
@@ -156,6 +163,7 @@ class TweenController {
|
|
|
156
163
|
|
|
157
164
|
/**
|
|
158
165
|
* @param {Function} callback
|
|
166
|
+
* @returns {this}
|
|
159
167
|
*/
|
|
160
168
|
onEnd(callback) {
|
|
161
169
|
this._cb.push(callback)
|
|
@@ -164,7 +172,7 @@ class TweenController {
|
|
|
164
172
|
|
|
165
173
|
/**
|
|
166
174
|
* @param {boolean} completed if `false` don't call the `onEnd()` registered callbacks.
|
|
167
|
-
* @returns
|
|
175
|
+
* @returns {this}
|
|
168
176
|
*/
|
|
169
177
|
stop(completed = true) {
|
|
170
178
|
if (!this.running || !this._u) return
|
|
@@ -185,7 +193,7 @@ class TweenController {
|
|
|
185
193
|
|
|
186
194
|
/**
|
|
187
195
|
* @param {TweenController} another
|
|
188
|
-
* @returns {
|
|
196
|
+
* @returns {this}
|
|
189
197
|
*/
|
|
190
198
|
chain(another) {
|
|
191
199
|
this._ch.onEnd(() => {
|
|
@@ -195,26 +203,49 @@ class TweenController {
|
|
|
195
203
|
return this
|
|
196
204
|
}
|
|
197
205
|
|
|
206
|
+
/**
|
|
207
|
+
* @param {boolean} [flag=true]
|
|
208
|
+
* @returns {this}
|
|
209
|
+
*/
|
|
198
210
|
reset() {
|
|
199
211
|
this._cb.length = 0
|
|
200
212
|
return this.stop()
|
|
201
213
|
}
|
|
202
214
|
|
|
215
|
+
/**
|
|
216
|
+
* @param {boolean} [flag=true]
|
|
217
|
+
* @returns {this}
|
|
218
|
+
*/
|
|
203
219
|
relative(flag = true) {
|
|
204
220
|
this._rel = flag
|
|
205
221
|
return this
|
|
206
222
|
}
|
|
207
223
|
|
|
224
|
+
/**
|
|
225
|
+
* @param {number} value
|
|
226
|
+
* @returns {this}
|
|
227
|
+
*/
|
|
228
|
+
delay(value) {
|
|
229
|
+
this._w = value
|
|
230
|
+
return this
|
|
231
|
+
}
|
|
232
|
+
|
|
208
233
|
/**
|
|
209
234
|
* Returns the current tween of the chain.
|
|
210
235
|
*
|
|
211
|
-
* @returns {
|
|
236
|
+
* @returns {this}
|
|
212
237
|
*/
|
|
213
238
|
get current() {
|
|
214
239
|
return this._cu
|
|
215
240
|
}
|
|
216
241
|
|
|
242
|
+
/**
|
|
243
|
+
* @returns {number} the current progress (0..1)
|
|
244
|
+
*/
|
|
217
245
|
get progress() {
|
|
218
|
-
|
|
246
|
+
if (this.running && this._t > this._w) {
|
|
247
|
+
return (this._t - this._w) / this._d
|
|
248
|
+
}
|
|
249
|
+
return 0
|
|
219
250
|
}
|
|
220
251
|
}
|