ecspresso
Version:
A minimal Entity-Component-System library for typescript and javascript.
5 lines (3 loc) • 1.41 kB
JavaScript
var X=((A)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(B,H)=>(typeof require<"u"?require:B)[H]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')});import{definePlugin as W}from"ecspresso";function _(A,B){return{elapsed:0,duration:A,repeat:!1,active:!0,justFinished:!1,onComplete:B?.onComplete}}function $(A,B){return{elapsed:0,duration:A,repeat:!0,active:!0,justFinished:!1,onComplete:B?.onComplete}}function D(A){let{systemGroup:B="timers",priority:H=0,phase:M="preUpdate"}=A??{};return W("timers").withComponentTypes().withLabels().withGroups().install((N)=>{N.addSystem("timer-update").setPriority(H).inPhase(M).inGroup(B).addQuery("timers",{with:["timers"]}).setProcess(({queries:U,dt:V})=>{for(let J of U.timers){let L=J.components.timers;for(let K in L){let z=L[K];if(!z)continue;if(z.justFinished=!1,!z.active)continue;if(z.elapsed+=V,z.elapsed<z.duration)continue;if(z.repeat)while(z.elapsed>=z.duration)z.justFinished=!0,z.onComplete?.({entityId:J.id,slot:K,duration:z.duration,elapsed:z.elapsed}),z.elapsed-=z.duration;else z.justFinished=!0,z.onComplete?.({entityId:J.id,slot:K,duration:z.duration,elapsed:z.elapsed}),z.active=!1}}})})}export{D as createTimerPlugin,_ as createTimer,$ as createRepeatingTimer};
//# debugId=5793392D19F4504664756E2164756E21
//# sourceMappingURL=timers.js.map