ecspresso 0.12.1 → 0.12.3

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.
Files changed (54) hide show
  1. package/dist/ecspresso.d.ts +21 -0
  2. package/dist/index.js +4 -0
  3. package/dist/{src/index.js.map → index.js.map} +4 -4
  4. package/dist/plugins/audio.js +4 -0
  5. package/dist/{src/plugins → plugins}/audio.js.map +2 -2
  6. package/dist/plugins/bounds.js +4 -0
  7. package/dist/{src/plugins → plugins}/bounds.js.map +2 -2
  8. package/dist/plugins/camera.js +4 -0
  9. package/dist/{src/plugins → plugins}/camera.js.map +2 -2
  10. package/dist/plugins/collision.js +4 -0
  11. package/dist/{src/plugins → plugins}/collision.js.map +2 -2
  12. package/dist/plugins/coroutine.js +4 -0
  13. package/dist/{src/plugins → plugins}/coroutine.js.map +2 -2
  14. package/dist/plugins/diagnostics.js +5 -0
  15. package/dist/{src/plugins → plugins}/diagnostics.js.map +2 -2
  16. package/dist/plugins/input.js +4 -0
  17. package/dist/{src/plugins → plugins}/input.js.map +2 -2
  18. package/dist/plugins/particles.js +4 -0
  19. package/dist/{src/plugins → plugins}/particles.js.map +2 -2
  20. package/dist/plugins/physics2D.js +4 -0
  21. package/dist/{src/plugins → plugins}/physics2D.js.map +2 -2
  22. package/dist/plugins/renderers/renderer2D.js +4 -0
  23. package/dist/{src/plugins → plugins}/renderers/renderer2D.js.map +2 -2
  24. package/dist/plugins/spatial-index.js +4 -0
  25. package/dist/{src/plugins → plugins}/spatial-index.js.map +2 -2
  26. package/dist/plugins/sprite-animation.js +4 -0
  27. package/dist/{src/plugins → plugins}/sprite-animation.js.map +2 -2
  28. package/dist/plugins/state-machine.js +4 -0
  29. package/dist/{src/plugins → plugins}/state-machine.js.map +2 -2
  30. package/dist/plugins/timers.js +4 -0
  31. package/dist/{src/plugins → plugins}/timers.js.map +2 -2
  32. package/dist/plugins/transform.js +4 -0
  33. package/dist/{src/plugins → plugins}/transform.js.map +2 -2
  34. package/dist/plugins/tween.js +4 -0
  35. package/dist/{src/plugins → plugins}/tween.js.map +2 -2
  36. package/dist/resource-manager.d.ts +16 -0
  37. package/package.json +1 -1
  38. package/dist/src/index.js +0 -4
  39. package/dist/src/plugins/audio.js +0 -4
  40. package/dist/src/plugins/bounds.js +0 -4
  41. package/dist/src/plugins/camera.js +0 -4
  42. package/dist/src/plugins/collision.js +0 -4
  43. package/dist/src/plugins/coroutine.js +0 -4
  44. package/dist/src/plugins/diagnostics.js +0 -5
  45. package/dist/src/plugins/input.js +0 -4
  46. package/dist/src/plugins/particles.js +0 -4
  47. package/dist/src/plugins/physics2D.js +0 -4
  48. package/dist/src/plugins/renderers/renderer2D.js +0 -4
  49. package/dist/src/plugins/spatial-index.js +0 -4
  50. package/dist/src/plugins/sprite-animation.js +0 -4
  51. package/dist/src/plugins/state-machine.js +0 -4
  52. package/dist/src/plugins/timers.js +0 -4
  53. package/dist/src/plugins/transform.js +0 -4
  54. package/dist/src/plugins/tween.js +0 -4
