-"use strict";function t(t){const i=t.onChange,s=t.intervalMS,h=t.precision;let n=0,o=0,r=0;return t=>{if(n+=t,o+=1,n<s)return;const e=Math.round(1e3*o/n/h)*h;o=0,n=0,r!==e&&(i(e),r=e)}}const i=Float32Array.BYTES_PER_ELEMENT;class ContainerInterpolator{constructor(t={}){var s,h,n,o,r,e;this.t=0,this.i=0;const l=null!==(s=t.maxCapacity)&&void 0!==s?s:4096,a=Math.min(null!==(h=t.capacity)&&void 0!==h?h:256,l),u=a*i,c=new ArrayBuffer(2*u*6);let v=0;const d=()=>{const t=u*v++;return new Float32Array(c,t,a)};this.h=l,this.o=null!==(n=t.maxDeltaAlpha)&&void 0!==n?n:.5,this.l=null!==(o=t.maxDeltaPosition)&&void 0!==o?o:100,this.u=null!==(r=t.maxDeltaRotation)&&void 0!==r?r:Math.PI/2,this.v=null!==(e=t.maxDeltaScale)&&void 0!==e?e:1,this.p=new Array(a),this.M=a,this.m=d(),this.A=d(),this.F=d(),this.C=d(),this.I=d(),this.S=d(),this.q=d(),this.B=d(),this.P=d(),this.$=d(),this._=d(),this.k=d()}capture(t){const i=this.p,s=this.m,h=this.A,n=this.F,o=this.C,r=this.I,e=this.S;this.t=0;const l=(t,a)=>{var u,c,v;if(t.destroyed)return;const d=null!==(u=t.isInterpolated)&&void 0!==u?u:t.visible,f=null!==(c=t.hasInterpolatedChildren)&&void 0!==c?c:d;if(d){null!==(v=t.isInterpolated)&&void 0!==v||(t.isInterpolated=!0);const l=this.t++;if(l>=this.M){if(this.M>=this.h)return void console.error("[ContainerInterpolator] exceeded buffer capacity:",l);this.T(2*this.M)}i[l]=t,s[l]=t.position._x,h[l]=t.position._y,o[l]=t.scale._x,r[l]=t.scale._y,n[l]=t.rotation,e[l]=t.alpha}if(f){const i=t.children;for(let t=0;t<i.length;t++)l(i[t])}};l(t);for(let t=this.t;t<this.i;t++)this.p[t]=void 0;this.i=this.t}blend(t){t=Math.min(1,Math.max(0,t));const i=this.l,s=this.v,h=this.o,n=this.u,o=this.p,r=this.m,e=this.A,l=this.F,a=this.C,u=this.I,c=this.S,v=this.q,d=this.B,f=this.P,p=this.$,M=this._,m=this.k;let A,F,y,w,C,I,g;for(let S=0;S<this.t;S++)A=o[S],void 0===A||A.destroyed||(F=(v[S]=A.position._x)-r[S],y=(d[S]=A.position._y)-e[S],C=(p[S]=A.scale._x)-a[S],I=(M[S]=A.scale._y)-u[S],w=(f[S]=A.rotation)-l[S],g=(m[S]=A.alpha)-c[S],Math.abs(F)<=i&&Math.abs(y)<=i&&A.position.set(r[S]+F*t,e[S]+y*t),Math.abs(C)<=s&&Math.abs(I)<=s&&A.scale.set(a[S]+C*t,u[S]+I*t),Math.abs(w)<=n&&(A.rotation=l[S]+w*t),Math.abs(g)<=h&&(A.alpha=c[S]+g*t))}unblend(){const t=this.p,i=this.q,s=this.B,h=this.P,n=this.$,o=this._,r=this.k;let e;for(let l=0;l<this.t;l++)e=t[l],void 0===e||e.destroyed||(e.position.set(i[l],s[l]),e.scale.set(n[l],o[l]),e.rotation=h[l],e.alpha=r[l])}T(t){const s=(t=Math.min(t,this.h))*i,h=new ArrayBuffer(2*s*6);let n=0;const o=i=>{const o=s*n++,r=new Float32Array(h,o,t);return r.set(i),r};this.M=t,this.m=o(this.m),this.A=o(this.A),this.F=o(this.F),this.C=o(this.C),this.I=o(this.I),this.S=o(this.S),this.q=o(this.q),this.B=o(this.B),this.P=o(this.P),this.$=o(this.$),this._=o(this._),this.k=o(this.k)}}const s=()=>{};exports.ContainerInterpolator=ContainerInterpolator,exports.InterpolatedTicker=class InterpolatedTicker{constructor(t){var i,s,h,n,o,r,e;this.speed=1,this.j={},this.D=0,this.G=0,this.fixedDeltaMS=null!==(i=t.fixedDeltaMS)&&void 0!==i?i:1e3/60,this.interpolation=null===(s=t.interpolation)||void 0===s||s,this.renderer=t.renderer,this.stage=t.stage,this.H=t.interpolationOptions,this.J=null!==(h=t.maxFrameTimeMS)&&void 0!==h?h:3*this.fixedDeltaMS,this.K=null!==(n=t.renderIntervalToleranceMS)&&void 0!==n?n:7,this.L=null!==(o=t.fpsIntervalMS)&&void 0!==o?o:1e3,this.N=null!==(r=t.fpsPrecision)&&void 0!==r?r:1,this.renderFPS=null!==(e=t.renderFPS)&&void 0!==e?e:0}get started(){return null!=this.O}get renderFPS(){return this.D}set renderFPS(t){if(t=Math.max(t,0),this.D=t,t){const i=1e3/t-this.K;this.G=i}else this.G=0}start(i){var h,n,o;this.started&&this.stop();const r=i.update,e=null!==(h=i.prepareRender)&&void 0!==h?h:s,l=null!==(n=i.render)&&void 0!==n?n:s,a=null!==(o=i.postRender)&&void 0!==o?o:s,u=t({onChange:t=>this.R("devicefps",t),intervalMS:this.L,precision:this.N}),c=t({onChange:t=>this.R("fps",t),intervalMS:this.L,precision:this.N}),v=new ContainerInterpolator(this.H),d=this.renderer,f=this.stage,p=this.fixedDeltaMS,M=performance.now();let m=M,A=M,F=0,y=!1,w=1;const C=t=>{this.O=requestAnimationFrame(C);const i=t-m;for(m=t,u(i),F+=this.speed*Math.min(i,this.J);F>=p;)y=this.interpolation,y&&v.capture(f),r(p),F-=p;const s=performance.now(),h=s-A;h>=this.G&&(A=s,w=y?F/p:1,e(h),y&&v.blend(w),l(h,w),d.render(f),y&&v.unblend(),c(h),a(h))};return this.O=requestAnimationFrame(C),this}stop(){null!=this.O&&(cancelAnimationFrame(this.O),this.O=void 0)}on(t,i){var s,h;return(null!==(s=(h=this.j)[t])&&void 0!==s?s:h[t]=[]).push(i),this}off(t,i){var s,h;return this.j[t]=(null!==(s=(h=this.j)[t])&&void 0!==s?s:h[t]=[]).filter((t=>t!==i)),this}R(t,...i){var s,h;for(const n of null!==(s=(h=this.j)[t])&&void 0!==s?s:h[t]=[])n(...i)}};
0 commit comments