@@ -1,4 +0,0 @@
1
- var{defineProperty:k,getOwnPropertyNames:p,getOwnPropertyDescriptor:S}=Object,C=Object.prototype.hasOwnProperty;var _=new WeakMap,b=(j)=>{var B=_.get(j),D;if(B)return B;if(B=k({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")p(j).map((F)=>!C.call(B,F)&&k(B,F,{get:()=>j[F],enumerable:!(D=S(j,F))||D.enumerable}));return _.set(j,B),B};var f=(j,B)=>{for(var D in B)k(j,D,{get:B[D],enumerable:!0,configurable:!0,set:(F)=>B[D]=()=>F})};var o=(j,B)=>()=>(j&&(B=j(j=0)),B);var h=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(B,D)=>(typeof require<"u"?require:B)[D]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});import{definePlugin as X}from"ecspresso";function v(j,B){return j*73856093^B*19349663}function H(j){return{cellSize:j,invCellSize:1/j,cells:new Map,entries:new Map}}function W(j){j.cells.clear(),j.entries.clear()}function Q(j,B,D,F,K,L){j.entries.set(B,{entityId:B,x:D,y:F,halfW:K,halfH:L});let N=j.invCellSize,U=Math.floor((D-K)*N),J=Math.floor((D+K)*N),$=Math.floor((F-L)*N),A=Math.floor((F+L)*N);for(let O=U;O<=J;O++)for(let M=$;M<=A;M++){let V=v(O,M),T=j.cells.get(V);if(T)T.push(B);else j.cells.set(V,[B])}}function G(j,B,D,F,K,L){let N=j.invCellSize,U=Math.floor(B*N),J=Math.floor(F*N),$=Math.floor(D*N),A=Math.floor(K*N);for(let O=U;O<=J;O++)for(let M=$;M<=A;M++){let V=j.cells.get(v(O,M));if(!V)continue;for(let T=0;T<V.length;T++){let Z=V[T];if(Z!==void 0)L.add(Z)}}}var I=new Set;function R(j,B,D,F,K){let L=I;L.clear(),G(j,B-F,D-F,B+F,D+F,L);let N=F*F;for(let U of L){let J=j.entries.get(U);if(!J)continue;let $=Math.max(J.x-J.halfW,Math.min(B,J.x+J.halfW)),A=Math.max(J.y-J.halfH,Math.min(D,J.y+J.halfH)),O=B-$,M=D-A;if(O*O+M*M<=N)K.add(U)}}var E=new Set;function Y(j){return{grid:j,queryRect(B,D,F,K){return E.clear(),G(j,B,D,F,K,E),Array.from(E)},queryRectInto(B,D,F,K,L){G(j,B,D,F,K,L)},queryRadius(B,D,F){return E.clear(),R(j,B,D,F,E),Array.from(E)},queryRadiusInto(B,D,F,K){R(j,B,D,F,K)},getEntry(B){return j.entries.get(B)}}}function l(j){let{cellSize:B=64,systemGroup:D="spatialIndex",priority:F=2000,phases:K=["fixedUpdate","postUpdate"]}=j??{},L=H(B),N=Y(L);return X({id:"spatialIndex",install(U){U.addResource("spatialIndex",N);for(let J of K){let $=J==="fixedUpdate"?"localTransform":"worldTransform";U.addSystem(`spatial-index-rebuild-${J}`).setPriority(F).inPhase(J).inGroup(D).addQuery("transforms",{with:[$]}).setProcess(({queries:A,ecs:O})=>{W(L);for(let M of A.transforms){let V=M.components[$],T=O.getComponent(M.id,"aabbCollider"),Z=O.getComponent(M.id,"circleCollider");if(!T&&!Z)continue;let{x:w,y:z}=V,P=0,q=0;if(T)w+=T.offsetX??0,z+=T.offsetY??0,P=T.width/2,q=T.height/2;if(Z)w+=Z.offsetX??0,z+=Z.offsetY??0,P=Math.max(P,Z.radius),q=Math.max(q,Z.radius);Q(L,M.id,w,z,P,q)}})}}})}export{l as createSpatialIndexPlugin};
2
-
3
- //# debugId=21279F672645A1AD64756E2164756E21
4
- //# sourceMappingURL=spatial-index.js.map
@@ -1,4 +0,0 @@
1
- var{defineProperty:V,getOwnPropertyNames:$,getOwnPropertyDescriptor:B}=Object,G=Object.prototype.hasOwnProperty;var X=new WeakMap,D=(j)=>{var z=X.get(j),E;if(z)return z;if(z=V({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")$(j).map((H)=>!G.call(z,H)&&V(z,H,{get:()=>j[H],enumerable:!(E=B(j,H))||E.enumerable}));return X.set(j,z),z};var K=(j,z)=>{for(var E in z)V(j,E,{get:z[E],enumerable:!0,configurable:!0,set:(H)=>z[E]=()=>H})};var S=(j,z)=>()=>(j&&(z=j(j=0)),z);var A=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(z,E)=>(typeof require<"u"?require:z)[E]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});import{definePlugin as P}from"ecspresso";function _(j){return Object.freeze({frames:Object.freeze([...j.frames]),frameDuration:j.frameDuration??0.1,frameDurations:j.frameDurations?Object.freeze([...j.frameDurations]):null,loop:j.loop??"loop"})}function w(j,z){return Object.freeze({id:j,clips:Object.freeze({default:_(z)}),defaultClip:"default"})}function h(j,z,E){let H={},J=Object.keys(z);for(let N of J)H[N]=_(z[N]);let M=J[0];if(!M)throw Error("defineSpriteAnimations: clips object must have at least one key");return Object.freeze({id:j,clips:Object.freeze(H),defaultClip:E?.defaultClip??M})}function x(j,z){let E=z?.initial??j.defaultClip;return{spriteAnimation:{set:j,current:E,currentFrame:0,elapsed:0,playing:!0,speed:z?.speed??1,direction:1,totalLoops:z?.totalLoops??-1,completedLoops:0,justFinished:!1,onComplete:z?.onComplete}}}function g(j,z,E,H){let J=j.getComponent(z,"spriteAnimation");if(!J)return!1;if(!(E in J.set.clips))return!1;if(E!==J.current||H?.restart===!0)J.current=E,J.currentFrame=0,J.elapsed=0,J.direction=1,J.completedLoops=0,J.justFinished=!1;if(J.playing=!0,H?.speed!==void 0)J.speed=H.speed;return j.markChanged(z,"spriteAnimation"),!0}function v(j,z){let E=j.getComponent(z,"spriteAnimation");if(!E)return!1;return E.playing=!1,!0}function C(j,z){let E=j.getComponent(z,"spriteAnimation");if(!E)return!1;return E.playing=!0,!0}function Y(j,z,E){j.playing=!1,j.justFinished=!0,j.onComplete?.({entityId:z,animation:j.current}),E.commands.removeComponent(z,"spriteAnimation")}function T(j,z,E,H){if(j.completedLoops++,z.loop==="once")return Y(j,E,H),!1;if(j.totalLoops>0&&j.completedLoops>=j.totalLoops)return Y(j,E,H),!1;if(z.loop==="pingPong")return j.direction=j.direction===1?-1:1,j.currentFrame+=j.direction,j.elapsed>0;return j.currentFrame=0,j.elapsed>0}function Z(j,z,E,H){let J=j.currentFrame+j.direction;if(J>=z.frames.length||J<0)return T(j,z,E,H);return j.currentFrame=J,!0}function U(j,z,E,H){while(!0){let J=z.frameDurations!==null?z.frameDurations[j.currentFrame]??z.frameDuration:z.frameDuration;if(J<=0){if(!Z(j,z,E,H))return;continue}let M=J-j.elapsed;if(M>0.000001)return;if(j.elapsed=M<0?-M:0,!Z(j,z,E,H))return}}function f(j){let{systemGroup:z="spriteAnimation",priority:E=0,phase:H="update"}=j??{};return P({id:"spriteAnimation",install(J){J.addSystem("sprite-animation-update").setPriority(E).inPhase(H).inGroup(z).addQuery("animations",{with:["spriteAnimation"]}).setProcess(({queries:M,dt:N,ecs:W})=>{for(let O of M.animations){let L=O.components.spriteAnimation,Q=L.set.clips[L.current];if(!Q)continue;if(L.justFinished){L.justFinished=!1;continue}if(!L.playing)continue;if(Q.frames.length<=1)continue;let R=L.currentFrame;if(L.elapsed+=N*L.speed,U(L,Q,O.id,W),L.currentFrame!==R||R===0)q(O.components,L,Q);if(L.currentFrame!==R)W.markChanged(O.id,"spriteAnimation")}})}})}function q(j,z,E){let H=j.sprite;if(H&&typeof H==="object"&&"texture"in H)H.texture=E.frames[z.currentFrame]}export{v as stopAnimation,C as resumeAnimation,g as playAnimation,h as defineSpriteAnimations,w as defineSpriteAnimation,f as createSpriteAnimationPlugin,x as createSpriteAnimation};
2
-
3
- //# debugId=60620CBBEA9B808F64756E2164756E21
4
- //# sourceMappingURL=sprite-animation.js.map
@@ -1,4 +0,0 @@
1
- var{defineProperty:Q,getOwnPropertyNames:Y,getOwnPropertyDescriptor:Z}=Object,_=Object.prototype.hasOwnProperty;var X=new WeakMap,G=(b)=>{var j=X.get(b),z;if(j)return j;if(j=Q({},"__esModule",{value:!0}),b&&typeof b==="object"||typeof b==="function")Y(b).map((A)=>!_.call(j,A)&&Q(j,A,{get:()=>b[A],enumerable:!(z=Z(b,A))||z.enumerable}));return X.set(b,j),j};var M=(b,j)=>{for(var z in j)Q(b,z,{get:j[z],enumerable:!0,configurable:!0,set:(A)=>j[z]=()=>A})};var P=(b,j)=>()=>(b&&(j=b(b=0)),j);var q=((b)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(b,{get:(j,z)=>(typeof require<"u"?require:j)[z]}):b)(function(b){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+b+'" is not supported')});import{definePlugin as $}from"ecspresso";function E(b,j){return Object.freeze({id:b,initial:j.initial,states:Object.freeze(j.states)})}function w(b,j){let z=j?.initial??b.initial;return{stateMachine:{definition:b,current:z,previous:null,stateTime:0}}}function L(b,j,z,A){let H=z.definition.states,D=H[z.current],B=H[A];if(!B)return!1;return D?.onExit?.({ecs:b,entityId:j}),z.previous=z.current,z.current=A,z.stateTime=0,B.onEnter?.({ecs:b,entityId:j}),b.markChanged(j,"stateMachine"),b.eventBus.publish("stateTransition",{entityId:j,from:z.previous,to:z.current,definitionId:z.definition.id}),!0}function T(b,j,z){let A=b.getComponent(j,"stateMachine");if(!A)return!1;return L(b,j,A,z)}function k(b,j,z){let A=b.getComponent(j,"stateMachine");if(!A)return!1;let D=A.definition.states[A.current];if(!D?.on)return!1;let B=D.on[z];if(B===void 0)return!1;if(typeof B==="string")return L(b,j,A,B);if(!B.guard({ecs:b,entityId:j}))return!1;return L(b,j,A,B.target)}function x(b,j){return b.getComponent(j,"stateMachine")?.current}function S(b){return{defineStateMachine:E}}function l(b){let{systemGroup:j="stateMachine",priority:z=0,phase:A="update"}=b??{};return $({id:"stateMachine",install(H){H.addSystem("state-machine-update").setPriority(z).inPhase(A).inGroup(j).addQuery("machines",{with:["stateMachine"]}).setOnEntityEnter("machines",({entity:D,ecs:B})=>{let K=D.components.stateMachine,R=K.definition.states,F=B;R[K.current]?.onEnter?.({ecs:F,entityId:D.id})}).setProcess(({queries:D,dt:B,ecs:K})=>{let F={ecs:K,entityId:0,dt:0};for(let O of D.machines){let J=O.components.stateMachine,U=J.definition.states;F.entityId=O.id,F.dt=B,J.stateTime+=B,U[J.current]?.onUpdate?.(F);let V=U[J.current];if(V?.transitions){for(let W of V.transitions)if(W.guard(F)){L(F.ecs,O.id,J,W.target);break}}}})}})}export{T as transitionTo,k as sendEvent,x as getStateMachineState,E as defineStateMachine,l as createStateMachinePlugin,S as createStateMachineHelpers,w as createStateMachine};
2
-
3
- //# debugId=07398C28471162FD64756E2164756E21
4
- //# sourceMappingURL=state-machine.js.map
@@ -1,4 +0,0 @@
1
- var{defineProperty:C,getOwnPropertyNames:K,getOwnPropertyDescriptor:L}=Object,M=Object.prototype.hasOwnProperty;var D=new WeakMap,Q=(j)=>{var k=D.get(j),z;if(k)return k;if(k=C({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")K(j).map((A)=>!M.call(k,A)&&C(k,A,{get:()=>j[A],enumerable:!(z=L(j,A))||z.enumerable}));return D.set(j,k),k};var S=(j,k)=>{for(var z in k)C(j,z,{get:k[z],enumerable:!0,configurable:!0,set:(A)=>k[z]=()=>A})};var U=(j,k)=>()=>(j&&(k=j(j=0)),k);var V=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(k,z)=>(typeof require<"u"?require:k)[z]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});import{definePlugin as N}from"ecspresso";function Y(j,k){return{timer:{elapsed:0,duration:j,repeat:!1,active:!0,justFinished:!1,onComplete:k?.onComplete}}}function Z(j,k){return{timer:{elapsed:0,duration:j,repeat:!0,active:!0,justFinished:!1,onComplete:k?.onComplete}}}function _(j){let{systemGroup:k="timers",priority:z=0,phase:A="preUpdate"}=j??{};return N({id:"timers",install(E){E.addSystem("timer-update").setPriority(z).inPhase(A).inGroup(k).addQuery("timers",{with:["timer"]}).setProcess(({queries:F,dt:H,ecs:J})=>{for(let B of F.timers){let{timer:x}=B.components;if(x.justFinished=!1,!x.active)continue;if(x.elapsed+=H,x.elapsed<x.duration)continue;if(x.repeat)while(x.elapsed>=x.duration)x.justFinished=!0,x.onComplete?.({entityId:B.id,duration:x.duration,elapsed:x.elapsed}),x.elapsed-=x.duration;else x.justFinished=!0,x.onComplete?.({entityId:B.id,duration:x.duration,elapsed:x.elapsed}),x.active=!1,J.commands.removeEntity(B.id)}})}})}export{_ as createTimerPlugin,Y as createTimer,Z as createRepeatingTimer};
2
-
3
- //# debugId=1EA4DDD8872B98AC64756E2164756E21
4
- //# sourceMappingURL=timers.js.map
@@ -1,4 +0,0 @@
1
- var{defineProperty:F,getOwnPropertyNames:M,getOwnPropertyDescriptor:N}=Object,O=Object.prototype.hasOwnProperty;var J=new WeakMap,V=(j)=>{var k=J.get(j),q;if(k)return k;if(k=F({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")M(j).map((v)=>!O.call(k,v)&&F(k,v,{get:()=>j[v],enumerable:!(q=N(j,v))||q.enumerable}));return J.set(j,k),k};var Z=(j,k)=>{for(var q in k)F(j,q,{get:k[q],enumerable:!0,configurable:!0,set:(v)=>k[q]=()=>v})};var _=(j,k)=>()=>(j&&(k=j(j=0)),k);var $=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:(k,q)=>(typeof require<"u"?require:k)[q]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});import{definePlugin as Q}from"ecspresso";var G={x:0,y:0,rotation:0,scaleX:1,scaleY:1},P={x:0,y:0,rotation:0,scaleX:1,scaleY:1};function R(j,k){return{localTransform:{x:j,y:k,rotation:0,scaleX:1,scaleY:1}}}function b(j,k){return{worldTransform:{x:j,y:k,rotation:0,scaleX:1,scaleY:1}}}function g(j,k,q){let v=q?.scale??q?.scaleX??1,C=q?.scale??q?.scaleY??1,z=q?.rotation??0,B={x:j,y:k,rotation:z,scaleX:v,scaleY:C};return{localTransform:{...B},worldTransform:{...B}}}function h(j){let{systemGroup:k="transform",priority:q=500,phase:v="postUpdate"}=j??{};return Q({id:"transform",install(C){C.registerRequired("localTransform","worldTransform",(z)=>({x:z.x,y:z.y,rotation:z.rotation,scaleX:z.scaleX,scaleY:z.scaleY})),C.addSystem("transform-propagation").setPriority(q).inPhase(v).inGroup(k).setProcess(({ecs:z})=>{S(z)})}})}function S(j){let k=j.entityManager;j.forEachInHierarchy((v,C)=>{let z=k.getComponent(v,"localTransform"),B=k.getComponent(v,"worldTransform");if(!z||!B)return;if(C===null)H(z,B);else{let D=k.getComponent(C,"worldTransform");if(D)U(D,z,B);else H(z,B)}j.markChanged(v,"worldTransform")});let q=j.getEntitiesWithQuery(["localTransform","worldTransform"]);for(let v of q)if(j.getParent(v.id)===null&&j.getChildren(v.id).length===0){let{localTransform:z,worldTransform:B}=v.components;H(z,B),j.markChanged(v.id,"worldTransform")}}function H(j,k){k.x=j.x,k.y=j.y,k.rotation=j.rotation,k.scaleX=j.scaleX,k.scaleY=j.scaleY}function U(j,k,q){let v=k.x*j.scaleX,C=k.y*j.scaleY,z=Math.cos(j.rotation),B=Math.sin(j.rotation),D=v*z-C*B,K=v*B+C*z;q.x=j.x+D,q.y=j.y+K,q.rotation=j.rotation+k.rotation,q.scaleX=j.scaleX*k.scaleX,q.scaleY=j.scaleY*k.scaleY}export{b as createWorldTransform,h as createTransformPlugin,g as createTransform,R as createLocalTransform,P as DEFAULT_WORLD_TRANSFORM,G as DEFAULT_LOCAL_TRANSFORM};
2
-
3
- //# debugId=6BF2C2484F41B6B264756E2164756E21
4
- //# sourceMappingURL=transform.js.map
@@ -1,4 +0,0 @@
1
- var{defineProperty:$,getOwnPropertyNames:b,getOwnPropertyDescriptor:h}=Object,E=Object.prototype.hasOwnProperty;var q=new WeakMap,g=(z)=>{var D=q.get(z),H;if(D)return D;if(D=$({},"__esModule",{value:!0}),z&&typeof z==="object"||typeof z==="function")b(z).map((J)=>!E.call(D,J)&&$(D,J,{get:()=>z[J],enumerable:!(H=h(z,J))||H.enumerable}));return q.set(z,D),D};var I=(z,D)=>{for(var H in D)$(z,H,{get:D[H],enumerable:!0,configurable:!0,set:(J)=>D[H]=()=>J})};var y=(z,D)=>()=>(z&&(D=z(z=0)),D);var C=((z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(z,{get:(D,H)=>(typeof require<"u"?require:D)[H]}):z)(function(z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+z+'" is not supported')});import{definePlugin as K}from"ecspresso";function G(z){return z}var P=1.70158,m=P*1.525,l=P+1;var u=2*Math.PI/3,c=2*Math.PI/4.5;function T(z,D,H,J,M){let{from:N,easing:U=G,loop:W="once",loops:Y=1,onComplete:X}=M??{};return{tween:{steps:[{targets:[{component:z,path:D.split("."),from:N??null,to:H}],duration:J,easing:U}],currentStep:0,elapsed:0,loop:W,totalLoops:Y,completedLoops:0,direction:1,state:"pending",onComplete:X,justFinished:!1}}}function A(z,D){let{loop:H="once",loops:J=1,onComplete:M}=D??{};return{tween:{steps:z.map((N)=>({targets:N.targets.map((U)=>({component:U.component,path:U.field.split("."),from:U.from??null,to:U.to})),duration:N.duration,easing:N.easing??G})),currentStep:0,elapsed:0,loop:H,totalLoops:J,completedLoops:0,direction:1,state:"pending",onComplete:M,justFinished:!1}}}function p(z){return{createTween:T,createTweenSequence:A}}var V={parent:{},key:""};function j(z,D){let H=D.length-1,J=z;for(let N=0;N<H;N++){let U=D[N];if(U===void 0)return null;let W=J[U];if(W===null||W===void 0||typeof W!=="object")return null;J=W}let M=D[H];if(M===void 0)return null;if(!(M in J))return null;return V.parent=J,V.key=M,V}function F(z,D){let H=j(z,D);if(!H)return null;let J=H.parent[H.key];return typeof J==="number"?J:null}function Q(z,D,H){let J=j(z,D);if(!J)return!1;return J.parent[J.key]=H,!0}function x(z,D,H){return z<D?D:z>H?H:z}function _(z,D){for(let H of z.steps)for(let J of H.targets){if(J.from!==null)continue;let M=D[J.component];if(!M||typeof M!=="object")continue;let N=F(M,J.path);if(N!==null)J.from=N;else J.from=0}}function B(z,D,H,J,M){let N=z.easing(D);for(let U of z.targets){let W=H[U.component];if(!W||typeof W!=="object")continue;let Y=U.from??0,X=Y+(U.to-Y)*N;if(Q(W,U.path,X))M.markChanged(J,U.component)}}function k(z,D,H,J){for(let M of z.targets){let N=D[M.component];if(!N||typeof N!=="object")continue;if(Q(N,M.path,M.to))J.markChanged(H,M.component)}}function O(z){for(let D of z.steps)for(let H of D.targets){let J=H.from??0;H.from=H.to,H.to=J}}function L(z,D,H){z.state="complete",z.justFinished=!0,z.onComplete?.({entityId:D,stepCount:z.steps.length}),H.commands.removeComponent(D,"tween")}function v(z,D,H){if(z.completedLoops++,z.loop==="once")return L(z,D,H),!1;if(z.totalLoops>0&&z.completedLoops>=z.totalLoops)return L(z,D,H),!1;if(z.loop==="yoyo")z.direction=z.direction===1?-1:1,O(z);return z.currentStep=0,z.elapsed>0}function R(z,D,H,J){let M=z.currentStep+1;if(M<z.steps.length){z.currentStep=M;let N=z.steps[M];if(N)for(let U of N.targets){if(U.from!==null)continue;let W=D[U.component];if(!W||typeof W!=="object")continue;let Y=F(W,U.path);U.from=Y??0}return!0}return v(z,H,J)}function S(z,D,H,J){while(!0){let M=z.steps[z.currentStep];if(!M)return;if(M.duration<=0){if(k(M,D,H,J),z.elapsed=0,!R(z,D,H,J))return;continue}if(z.elapsed>=M.duration){k(M,D,H,J);let U=z.elapsed-M.duration;if(z.elapsed=U,!R(z,D,H,J))return;continue}let N=x(z.elapsed/M.duration,0,1);B(M,N,D,H,J);return}}function o(z){let{systemGroup:D="tweens",priority:H=0,phase:J="update"}=z??{};return K({id:"tweens",install(M){M.addSystem("tween-update").setPriority(H).inPhase(J).inGroup(D).addQuery("tweens",{with:["tween"]}).setProcess(({queries:N,dt:U,ecs:W})=>{for(let Y of N.tweens){let X=Y.components.tween,Z=Y.components;if(X.justFinished){X.justFinished=!1;continue}if(X.state==="complete")continue;if(X.state==="pending")_(X,Z),X.state="active";if(!X.steps[X.currentStep])continue;X.elapsed+=U,S(X,Z,Y.id,W)}})}})}export{A as createTweenSequence,o as createTweenPlugin,p as createTweenHelpers,T as createTween};
2
-
3
- //# debugId=1C20A762DFA57F8364756E2164756E21
4
- //# sourceMappingURL=tween.js.map