ecspresso 0.12.7 → 0.12.9

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/README.md CHANGED
@@ -81,6 +81,17 @@ world.update(1/60);
81
81
  - [Type Safety](./docs/type-safety.md) — type threading, error handling
82
82
  - [Performance](./docs/performance.md) — optimization tips
83
83
 
84
+ ## Claude Code Skill
85
+
86
+ ECSpresso ships with a [Claude Code](https://claude.com/claude-code) plugin that installs a skill teaching the assistant the library's patterns, APIs, and built-in plugins. Install it to get ECSpresso-aware assistance when working on projects that use the library:
87
+
88
+ ```
89
+ /plugin marketplace add DeeGeeGames/ecspresso
90
+ /plugin install ecspresso@ecspresso
91
+ ```
92
+
93
+ The skill sources live under [`skills/ecspresso/`](./skills/ecspresso/); plugin and marketplace metadata are in [`.claude-plugin/`](./.claude-plugin/).
94
+
84
95
  ## License
85
96
 
86
97
  MIT
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var l=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:($,J)=>(typeof require<"u"?require:$)[J]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});class M{parentMap=new Map;childrenMap=new Map;setParent(j,$){if(j===$)throw Error(`Cannot set entity ${j} as its own parent`);if(this.wouldCreateCycle(j,$))throw Error("Cannot set parent: would create circular reference");let J=this.parentMap.get(j);if(J!==void 0){let Y=this.childrenMap.get(J);if(Y){let Z=Y.indexOf(j);if(Z!==-1)Y.splice(Z,1)}}this.parentMap.set(j,$);let X=this.childrenMap.get($);if(X)X.push(j);else this.childrenMap.set($,[j]);return this}removeParent(j){let $=this.parentMap.get(j);if($===void 0)return!1;let J=this.childrenMap.get($);if(J){let X=J.indexOf(j);if(X!==-1)J.splice(X,1)}return this.parentMap.delete(j),!0}getParent(j){return this.parentMap.get(j)??null}getChildren(j){let $=this.childrenMap.get(j);return $?[...$]:[]}getChildAt(j,$){if($<0)return null;let J=this.childrenMap.get(j);if(!J||$>=J.length)return null;return J[$]??null}getChildIndex(j,$){let J=this.childrenMap.get(j);if(!J)return-1;return J.indexOf($)}removeEntity(j){let $=this.parentMap.get(j)??null;if($!==null){let Y=this.childrenMap.get($);if(Y){let Z=Y.indexOf(j);if(Z!==-1)Y.splice(Z,1)}}this.parentMap.delete(j);let J=this.childrenMap.get(j)??[],X=[...J];for(let Y of J)this.parentMap.delete(Y);return this.childrenMap.delete(j),{oldParent:$,orphanedChildren:X}}getAncestors(j){let $=[],J=this.parentMap.get(j);while(J!==void 0)$.push(J),J=this.parentMap.get(J);return $}getDescendants(j){let $=[],J=this.childrenMap.get(j);if(!J)return $;let X=J.slice().reverse();while(X.length>0){let Y=X.pop();$.push(Y);let Z=this.childrenMap.get(Y);if(Z)for(let W=Z.length-1;W>=0;W--)X.push(Z[W])}return $}getRoot(j){let $=j,J=this.parentMap.get($);while(J!==void 0)$=J,J=this.parentMap.get($);return $}getSiblings(j){let $=this.parentMap.get(j);if($===void 0)return[];let J=this.childrenMap.get($);if(!J)return[];return J.filter((X)=>X!==j)}isDescendantOf(j,$){if(j===$)return!1;let J=this.parentMap.get(j);while(J!==void 0){if(J===$)return!0;J=this.parentMap.get(J)}return!1}isAncestorOf(j,$){return this.isDescendantOf($,j)}getRootEntities(){let j=[];for(let $ of this.childrenMap.keys())if(!this.parentMap.has($))j.push($);return j}wouldCreateCycle(j,$){let J=$;while(J!==void 0){if(J===j)return!0;J=this.parentMap.get(J)}return!1}forEachInHierarchy(j,$){let J=$?.roots??this.getRootEntities(),X=[];for(let Y of J)X.push({entityId:Y,parentId:null,depth:0});for(let Y of X){j(Y.entityId,Y.parentId,Y.depth);let Z=this.childrenMap.get(Y.entityId);if(Z)for(let W of Z)X.push({entityId:W,parentId:Y.entityId,depth:Y.depth+1})}}*hierarchyIterator(j){let $=j?.roots??this.getRootEntities(),J=[];for(let X of $)J.push({entityId:X,parentId:null,depth:0});for(let X of J){yield X;let Y=this.childrenMap.get(X.entityId);if(Y)for(let Z of Y)J.push({entityId:Z,parentId:X.entityId,depth:X.depth+1})}}}class T{callbacks=[];_iterDepth=0;_pendingRemovals=[];add(j){this.callbacks.push(j)}remove(j){if(this._iterDepth>0){this._pendingRemovals.push(j);return}let $=this.callbacks.indexOf(j);if($!==-1)this.callbacks.splice($,1)}invoke(j){this._iterDepth++;let $=this.callbacks.length;for(let J=0;J<$;J++){let X=this.callbacks[J];if(X)X(j)}if(this._iterDepth--,this._iterDepth===0&&this._pendingRemovals.length>0){for(let J of this._pendingRemovals){let X=this.callbacks.indexOf(J);if(X!==-1)this.callbacks.splice(X,1)}this._pendingRemovals.length=0}}}class H{nextId=1;entities=new Map;componentIndices=new Map;addedCallbacks=new Map;removedCallbacks=new Map;hierarchyManager=new M;disposeCallbacks=new Map;changeSeqs=new Map;_changeSeq=0;_afterComponentAddedHooks=[];_afterEntityMutatedHooks=[];_afterComponentRemovedHooks=[];_beforeEntityRemovedHooks=[];_afterParentChangedHooks=[];_batchingDepth=0;_batchedEntityIds=new Set;_pendingBatchKeys=null;get entityCount(){return this.entities.size}createEntity(){let j=this.nextId++,$={id:j,components:{}};return this.entities.set(j,$),$}registerDispose(j,$){this.disposeCallbacks.set(j,$)}getDisposeCallbacks(){return this.disposeCallbacks}invokeDispose(j,$,J){let X=this.disposeCallbacks.get(j);if(!X)return;try{X({value:$,entityId:J})}catch(Y){console.warn(`Component dispose callback for '${String(j)}' threw:`,Y)}}addComponent(j,$,J){let X=this.entities.get(j);if(!X)throw Error(`Cannot add component '${String($)}': Entity with ID ${j} does not exist`);let Y=X.components[$];if(Y!==void 0)this.invokeDispose($,Y,X.id);if(X.components[$]=J,!this.componentIndices.has($))this.componentIndices.set($,new Set);this.componentIndices.get($)?.add(X.id);let Z=this.addedCallbacks.get($);if(Z)Z.invoke({value:J,entity:X});this._batchingDepth++;for(let W of this._afterComponentAddedHooks)W(X.id,$);if(this._batchedEntityIds.add(X.id),this._batchingDepth--,this._batchingDepth===0){for(let W of this._batchedEntityIds)for(let B of this._afterEntityMutatedHooks)B(W);this._batchedEntityIds.clear()}return this}addComponents(j,$){let J=this.entities.get(j);if(!J)throw Error(`Cannot add components: Entity with ID ${j} does not exist`);let X=this._pendingBatchKeys;this._pendingBatchKeys=new Set(Object.keys($)),this._batchingDepth++;for(let Y in $)this.addComponent(J.id,Y,$[Y]);if(this._batchingDepth--,this._pendingBatchKeys=X,this._batchingDepth===0){for(let Y of this._batchedEntityIds)for(let Z of this._afterEntityMutatedHooks)Z(Y);this._batchedEntityIds.clear()}return this}removeComponent(j,$){let J=this.entities.get(j);if(!J)throw Error(`Cannot remove component '${String($)}': Entity with ID ${j} does not exist`);let X=J.components[$];if(X!==void 0)this.invokeDispose($,X,J.id);delete J.components[$];let Y=this.removedCallbacks.get($);if(Y&&X!==void 0)Y.invoke({value:X,entity:J});if(this.componentIndices.get($)?.delete(J.id),X!==void 0)for(let Z of this._afterComponentRemovedHooks)Z(J.id,$);return this}getComponent(j,$){let J=this.entities.get(j);if(!J)throw Error(`Cannot get component '${String($)}': Entity with ID ${j} does not exist`);return J.components[$]}getEntitiesWithQuery(j=[],$=[],J,X,Y){return this.getEntitiesWithQueryInto([],j,$,J,X,Y)}getEntitiesWithQueryInto(j,$=[],J=[],X,Y,Z){j.length=0;let W=X!==void 0&&X.length>0&&Y!==void 0,B=Z!==void 0&&Z.length>0;if($.length===0){if(J.length===0&&!W&&!B){for(let L of this.entities.values())j.push(L);return j}for(let L of this.entities.values()){if(J.length>0&&!J.every((D)=>!(D in L.components)))continue;if(W){let D=this.changeSeqs.get(L.id);if(!D)continue;if(!X.some((_)=>(D.get(_)??-1)>Y))continue}if(B&&!this.parentHasComponents(L.id,Z))continue;j.push(L)}return j}let A=$[0];if(A===void 0)return j;let U=$.reduce((L,D)=>{let _=this.componentIndices.get(D)?.size??0,Q=this.componentIndices.get(L)?.size??1/0;return _<Q?D:L},A),G=this.componentIndices.get(U);if(!G||G.size===0)return j;let F=J.length>0;for(let L of G){let D=this.entities.get(L);if(D&&$.every((_)=>(_ in D.components))&&(!F||J.every((_)=>!(_ in D.components)))){if(W){let _=this.changeSeqs.get(L);if(!_||!X.some((Q)=>(_.get(Q)??-1)>Y))continue}if(B&&!this.parentHasComponents(L,Z))continue;j.push(D)}}return j}parentHasComponents(j,$){let J=this.hierarchyManager.getParent(j);if(J===null)return!1;let X=this.entities.get(J);if(!X)return!1;for(let Y of $)if(!(Y in X.components))return!1;return!0}removeEntity(j,$){let J=this.entities.get(j);if(!J)return!1;if($?.cascade??!0){let Y=this.hierarchyManager.getDescendants(J.id);for(let Z=Y.length-1;Z>=0;Z--){let W=Y[Z];if(W===void 0)continue;for(let B of this._beforeEntityRemovedHooks)B(W)}for(let Z of this._beforeEntityRemovedHooks)Z(J.id);for(let Z=Y.length-1;Z>=0;Z--){let W=Y[Z];if(W===void 0)continue;this.removeEntityInternal(W)}}else for(let Y of this._beforeEntityRemovedHooks)Y(J.id);return this.removeEntityInternal(J.id)}removeEntityInternal(j){let $=this.entities.get(j);if(!$)return!1;this.hierarchyManager.removeEntity(j);for(let J of Object.keys($.components)){let X=$.components[J];if(X!==void 0){this.invokeDispose(J,X,$.id);let Y=this.removedCallbacks.get(J);if(Y)Y.invoke({value:X,entity:$})}this.componentIndices.get(J)?.delete($.id)}return this.changeSeqs.delete($.id),this.entities.delete($.id)}getEntity(j){return this.entities.get(j)}onComponentAdded(j,$){let J=$,X=this.addedCallbacks.get(j);if(!X)X=new T,this.addedCallbacks.set(j,X);return X.add(J),()=>{this.addedCallbacks.get(j)?.remove(J)}}onComponentRemoved(j,$){let J=$,X=this.removedCallbacks.get(j);if(!X)X=new T,this.removedCallbacks.set(j,X);return X.add(J),()=>{this.removedCallbacks.get(j)?.remove(J)}}onAfterComponentAdded(j){return this._afterComponentAddedHooks.push(j),()=>{let $=this._afterComponentAddedHooks.indexOf(j);if($!==-1)this._afterComponentAddedHooks.splice($,1)}}onAfterEntityMutated(j){return this._afterEntityMutatedHooks.push(j),()=>{let $=this._afterEntityMutatedHooks.indexOf(j);if($!==-1)this._afterEntityMutatedHooks.splice($,1)}}onAfterComponentRemoved(j){return this._afterComponentRemovedHooks.push(j),()=>{let $=this._afterComponentRemovedHooks.indexOf(j);if($!==-1)this._afterComponentRemovedHooks.splice($,1)}}onBeforeEntityRemoved(j){return this._beforeEntityRemovedHooks.push(j),()=>{let $=this._beforeEntityRemovedHooks.indexOf(j);if($!==-1)this._beforeEntityRemovedHooks.splice($,1)}}onAfterParentChanged(j){return this._afterParentChangedHooks.push(j),()=>{let $=this._afterParentChangedHooks.indexOf(j);if($!==-1)this._afterParentChangedHooks.splice($,1)}}get changeSeq(){return this._changeSeq}markChanged(j,$){let J=++this._changeSeq,X=this.changeSeqs.get(j);if(!X)X=new Map,this.changeSeqs.set(j,X);X.set($,J)}getChangeSeq(j,$){return this.changeSeqs.get(j)?.get($)??-1}spawnChild(j,$){let J=this.createEntity();return this.addComponents(J.id,$),this.setParent(J.id,j),J}setParent(j,$){this.hierarchyManager.setParent(j,$);for(let J of this._afterParentChangedHooks)J(j);return this}removeParent(j){let $=this.hierarchyManager.removeParent(j);if($)for(let J of this._afterParentChangedHooks)J(j);return $}getParent(j){return this.hierarchyManager.getParent(j)}getChildren(j){return this.hierarchyManager.getChildren(j)}getChildAt(j,$){return this.hierarchyManager.getChildAt(j,$)}getChildIndex(j,$){return this.hierarchyManager.getChildIndex(j,$)}getAncestors(j){return this.hierarchyManager.getAncestors(j)}getDescendants(j){return this.hierarchyManager.getDescendants(j)}getRoot(j){return this.hierarchyManager.getRoot(j)}getSiblings(j){return this.hierarchyManager.getSiblings(j)}isDescendantOf(j,$){return this.hierarchyManager.isDescendantOf(j,$)}isAncestorOf(j,$){return this.hierarchyManager.isAncestorOf(j,$)}getRootEntities(){return this.hierarchyManager.getRootEntities()}forEachInHierarchy(j,$){this.hierarchyManager.forEachInHierarchy(j,$)}hierarchyIterator(j){return this.hierarchyManager.hierarchyIterator(j)}}class V{handlers=new Map;subscribe(j,$){return this.addHandler(j,$,!1)}once(j,$){return this.addHandler(j,$,!0)}unsubscribe(j,$){let J=this.handlers.get(j);if(!J)return!1;let X=J.findIndex((Y)=>Y.callback===$);if(X===-1)return!1;return J.splice(X,1),!0}addHandler(j,$,J){let X=this.handlers.get(j);if(!X)X=[],this.handlers.set(j,X);let Y={callback:$,once:J};return X.push(Y),()=>{let Z=this.handlers.get(j);if(Z){let W=Z.indexOf(Y);if(W!==-1)Z.splice(W,1)}}}publish(...[j,$]){let J=this.handlers.get(j);if(!J||J.length===0)return;let X=!1,Y=J.length;for(let Z=0;Z<Y&&Z<J.length;Z++){let W=J[Z];if(!W)continue;if(W.callback($),W.once)X=!0}if(X){for(let Z=J.length-1;Z>=0;Z--)if(J[Z]?.once)J.splice(Z,1)}}clear(){this.handlers.clear()}clearEvent(j){this.handlers.delete(j)}}var x=Symbol("resource-direct");function I(j){return{[x]:j}}function p(j){return typeof j==="object"&&j!==null&&"factory"in j&&typeof j.factory==="function"}function u(j){return typeof j==="object"&&j!==null&&x in j}function f(j,$){let J=[],X=new Set,Y=new Set;function Z(W,B=[]){if(X.has(W))return;if(Y.has(W))throw Error(`Circular resource dependency: ${[...B,W].join(" -> ")}`);Y.add(W);for(let A of $(W)){let U=j.find((G)=>G===A);if(U)Z(U,[...B,W])}Y.delete(W),X.add(W),J.push(W)}for(let W of j)Z(W);return J}class E{resources=new Map;resourceFactories=new Map;resourceDependencies=new Map;resourceDisposers=new Map;initializedResourceKeys=new Set;_changeSubscribers=new Map;add(j,$){let J=(X)=>{this.resources.set(j,X),this.initializedResourceKeys.add(j),this.resourceDependencies.set(j,[])};if(p($)){if(this.resourceFactories.set(j,$.factory),this.resourceDependencies.set(j,$.dependsOn??[]),$.onDispose)this.resourceDisposers.set(j,$.onDispose)}else if(u($))J($[x]);else if(typeof $==="function")this.resourceFactories.set(j,$),this.resourceDependencies.set(j,[]);else J($);return this}tryGet(j,...$){if(!this.has(j))return;return this.get(j,...$)}get(j,...$){let J=this.resources.get(j);if(J!==void 0)return J;let X=this.resourceFactories.get(j);if(X===void 0)throw Error(`Resource ${String(j)} not found`);let Y=$[0],Z=X(Y);if(!(Z instanceof Promise))this.resources.set(j,Z),this.initializedResourceKeys.add(j);return Z}has(j){return this.resources.has(j)||this.resourceFactories.has(j)}remove(j){let $=this.resources.delete(j),J=this.resourceFactories.delete(j);return this.resourceDependencies.delete(j),this.resourceDisposers.delete(j),this.initializedResourceKeys.delete(j),$||J}getKeys(){let j=new Set([...this.resources.keys(),...this.resourceFactories.keys()]);return Array.from(j)}needsInitialization(j){return this.resourceFactories.has(j)&&!this.initializedResourceKeys.has(j)}getPendingInitializationKeys(){return Array.from(this.resourceFactories.keys()).filter((j)=>!this.initializedResourceKeys.has(j))}async initializeResource(j,...$){if(!this.resourceFactories.has(j)||this.initializedResourceKeys.has(j))return;let J=this.resourceFactories.get(j);if(!J)return;let X=$[0],Y=await J(X);this.resources.set(j,Y),this.initializedResourceKeys.add(j),this.resourceFactories.delete(j)}async initializeResources(...j){let $=j.slice(1),J=$.length===0?this.getPendingInitializationKeys():$;if(J.length===0)return;let X=f(J,(Y)=>[...this.resourceDependencies.get(Y)??[]]);for(let Y of X)await this.initializeResource(Y,...j.slice(0,1))}getDependencies(j){return this.resourceDependencies.get(j)??[]}async disposeResource(j,...$){if(!this.resources.has(j)&&!this.resourceFactories.has(j))return!1;if(this.initializedResourceKeys.has(j)){let J=this.resourceDisposers.get(j),X=this.resources.get(j);if(J&&X!==void 0){let Y=$[0];await J(X,Y)}}return this.resources.delete(j),this.resourceFactories.delete(j),this.resourceDependencies.delete(j),this.resourceDisposers.delete(j),this.initializedResourceKeys.delete(j),this._changeSubscribers.delete(j),!0}onResourceChange(j,$){let J=this._changeSubscribers.get(j),X=J??new Set;if(!J)this._changeSubscribers.set(j,X);let Y=$;return X.add(Y),()=>{if(X.delete(Y),X.size===0)this._changeSubscribers.delete(j)}}notifyChange(j,$,J){if(Object.is($,J))return;let X=this._changeSubscribers.get(j);if(!X||X.size===0)return;let Y=[...X];for(let Z of Y)Z($,J)}async disposeResources(...j){let $=Array.from(this.initializedResourceKeys);if($.length===0)return;let J=f($,(X)=>[...this.resourceDependencies.get(X)??[]]).reverse();for(let X of J)await this.disposeResource(X,...j)}}class R{queries=new Map;entityManager;_hasParentHasQueries=!1;constructor(j){this.entityManager=j}get hasParentHasQueries(){return this._hasParentHasQueries}addQuery(j,$){let J={definition:$,matchingEntities:new Set};if(this.queries.set(j,J),$.parentHas?.length)this._hasParentHasQueries=!0;let X=this.entityManager.getEntitiesWithQuery($.with,$.without??[]);for(let Y of X)if(this.entityMatchesQuery(Y,J.definition))J.matchingEntities.add(Y.id),J.definition.onEnter?.(Y)}removeQuery(j){let $=this.queries.delete(j);if($)this._recalcParentHasFlag();return $}entityMatchesQuery(j,$){for(let J of $.with)if(!(J in j.components))return!1;if($.without){for(let J of $.without)if(J in j.components)return!1}if($.parentHas?.length){let J=this.entityManager.getParent(j.id);if(J===null)return!1;let X=this.entityManager.getEntity(J);if(!X)return!1;for(let Y of $.parentHas)if(!(Y in X.components))return!1}return!0}_applyQueryTransition(j,$){let J=$.matchingEntities.has(j.id),X=this.entityMatchesQuery(j,$.definition);if(!J&&X)$.matchingEntities.add(j.id),$.definition.onEnter?.(j);else if(J&&!X)$.matchingEntities.delete(j.id),$.definition.onExit?.(j.id)}onComponentAdded(j,$){for(let[,J]of this.queries)this._applyQueryTransition(j,J);if(this._hasParentHasQueries)this._recheckChildren(j.id)}onComponentRemoved(j,$){for(let[,J]of this.queries)this._applyQueryTransition(j,J);if(this._hasParentHasQueries)this._recheckChildren(j.id)}onEntityRemoved(j){for(let[$,J]of this.queries)if(J.matchingEntities.has(j))J.matchingEntities.delete(j),J.definition.onExit?.(j)}recheckEntity(j){for(let[,$]of this.queries)this._applyQueryTransition(j,$)}recheckEntityAndChildren(j){if(this.recheckEntity(j),this._hasParentHasQueries)this._recheckChildren(j.id)}_recheckChildren(j){let $=this.entityManager.getChildren(j);for(let J of $){let X=this.entityManager.getEntity(J);if(X)this.recheckEntity(X)}}_recalcParentHasFlag(){this._hasParentHasQueries=!1;for(let[,j]of this.queries)if(j.definition.parentHas?.length){this._hasParentHasQueries=!0;return}}}class w{commands=[];removeEntity(j,$){this.commands.push((J)=>{J.removeEntity(j,$)})}addComponent(j,$,J){this.commands.push((X)=>{X.addComponent(j,$,J)})}removeComponent(j,$){this.commands.push((J)=>{J.removeComponent(j,$)})}spawn(j){this.commands.push(($)=>{$.spawn(j)})}spawnChild(j,$){this.commands.push((J)=>{J.spawnChild(j,$)})}addComponents(j,$){this.commands.push((J)=>{J.addComponents(j,$)})}setParent(j,$){this.commands.push((J)=>{J.setParent(j,$)})}mutateComponent(j,$,J){this.commands.push((X)=>{X.mutateComponent(j,$,J)})}markChanged(j,$){this.commands.push((J)=>{J.markChanged(j,$)})}removeParent(j){this.commands.push(($)=>{$.removeParent(j)})}playback(j){for(let $ of this.commands)try{$(j)}catch(J){console.warn("CommandBuffer: Command failed during playback:",J)}this.commands.length=0}clear(){this.commands.length=0}get length(){return this.commands.length}}function z(j){return j}class S{_label;queries={};processFunction;detachFunction;initializeFunction;eventHandlers;_priority=0;_phase="update";_groups=[];_inScreens;_excludeScreens;_requiredAssets;_runWhenEmpty=!1;_entityEnterHandlers={};_resourceKeys;constructor(j){this._label=j}get label(){return this._label}_createSystemObject(){let j={label:this._label,entityQueries:this.queries,priority:this._priority,phase:this._phase};if(this.processFunction)j.process=this.processFunction;if(this.detachFunction)j.onDetach=this.detachFunction;if(this.initializeFunction)j.onInitialize=this.initializeFunction;if(this.eventHandlers)j.eventHandlers=this.eventHandlers;if(this._groups.length>0)j.groups=[...this._groups];if(this._inScreens)j.inScreens=this._inScreens;if(this._excludeScreens)j.excludeScreens=this._excludeScreens;if(this._requiredAssets)j.requiredAssets=this._requiredAssets;if(this._runWhenEmpty)j.runWhenEmpty=!0;if(Object.keys(this._entityEnterHandlers).length>0)j.onEntityEnter={...this._entityEnterHandlers};return j}setPriority(j){return this._priority=j,this}inPhase(j){return this._phase=j,this}inGroup(j){if(!this._groups.includes(j))this._groups.push(j);return this}inScreens(j){return this._inScreens=[...j],this}excludeScreens(j){return this._excludeScreens=[...j],this}requiresAssets(j){return this._requiredAssets=[...j],this}runWhenEmpty(){return this._runWhenEmpty=!0,this}withResources(j){return this._resourceKeys=[...j],this}addQuery(j,$){let J=this;return J.queries={...this.queries,[j]:$},J}setProcess(j){if(this._resourceKeys?.length){let $=this._resourceKeys,J;this.processFunction=(X)=>{if(!J){J={};for(let Y of $)J[Y]=X.ecs.getResource(Y)}X.resources=J,j(X)}}else this.processFunction=j;return this}setOnEntityEnter(j,$){return this._entityEnterHandlers[j]=$,this}setOnDetach(j){return this.detachFunction=j,this}setOnInitialize(j){return this.initializeFunction=j,this}setEventHandlers(j){return this.eventHandlers=j,this}}function N(j,$,J){let X=new Set,Y=[$];while(Y.length>0){let Z=Y.pop();if(Z===void 0)break;if(Z===j)throw Error(`Circular required component dependency: '${String(j)}' -> '${String($)}' -> ... -> '${String(j)}'`);if(X.has(Z))continue;X.add(Z);let W=J(Z);if(W)for(let B of W)Y.push(B.component)}}var b="0.12.7";class K{assets=new Map;groups=new Map;eventBus=null;setEventBus(j){this.eventBus=j}register(j,$){if(this.assets.set(j,{definition:$,status:"pending"}),$.group){let J=this.groups.get($.group)??new Set;J.add(j),this.groups.set($.group,J)}}async loadEagerAssets(){let j=[];for(let[$,J]of this.assets)if(J.definition.eager&&J.status==="pending")j.push($);await Promise.all(j.map(($)=>this.loadAsset($)))}async loadAsset(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);if($.status==="loaded"&&$.value!==void 0)return $.value;if($.status==="loading"&&$.loadPromise)return $.loadPromise;if($.status==="failed")$.status="pending";$.status="loading",$.loadPromise=$.definition.loader();try{let J=await $.loadPromise;return $.value=J,$.status="loaded",$.loadPromise=void 0,this.eventBus?.publish("assetLoaded",{key:j}),this.checkGroupProgress($.definition.group),J}catch(J){let X=J instanceof Error?J:Error(String(J));throw $.status="failed",$.error=X,$.loadPromise=void 0,this.eventBus?.publish("assetFailed",{key:j,error:X}),X}}async loadAssetGroup(j){let $=this.groups.get(j);if(!$||$.size===0)throw Error(`Asset group '${j}' not found or empty`);await Promise.all(Array.from($).map((J)=>this.loadAsset(J)))}get(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);if($.status!=="loaded"||$.value===void 0)throw Error(`Asset '${String(j)}' is not loaded (status: ${$.status})`);return $.value}tryGet(j){let $=this.assets.get(j);if(!$||$.status!=="loaded")return;return $.value}getHandle(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);let J=this;return{get status(){return $.status},get isLoaded(){return $.status==="loaded"},get(){return J.get(j)},tryGet(){return J.tryGet(j)}}}getStatus(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);return $.status}isLoaded(j){return this.assets.get(j)?.status==="loaded"}isGroupLoaded(j){let $=this.groups.get(j);if(!$||$.size===0)return!1;for(let J of $){let X=this.assets.get(J);if(!X||X.status!=="loaded")return!1}return!0}getGroupProgress(j){return this.getGroupProgressDetails(j).progress}getGroupProgressDetails(j){let $=this.groups.get(j);if(!$||$.size===0)return{loaded:0,total:0,progress:0};let J=0;for(let Y of $)if(this.assets.get(Y)?.status==="loaded")J++;let X=$.size;return{loaded:J,total:X,progress:J/X}}checkGroupProgress(j){if(!j||!this.eventBus)return;let $=j,J=this.getGroupProgressDetails($);if(this.eventBus.publish("assetGroupProgress",{group:$,...J}),J.loaded===J.total)this.eventBus.publish("assetGroupLoaded",{group:$})}createResource(){let j=this;return{getStatus($){return j.getStatus($)},isLoaded($){return j.isLoaded($)},isGroupLoaded($){return j.isGroupLoaded($)},getGroupProgress($){return j.getGroupProgress($)},get($){return j.get($)},tryGet($){return j.tryGet($)},getHandle($){return j.getHandle($)}}}getKeys(){return Array.from(this.assets.keys())}getGroupNames(){return Array.from(this.groups.keys())}getGroupKeys(j){let $=this.groups.get(j);return $?Array.from($):[]}}class g{manager;constructor(j){this.manager=j}add(j,$){return this.manager.register(j,{loader:$,eager:!0}),this}addWithConfig(j,$){return this.manager.register(j,$),this}addGroup(j,$){for(let[J,X]of Object.entries($))this.manager.register(J,{loader:X,eager:!1,group:j});return this}getManager(){return this.manager}}function C(j){return new g(j??new K)}class O{screens=new Map;currentScreen=null;screenStack=[];eventBus=null;assetManager=null;ecs=null;setDependencies(j,$,J){this.eventBus=j,this.assetManager=$,this.ecs=J}requireEcs(){if(!this.ecs)throw Error("ScreenManager: dependencies not set. Call setDependencies() first.");return this.ecs}register(j,$){this.screens.set(j,{definition:$})}async setScreen(j,$){let J=this.screens.get(j);if(!J)throw Error(`Screen '${String(j)}' not found`);await this.verifyRequiredAssets(J.definition.requiredAssets,J.definition.requiredAssetGroups);while(this.screenStack.length>0){let Y=this.screenStack.pop();if(Y)await this.exitScreen(Y.name)}if(this.currentScreen)await this.exitScreen(this.currentScreen.name);let X=J.definition.initialState($);this.currentScreen={name:j,config:$,state:X},await J.definition.onEnter?.({config:$,ecs:this.requireEcs()}),this.eventBus?.publish("screenEnter",{screen:j,config:$})}async pushScreen(j,$){let J=this.screens.get(j);if(!J)throw Error(`Screen '${String(j)}' not found`);if(await this.verifyRequiredAssets(J.definition.requiredAssets,J.definition.requiredAssetGroups),this.currentScreen)this.screenStack.push(this.currentScreen);let X=J.definition.initialState($);this.currentScreen={name:j,config:$,state:X},await J.definition.onEnter?.({config:$,ecs:this.requireEcs()}),this.eventBus?.publish("screenPush",{screen:j,config:$})}async popScreen(){if(this.screenStack.length===0)throw Error("Cannot pop screen: stack is empty");if(this.currentScreen)await this.exitScreen(this.currentScreen.name),this.eventBus?.publish("screenPop",{screen:this.currentScreen.name});this.currentScreen=this.screenStack.pop()??null}async exitScreen(j){let $=this.screens.get(j);if($?.definition.onExit)await $.definition.onExit(this.requireEcs());this.eventBus?.publish("screenExit",{screen:j})}async verifyRequiredAssets(j,$){if(!this.assetManager)return;if(j){for(let J of j)if(!this.assetManager.isLoaded(J))await this.assetManager.loadAsset(J)}if($){for(let J of $)if(!this.assetManager.isGroupLoaded(J))await this.assetManager.loadAssetGroup(J)}}getCurrentScreen(){return this.currentScreen?.name??null}getConfig(j){if(!this.currentScreen)throw Error("No current screen");if(j!==void 0&&this.currentScreen.name!==j)throw Error(`Expected current screen '${String(j)}', but current is '${String(this.currentScreen.name)}'`);return this.currentScreen.config}tryGetConfig(j){if(!this.currentScreen)return;if(j!==void 0&&this.currentScreen.name!==j)return;return this.currentScreen.config}getState(j){if(!this.currentScreen)throw Error("No current screen");if(j!==void 0&&this.currentScreen.name!==j)throw Error(`Expected current screen '${String(j)}', but current is '${String(this.currentScreen.name)}'`);return this.currentScreen.state}tryGetState(j){if(!this.currentScreen)return;if(j!==void 0&&this.currentScreen.name!==j)return;return this.currentScreen.state}updateState(j,$){if(!this.currentScreen)throw Error("No current screen");if($!==void 0&&this.currentScreen.name!==$)throw Error(`Expected current screen '${String($)}', but current is '${String(this.currentScreen.name)}'`);let J=typeof j==="function"?j(this.currentScreen.state):j;this.currentScreen.state={...this.currentScreen.state,...J}}getStackDepth(){return this.screenStack.length}isOverlay(){return this.screenStack.length>0}isActive(j){if(this.currentScreen?.name===j)return!0;return this.screenStack.some(($)=>$.name===j)}isCurrent(j){return this.currentScreen?.name===j}createResource(){let j=this;return{get current(){return j.getCurrentScreen()},get config(){return j.tryGetConfig()??null},get state(){return j.tryGetState()??null},set state($){if(j.currentScreen&&$!==null)j.currentScreen.state=$},get stack(){return j.screenStack},get isOverlay(){return j.isOverlay()},get stackDepth(){return j.getStackDepth()},isActive($){return j.isActive($)},isCurrent($){return j.isCurrent($)}}}getScreenNames(){return Array.from(this.screens.keys())}hasScreen(j){return this.screens.has(j)}}class k{manager;constructor(j){this.manager=j}add(j,$){return this.manager.register(j,$),this}getManager(){return this.manager}}function q(j){return new k(j??new O)}class v{assetConfigurator=null;screenConfigurator=null;pendingResources=[];pendingDisposeCallbacks=[];pendingRequiredComponents=[];pendingPlugins=[];_fixedDt=null;constructor(){}withPlugin(j){return this.pendingPlugins.push(j),this}withComponentTypes(){return this}withEventTypes(){return this}withResourceTypes(){return this}withResource(j,$){return this.pendingResources.push({key:j,value:$}),this}withDispose(j,$){return this.pendingDisposeCallbacks.push({key:j,callback:$}),this}withRequired(j,$,J){return this.pendingRequiredComponents.push({trigger:j,required:$,factory:J}),this}withAssets(j){let $=C();return j($),this.assetConfigurator=$,this}withScreens(j){let $=q();return j($),this.screenConfigurator=$,this}withFixedTimestep(j){return this._fixedDt=j,this}withReactiveQueryNames(){return this}pluginFactory(){return z}build(){let j=new P;for(let $ of this.pendingPlugins)j.installPlugin($);for(let{key:$,value:J}of this.pendingResources)j.addResource($,J);for(let{key:$,callback:J}of this.pendingDisposeCallbacks)j.registerDispose($,J);for(let{trigger:$,required:J,factory:X}of this.pendingRequiredComponents)j.registerRequired($,J,X);if(this.assetConfigurator)j._setAssetManager(this.assetConfigurator.getManager());else if(j._hasPendingPluginAssets())j._setAssetManager(new K);if(this.screenConfigurator)j._setScreenManager(this.screenConfigurator.getManager());else if(j._hasPendingPluginScreens())j._setScreenManager(new O);if(this._fixedDt!==null)j._setFixedDt(this._fixedDt);return j}}var h=["preUpdate","fixedUpdate","update","postUpdate","render"];class P{static VERSION=b;_entityManager;_eventBus;_resourceManager;_commandBuffer;_systems=[];_phaseSystems={preUpdate:[],fixedUpdate:[],update:[],postUpdate:[],render:[]};_installedPlugins=new Set;_disabledGroups=new Set;_assetManager=null;_screenManager=null;_reactiveQueryManager;_postUpdateHooks=[];_currentTick=0;_systemLastSeqs=new Map;_changeThreshold=0;_fixedDt=0.016666666666666666;_fixedAccumulator=0;_interpolationAlpha=0;_maxFixedSteps=8;_requiredComponents=new Map;_pendingPluginAssets=[];_pendingPluginScreens=[];_diagnosticsEnabled=!1;_systemTimings=new Map;_phaseTimings={preUpdate:0,fixedUpdate:0,update:0,postUpdate:0,render:0};_entityEnterTracking=new Map;_entityEnterFrameSet=new Set;_systemContexts=new WeakMap;_pendingFinalizers=[];_batchingRegistrations=!1;constructor(){this._entityManager=new H,this._eventBus=new V,this._resourceManager=new E,this._reactiveQueryManager=new R(this._entityManager),this._commandBuffer=new w,this._subscribeLifecycleHooks()}_subscribeLifecycleHooks(){this._entityManager.onAfterComponentAdded((j,$)=>{this._entityManager.markChanged(j,$);let J=this._requiredComponents.get($);if(J){let X=this._entityManager.getEntity(j);if(X){let Y=X.components[$];for(let{component:Z,factory:W}of J){if(this._entityManager._pendingBatchKeys?.has(Z))continue;if(!(Z in X.components))this._entityManager.addComponent(j,Z,W(Y))}}}}),this._entityManager.onAfterEntityMutated((j)=>{let $=this._entityManager.getEntity(j);if($)this._reactiveQueryManager.recheckEntityAndChildren($)}),this._entityManager.onAfterComponentRemoved((j,$)=>{let J=this._entityManager.getEntity(j);if(J)this._reactiveQueryManager.onComponentRemoved(J,$)}),this._entityManager.onBeforeEntityRemoved((j)=>{this._reactiveQueryManager.onEntityRemoved(j)}),this._entityManager.onAfterParentChanged((j)=>{if(this._reactiveQueryManager.hasParentHasQueries){let $=this._entityManager.getEntity(j);if($)this._reactiveQueryManager.recheckEntity($)}})}static create(){return new v}addSystem(j){let $=new S(j);return this._pendingFinalizers.push(()=>{this._registerSystem($._createSystemObject())}),$}_finalizePendingBuilders(){if(this._pendingFinalizers.length===0)return;this._batchingRegistrations=!0;while(this._pendingFinalizers.length>0){let j=this._pendingFinalizers;this._pendingFinalizers=[];for(let $ of j)$()}this._batchingRegistrations=!1,this._rebuildPhaseSystems()}update(j){this._finalizePendingBuilders();let $=this._screenManager?.getCurrentScreen()??null,J=this._diagnosticsEnabled;this._runPhase("preUpdate",j,$,J);let X=J?performance.now():0;this._fixedAccumulator+=j;let Y=0;while(this._fixedAccumulator>=this._fixedDt&&Y<this._maxFixedSteps)this._executePhase(this._phaseSystems.fixedUpdate,this._fixedDt,$),this._commandBuffer.playback(this),this._fixedAccumulator-=this._fixedDt,Y++;if(this._fixedAccumulator>=this._fixedDt)this._fixedAccumulator=0;if(J)this._phaseTimings.fixedUpdate=performance.now()-X;this._interpolationAlpha=this._fixedAccumulator/this._fixedDt,this._runPhase("update",j,$,J),this._runPhase("postUpdate",j,$,J);for(let Z of this._postUpdateHooks)Z({ecs:this,dt:j});this._runPhase("render",j,$,J),this._changeThreshold=this._entityManager.changeSeq,this._currentTick++}_executePhase(j,$,J){for(let X of j){if(!X.process&&!X.onEntityEnter)continue;if(X.groups?.length){let G=!1;for(let F of X.groups)if(this._disabledGroups.has(F)){G=!0;break}if(G)continue}if(X.inScreens?.length){if(J===null||!X.inScreens.includes(J))continue}if(X.excludeScreens?.length){if(J!==null&&X.excludeScreens.includes(J))continue}if(X.requiredAssets?.length&&this._assetManager){let G=!0;for(let F of X.requiredAssets)if(!this._assetManager.isLoaded(F)){G=!1;break}if(!G)continue}let Y=this._systemLastSeqs.get(X)??0;this._changeThreshold=Y;let Z=this._systemContexts.get(X);if(!Z)Z={queries:{},dt:0,ecs:this},this._systemContexts.set(X,Z);Z.dt=$;let W=Z.queries,B=!1,A=!1;if(X.entityQueries)for(let G in X.entityQueries){A=!0;let F=X.entityQueries[G];if(F){let D=W[G]??(W[G]=[]);if(this._entityManager.getEntitiesWithQueryInto(D,F.with,F.without||[],F.changed,F.changed?this._changeThreshold:void 0,F.parentHas),D.length)B=!0}}let U=this._entityEnterTracking.get(X);if(U&&X.onEntityEnter)for(let G in X.onEntityEnter){let F=W[G],L=U.get(G);if(!F||!L)continue;let D=X.onEntityEnter[G];if(!D)continue;let _=this._entityEnterFrameSet;_.clear();for(let Q of F)if(_.add(Q.id),!L.has(Q.id))L.add(Q.id),D({entity:Q,ecs:this});for(let Q of L)if(!_.has(Q))L.delete(Q)}if(X.process){if(this._diagnosticsEnabled){let G=performance.now();if(B||X.runWhenEmpty)X.process(Z);else if(!A)X.process(Z);this._systemTimings.set(X.label,performance.now()-G)}else if(B||X.runWhenEmpty)X.process(Z);else if(!A)X.process(Z)}this._systemLastSeqs.set(X,this._entityManager.changeSeq)}}_runPhase(j,$,J,X){if(X){let Y=performance.now();this._executePhase(this._phaseSystems[j],$,J),this._phaseTimings[j]=performance.now()-Y}else this._executePhase(this._phaseSystems[j],$,J);this._commandBuffer.playback(this)}async initialize(){if(this._finalizePendingBuilders(),await this.initializeResources(),this._assetManager)this._assetManager.setEventBus(this._eventBus),await this._assetManager.loadEagerAssets(),this._resourceManager.add("$assets",this._assetManager.createResource());if(this._screenManager)this._screenManager.setDependencies(this._eventBus,this._assetManager,this),this._resourceManager.add("$screen",this._screenManager.createResource());for(let j of this._systems)await j.onInitialize?.(this)}async initializeResources(...j){await this._resourceManager.initializeResources(this,...j)}_rebuildPhaseSystems(){for(let j of h)this._phaseSystems[j]=[];for(let j of this._systems){let $=j.phase??"update";this._phaseSystems[$].push(j)}for(let j of h)this._phaseSystems[j].sort(($,J)=>{let X=$.priority??0;return(J.priority??0)-X})}updateSystemPriority(j,$){this._finalizePendingBuilders();let J=this._systems.find((X)=>X.label===j);if(!J)return!1;return J.priority=$,this._rebuildPhaseSystems(),!0}updateSystemPhase(j,$){this._finalizePendingBuilders();let J=this._systems.find((X)=>X.label===j);if(!J)return!1;return J.phase=$,this._rebuildPhaseSystems(),!0}get interpolationAlpha(){return this._interpolationAlpha}get fixedDt(){return this._fixedDt}disableSystemGroup(j){this._disabledGroups.add(j)}enableSystemGroup(j){this._disabledGroups.delete(j)}isSystemGroupEnabled(j){return!this._disabledGroups.has(j)}getSystemsInGroup(j){return this._finalizePendingBuilders(),this._systems.filter(($)=>$.groups?.includes(j)).map(($)=>$.label)}removeSystem(j){this._finalizePendingBuilders();let $=this._systems.findIndex((X)=>X.label===j);if($===-1)return!1;let J=this._systems[$];if(!J)return!1;if(J.onDetach)J.onDetach(this);return this._systems.splice($,1),this._systemLastSeqs.delete(J),this._entityEnterTracking.delete(J),this._rebuildPhaseSystems(),!0}_registerSystem(j){if(this._systems.push(j),this._systemLastSeqs.set(j,this._changeThreshold),!this._batchingRegistrations)this._rebuildPhaseSystems();if(j.onEntityEnter){let $=new Map;for(let J in j.onEntityEnter)$.set(J,new Set);this._entityEnterTracking.set(j,$)}if(!j.eventHandlers)return;for(let $ in j.eventHandlers){let J=j.eventHandlers[$];if(J)this._eventBus.subscribe($,(X)=>{J({data:X,ecs:this})})}}hasResource(j){return this._resourceManager.has(j)}getResource(j){if(!this._resourceManager.has(j))throw Error(`Resource '${String(j)}' not found. Available resources: [${this.getResourceKeys().map(($)=>String($)).join(", ")}]`);return this._resourceManager.get(j,this)}tryGetResource(j){let $=j;if(!this._resourceManager.has($))return;return this._resourceManager.get($,this)}addResource(j,$){return this._resourceManager.add(j,$),this}removeResource(j){return this._resourceManager.remove(j)}async disposeResource(j){return this._resourceManager.disposeResource(j,this)}async disposeResources(){return this._resourceManager.disposeResources(this)}updateResource(j,$){let J=this.getResource(j),X=$(J);return this._resourceManager.add(j,X),this._resourceManager.notifyChange(j,X,J),this}setResource(j,$){let J=this.tryGetResource(j);if(this._resourceManager.add(j,$),J!==void 0)this._resourceManager.notifyChange(j,$,J);return this}onResourceChange(j,$){return this._resourceManager.onResourceChange(j,$)}getResourceKeys(){return this._resourceManager.getKeys()}resourceNeedsInitialization(j){return this._resourceManager.needsInitialization(j)}getEntity(j){return this._entityManager.getEntity(j)}getComponent(j,$){return this._entityManager.getComponent(j,$)}addComponent(j,$,J){this._entityManager.addComponent(j,$,J)}addComponents(j,$){this._entityManager.addComponents(j,$)}removeComponent(j,$){this._entityManager.removeComponent(j,$)}hasComponent(j,$){return this._entityManager.getComponent(j,$)!==void 0}spawn(j){let $=this._entityManager.createEntity();return this._entityManager.addComponents($.id,j),$}getEntitiesWithQuery(j,$=[],J,X){return this._entityManager.getEntitiesWithQuery(j,$,J,J?this._changeThreshold:void 0,X)}getSingleton(j,$=[]){let J=this._entityManager.getEntitiesWithQuery(j,$);if(J.length===0)throw Error(`getSingleton: no entity matches query with=[${String(j)}] without=[${String($)}]`);if(J.length>1)throw Error(`getSingleton: expected 1 entity but found ${J.length} matching query with=[${String(j)}] without=[${String($)}]`);let X=J[0];if(!X)throw Error("getSingleton: unexpected empty result");return X}tryGetSingleton(j,$=[]){let J=this._entityManager.getEntitiesWithQuery(j,$);if(J.length===0)return;if(J.length>1)throw Error(`tryGetSingleton: expected 0 or 1 entity but found ${J.length} matching query with=[${String(j)}] without=[${String($)}]`);return J[0]}removeEntity(j,$){return this._entityManager.removeEntity(j,$)}spawnChild(j,$){let J=this._entityManager.spawnChild(j,$);return this._emitHierarchyChanged(J.id,null,j),J}setParent(j,$){let J=this._entityManager.getParent(j);return this._entityManager.setParent(j,$),this._emitHierarchyChanged(j,J,$),this}removeParent(j){let $=this._entityManager.getParent(j),J=this._entityManager.removeParent(j);if(J)this._emitHierarchyChanged(j,$,null);return J}getParent(j){return this._entityManager.getParent(j)}getChildren(j){return this._entityManager.getChildren(j)}getChildAt(j,$){return this._entityManager.getChildAt(j,$)}getChildIndex(j,$){return this._entityManager.getChildIndex(j,$)}getAncestors(j){return this._entityManager.getAncestors(j)}getDescendants(j){return this._entityManager.getDescendants(j)}getRoot(j){return this._entityManager.getRoot(j)}getSiblings(j){return this._entityManager.getSiblings(j)}isDescendantOf(j,$){return this._entityManager.isDescendantOf(j,$)}isAncestorOf(j,$){return this._entityManager.isAncestorOf(j,$)}getRootEntities(){return this._entityManager.getRootEntities()}forEachInHierarchy(j,$){this._entityManager.forEachInHierarchy(j,$)}hierarchyIterator(j){return this._entityManager.hierarchyIterator(j)}_emitHierarchyChanged(j,$,J){this._eventBus.publish("hierarchyChanged",{entityId:j,oldParent:$,newParent:J})}get installedPlugins(){return Array.from(this._installedPlugins)}get entityManager(){return this._entityManager}get eventBus(){return this._finalizePendingBuilders(),this._eventBus}get commands(){return this._commandBuffer}get currentTick(){return this._currentTick}get changeThreshold(){return this._changeThreshold}enableDiagnostics(j){if(this._diagnosticsEnabled=j,!j)this._systemTimings.clear(),this._phaseTimings={preUpdate:0,fixedUpdate:0,update:0,postUpdate:0,render:0}}get diagnosticsEnabled(){return this._diagnosticsEnabled}get systemTimings(){return this._systemTimings}get phaseTimings(){return this._phaseTimings}get entityCount(){return this._entityManager.entityCount}mutateComponent(j,$,J){let X=this._entityManager.getComponent(j,$);if(X===void 0)throw Error(`Entity ${j} does not have component "${String($)}"`);return J(X),this._entityManager.markChanged(j,$),X}markChanged(j,$){this._entityManager.markChanged(j,$)}registerDispose(j,$){this._entityManager.registerDispose(j,$)}registerRequired(j,$,J){if(String(j)===String($))throw Error(`Cannot require a component to depend on itself: '${String(j)}'`);let X=this._requiredComponents.get(j)??[];if(X.some((Y)=>Y.component===$))throw Error(`Required component '${String($)}' already registered for trigger '${String(j)}'`);this._checkRequiredCycle(j,$),X.push({component:$,factory:J}),this._requiredComponents.set(j,X)}_checkRequiredCycle(j,$){N(j,$,(J)=>this._requiredComponents.get(J))}onComponentAdded(j,$){return this._entityManager.onComponentAdded(j,$)}onComponentRemoved(j,$){return this._entityManager.onComponentRemoved(j,$)}addReactiveQuery(j,$){this._reactiveQueryManager.addQuery(j,$)}removeReactiveQuery(j){return this._reactiveQueryManager.removeQuery(j)}on(j,$){return this._eventBus.subscribe(j,$)}off(j,$){return this._eventBus.unsubscribe(j,$)}onPostUpdate(j){return this._postUpdateHooks.push(j),()=>{let $=this._postUpdateHooks.indexOf(j);if($!==-1)this._postUpdateHooks.splice($,1)}}requireAssetManager(){if(!this._assetManager)throw Error("Asset manager not configured. Use withAssets() in builder.");return this._assetManager}getAsset(j){return this.requireAssetManager().get(j)}tryGetAsset(j){return this._assetManager?.tryGet(j)}getAssetHandle(j){return this.requireAssetManager().getHandle(j)}isAssetLoaded(j){return this._assetManager?.isLoaded(j)??!1}async loadAsset(j){return this.requireAssetManager().loadAsset(j)}async loadAssetGroup(j){return this.requireAssetManager().loadAssetGroup(j)}isAssetGroupLoaded(j){return this._assetManager?.isGroupLoaded(j)??!1}getAssetGroupProgress(j){return this._assetManager?.getGroupProgress(j)??0}requireScreenManager(){if(!this._screenManager)throw Error("Screen manager not configured. Use withScreens() in builder.");return this._screenManager}async setScreen(j,$){return this.requireScreenManager().setScreen(j,$)}async pushScreen(j,$){return this.requireScreenManager().pushScreen(j,$)}async popScreen(){return this.requireScreenManager().popScreen()}getCurrentScreen(){return this._screenManager?.getCurrentScreen()??null}getScreenConfig(j){return this.requireScreenManager().getConfig(j)}tryGetScreenConfig(j){return this._screenManager?.tryGetConfig(j)??void 0}getScreenState(j){return this.requireScreenManager().getState(j)}tryGetScreenState(j){return this._screenManager?.tryGetState(j)??void 0}updateScreenState(j,$){if(typeof j==="string")this.requireScreenManager().updateState($,j);else this.requireScreenManager().updateState(j)}isCurrentScreen(j){return this._screenManager?.isCurrent(j)??!1}isScreenActive(j){return this._screenManager?.isActive(j)??!1}getScreenStackDepth(){return this._screenManager?.getStackDepth()??0}_setAssetManager(j){this._assetManager=j;for(let[$,J]of this._pendingPluginAssets)this._assetManager.register($,J);this._pendingPluginAssets=[]}_setScreenManager(j){this._screenManager=j;for(let[$,J]of this._pendingPluginScreens)this._screenManager.register($,J);this._pendingPluginScreens=[]}_hasPendingPluginAssets(){return this._pendingPluginAssets.length>0}_hasPendingPluginScreens(){return this._pendingPluginScreens.length>0}_setFixedDt(j){this._fixedDt=j}_registerAsset(j,$){this._pendingPluginAssets.push([j,$])}_registerScreen(j,$){this._pendingPluginScreens.push([j,$])}installPlugin(j){if(this._installedPlugins.has(j.id))return this;return this._installedPlugins.add(j.id),j.install(this),this}pluginFactory(){return z}getHelpers(j){return j(this)}}function Hj(j){return j}function Ej(j,$){return{x:j,y:$}}function Rj(){return{x:0,y:0}}function wj(j,$){return{x:j.x+$.x,y:j.y+$.y}}function Sj(j,$){return{x:j.x-$.x,y:j.y-$.y}}function Tj(j,$){return{x:j.x*$,y:j.y*$}}function xj(j){return{x:-j.x,y:-j.y}}function Cj(j,$){return j.x*$.x+j.y*$.y}function qj(j,$){return j.x*$.y-j.y*$.x}function vj(j){return j.x*j.x+j.y*j.y}function fj(j){return Math.sqrt(j.x*j.x+j.y*j.y)}function Nj(j){let $=Math.sqrt(j.x*j.x+j.y*j.y);if($===0)return{x:0,y:0};return{x:j.x/$,y:j.y/$}}function bj(j,$){let J=j.x-$.x,X=j.y-$.y;return J*J+X*X}function gj(j,$){let J=j.x-$.x,X=j.y-$.y;return Math.sqrt(J*J+X*X)}function kj(j,$,J=0.0000000001){return Math.abs(j.x-$.x)<=J&&Math.abs(j.y-$.y)<=J}var rj=P;export{Rj as vec2Zero,Sj as vec2Sub,Tj as vec2Scale,Nj as vec2Normalize,xj as vec2Negate,vj as vec2LengthSq,fj as vec2Length,kj as vec2Equals,Cj as vec2Dot,bj as vec2DistanceSq,gj as vec2Distance,qj as vec2Cross,wj as vec2Add,Ej as vec2,I as directValue,z as definePlugin,rj as default,q as createScreenConfigurator,Hj as createQueryDefinition,C as createAssetConfigurator,S as SystemBuilder,O as ScreenManager,K as AssetManager};
1
+ var l=((j)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(j,{get:($,G)=>(typeof require<"u"?require:$)[G]}):j)(function(j){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+j+'" is not supported')});class M{parentMap=new Map;childrenMap=new Map;setParent(j,$){if(j===$)throw Error(`Cannot set entity ${j} as its own parent`);if(this.wouldCreateCycle(j,$))throw Error("Cannot set parent: would create circular reference");let G=this.parentMap.get(j);if(G!==void 0){let X=this.childrenMap.get(G);if(X){let Y=X.indexOf(j);if(Y!==-1)X.splice(Y,1)}}this.parentMap.set(j,$);let J=this.childrenMap.get($);if(J)J.push(j);else this.childrenMap.set($,[j]);return this}removeParent(j){let $=this.parentMap.get(j);if($===void 0)return!1;let G=this.childrenMap.get($);if(G){let J=G.indexOf(j);if(J!==-1)G.splice(J,1)}return this.parentMap.delete(j),!0}getParent(j){return this.parentMap.get(j)??null}getChildren(j){let $=this.childrenMap.get(j);return $?[...$]:[]}getChildAt(j,$){if($<0)return null;let G=this.childrenMap.get(j);if(!G||$>=G.length)return null;return G[$]??null}getChildIndex(j,$){let G=this.childrenMap.get(j);if(!G)return-1;return G.indexOf($)}removeEntity(j){let $=this.parentMap.get(j)??null;if($!==null){let X=this.childrenMap.get($);if(X){let Y=X.indexOf(j);if(Y!==-1)X.splice(Y,1)}}this.parentMap.delete(j);let G=this.childrenMap.get(j)??[],J=[...G];for(let X of G)this.parentMap.delete(X);return this.childrenMap.delete(j),{oldParent:$,orphanedChildren:J}}getAncestors(j){let $=[],G=this.parentMap.get(j);while(G!==void 0)$.push(G),G=this.parentMap.get(G);return $}getDescendants(j){let $=[],G=this.childrenMap.get(j);if(!G)return $;let J=G.slice().reverse();while(J.length>0){let X=J.pop();$.push(X);let Y=this.childrenMap.get(X);if(Y)for(let Z=Y.length-1;Z>=0;Z--)J.push(Y[Z])}return $}getRoot(j){let $=j,G=this.parentMap.get($);while(G!==void 0)$=G,G=this.parentMap.get($);return $}getSiblings(j){let $=this.parentMap.get(j);if($===void 0)return[];let G=this.childrenMap.get($);if(!G)return[];return G.filter((J)=>J!==j)}isDescendantOf(j,$){if(j===$)return!1;let G=this.parentMap.get(j);while(G!==void 0){if(G===$)return!0;G=this.parentMap.get(G)}return!1}isAncestorOf(j,$){return this.isDescendantOf($,j)}getRootEntities(){let j=[];for(let $ of this.childrenMap.keys())if(!this.parentMap.has($))j.push($);return j}wouldCreateCycle(j,$){let G=$;while(G!==void 0){if(G===j)return!0;G=this.parentMap.get(G)}return!1}forEachInHierarchy(j,$){let G=$?.roots??this.getRootEntities(),J=[];for(let X of G)J.push({entityId:X,parentId:null,depth:0});for(let X of J){j(X.entityId,X.parentId,X.depth);let Y=this.childrenMap.get(X.entityId);if(Y)for(let Z of Y)J.push({entityId:Z,parentId:X.entityId,depth:X.depth+1})}}*hierarchyIterator(j){let $=j?.roots??this.getRootEntities(),G=[];for(let J of $)G.push({entityId:J,parentId:null,depth:0});for(let J of G){yield J;let X=this.childrenMap.get(J.entityId);if(X)for(let Y of X)G.push({entityId:Y,parentId:J.entityId,depth:J.depth+1})}}}class T{callbacks=[];_iterDepth=0;_pendingRemovals=[];add(j){this.callbacks.push(j)}remove(j){if(this._iterDepth>0){this._pendingRemovals.push(j);return}let $=this.callbacks.indexOf(j);if($!==-1)this.callbacks.splice($,1)}invoke(j){this._iterDepth++;let $=this.callbacks.length;for(let G=0;G<$;G++){let J=this.callbacks[G];if(J)J(j)}if(this._iterDepth--,this._iterDepth===0&&this._pendingRemovals.length>0){for(let G of this._pendingRemovals){let J=this.callbacks.indexOf(G);if(J!==-1)this.callbacks.splice(J,1)}this._pendingRemovals.length=0}}}class H{nextId=1;entities=new Map;componentIndices=new Map;addedCallbacks=new Map;removedCallbacks=new Map;hierarchyManager=new M;disposeCallbacks=new Map;changeSeqs=new Map;_changeSeq=0;_afterComponentAddedHooks=[];_afterEntityMutatedHooks=[];_afterComponentRemovedHooks=[];_beforeEntityRemovedHooks=[];_afterParentChangedHooks=[];_batchingDepth=0;_batchedEntityIds=new Set;_pendingBatchKeys=null;get entityCount(){return this.entities.size}createEntity(){let j=this.nextId++,$={id:j,components:{}};return this.entities.set(j,$),$}registerDispose(j,$){this.disposeCallbacks.set(j,$)}getDisposeCallbacks(){return this.disposeCallbacks}invokeDispose(j,$,G){let J=this.disposeCallbacks.get(j);if(!J)return;try{J({value:$,entityId:G})}catch(X){console.warn(`Component dispose callback for '${String(j)}' threw:`,X)}}addComponent(j,$,G){let J=this.entities.get(j);if(!J)throw Error(`Cannot add component '${String($)}': Entity with ID ${j} does not exist`);let X=J.components[$];if(X!==void 0)this.invokeDispose($,X,J.id);if(J.components[$]=G,!this.componentIndices.has($))this.componentIndices.set($,new Set);this.componentIndices.get($)?.add(J.id);let Y=this.addedCallbacks.get($);if(Y)Y.invoke({value:G,entity:J});this._batchingDepth++;for(let Z of this._afterComponentAddedHooks)Z(J.id,$);if(this._batchedEntityIds.add(J.id),this._batchingDepth--,this._batchingDepth===0){for(let Z of this._batchedEntityIds)for(let B of this._afterEntityMutatedHooks)B(Z);this._batchedEntityIds.clear()}return this}addComponents(j,$){let G=this.entities.get(j);if(!G)throw Error(`Cannot add components: Entity with ID ${j} does not exist`);let J=this._pendingBatchKeys;this._pendingBatchKeys=new Set(Object.keys($)),this._batchingDepth++;for(let X in $)this.addComponent(G.id,X,$[X]);if(this._batchingDepth--,this._pendingBatchKeys=J,this._batchingDepth===0){for(let X of this._batchedEntityIds)for(let Y of this._afterEntityMutatedHooks)Y(X);this._batchedEntityIds.clear()}return this}removeComponent(j,$){let G=this.entities.get(j);if(!G)throw Error(`Cannot remove component '${String($)}': Entity with ID ${j} does not exist`);let J=G.components[$];if(J!==void 0)this.invokeDispose($,J,G.id);delete G.components[$];let X=this.removedCallbacks.get($);if(X&&J!==void 0)X.invoke({value:J,entity:G});if(this.componentIndices.get($)?.delete(G.id),J!==void 0)for(let Y of this._afterComponentRemovedHooks)Y(G.id,$);return this}getComponent(j,$){let G=this.entities.get(j);if(!G)throw Error(`Cannot get component '${String($)}': Entity with ID ${j} does not exist`);return G.components[$]}getEntitiesWithQuery(j=[],$=[],G,J,X){return this.getEntitiesWithQueryInto([],j,$,G,J,X)}getEntitiesWithQueryInto(j,$=[],G=[],J,X,Y){j.length=0;let Z=J!==void 0&&J.length>0&&X!==void 0,B=Y!==void 0&&Y.length>0;if($.length===0){if(G.length===0&&!Z&&!B){for(let D of this.entities.values())j.push(D);return j}for(let D of this.entities.values()){if(G.length>0&&!G.every((L)=>!(L in D.components)))continue;if(Z){let L=this.changeSeqs.get(D.id);if(!L)continue;if(!J.some((_)=>(L.get(_)??-1)>X))continue}if(B&&!this.parentHasComponents(D.id,Y))continue;j.push(D)}return j}let A=$[0];if(A===void 0)return j;let U=$.reduce((D,L)=>{let _=this.componentIndices.get(L)?.size??0,Q=this.componentIndices.get(D)?.size??1/0;return _<Q?L:D},A),W=this.componentIndices.get(U);if(!W||W.size===0)return j;let F=G.length>0;for(let D of W){let L=this.entities.get(D);if(L&&$.every((_)=>(_ in L.components))&&(!F||G.every((_)=>!(_ in L.components)))){if(Z){let _=this.changeSeqs.get(D);if(!_||!J.some((Q)=>(_.get(Q)??-1)>X))continue}if(B&&!this.parentHasComponents(D,Y))continue;j.push(L)}}return j}parentHasComponents(j,$){let G=this.hierarchyManager.getParent(j);if(G===null)return!1;let J=this.entities.get(G);if(!J)return!1;for(let X of $)if(!(X in J.components))return!1;return!0}removeEntity(j,$){let G=this.entities.get(j);if(!G)return!1;if($?.cascade??!0){let X=this.hierarchyManager.getDescendants(G.id);for(let Y=X.length-1;Y>=0;Y--){let Z=X[Y];if(Z===void 0)continue;for(let B of this._beforeEntityRemovedHooks)B(Z)}for(let Y of this._beforeEntityRemovedHooks)Y(G.id);for(let Y=X.length-1;Y>=0;Y--){let Z=X[Y];if(Z===void 0)continue;this.removeEntityInternal(Z)}}else for(let X of this._beforeEntityRemovedHooks)X(G.id);return this.removeEntityInternal(G.id)}removeEntityInternal(j){let $=this.entities.get(j);if(!$)return!1;this.hierarchyManager.removeEntity(j);for(let G of Object.keys($.components)){let J=$.components[G];if(J!==void 0){this.invokeDispose(G,J,$.id);let X=this.removedCallbacks.get(G);if(X)X.invoke({value:J,entity:$})}this.componentIndices.get(G)?.delete($.id)}return this.changeSeqs.delete($.id),this.entities.delete($.id)}getEntity(j){return this.entities.get(j)}onComponentAdded(j,$){let G=$,J=this.addedCallbacks.get(j);if(!J)J=new T,this.addedCallbacks.set(j,J);return J.add(G),()=>{this.addedCallbacks.get(j)?.remove(G)}}onComponentRemoved(j,$){let G=$,J=this.removedCallbacks.get(j);if(!J)J=new T,this.removedCallbacks.set(j,J);return J.add(G),()=>{this.removedCallbacks.get(j)?.remove(G)}}onAfterComponentAdded(j){return this._afterComponentAddedHooks.push(j),()=>{let $=this._afterComponentAddedHooks.indexOf(j);if($!==-1)this._afterComponentAddedHooks.splice($,1)}}onAfterEntityMutated(j){return this._afterEntityMutatedHooks.push(j),()=>{let $=this._afterEntityMutatedHooks.indexOf(j);if($!==-1)this._afterEntityMutatedHooks.splice($,1)}}onAfterComponentRemoved(j){return this._afterComponentRemovedHooks.push(j),()=>{let $=this._afterComponentRemovedHooks.indexOf(j);if($!==-1)this._afterComponentRemovedHooks.splice($,1)}}onBeforeEntityRemoved(j){return this._beforeEntityRemovedHooks.push(j),()=>{let $=this._beforeEntityRemovedHooks.indexOf(j);if($!==-1)this._beforeEntityRemovedHooks.splice($,1)}}onAfterParentChanged(j){return this._afterParentChangedHooks.push(j),()=>{let $=this._afterParentChangedHooks.indexOf(j);if($!==-1)this._afterParentChangedHooks.splice($,1)}}get changeSeq(){return this._changeSeq}markChanged(j,$){let G=++this._changeSeq,J=this.changeSeqs.get(j);if(!J)J=new Map,this.changeSeqs.set(j,J);J.set($,G)}getChangeSeq(j,$){return this.changeSeqs.get(j)?.get($)??-1}spawnChild(j,$){let G=this.createEntity();return this.addComponents(G.id,$),this.setParent(G.id,j),G}setParent(j,$){this.hierarchyManager.setParent(j,$);for(let G of this._afterParentChangedHooks)G(j);return this}removeParent(j){let $=this.hierarchyManager.removeParent(j);if($)for(let G of this._afterParentChangedHooks)G(j);return $}getParent(j){return this.hierarchyManager.getParent(j)}getChildren(j){return this.hierarchyManager.getChildren(j)}getChildAt(j,$){return this.hierarchyManager.getChildAt(j,$)}getChildIndex(j,$){return this.hierarchyManager.getChildIndex(j,$)}getAncestors(j){return this.hierarchyManager.getAncestors(j)}getDescendants(j){return this.hierarchyManager.getDescendants(j)}getRoot(j){return this.hierarchyManager.getRoot(j)}getSiblings(j){return this.hierarchyManager.getSiblings(j)}isDescendantOf(j,$){return this.hierarchyManager.isDescendantOf(j,$)}isAncestorOf(j,$){return this.hierarchyManager.isAncestorOf(j,$)}getRootEntities(){return this.hierarchyManager.getRootEntities()}forEachInHierarchy(j,$){this.hierarchyManager.forEachInHierarchy(j,$)}hierarchyIterator(j){return this.hierarchyManager.hierarchyIterator(j)}}class V{handlers=new Map;subscribe(j,$){return this.addHandler(j,$,!1)}once(j,$){return this.addHandler(j,$,!0)}unsubscribe(j,$){let G=this.handlers.get(j);if(!G)return!1;let J=G.findIndex((X)=>X.callback===$);if(J===-1)return!1;return G.splice(J,1),!0}addHandler(j,$,G){let J=this.handlers.get(j);if(!J)J=[],this.handlers.set(j,J);let X={callback:$,once:G};return J.push(X),()=>{let Y=this.handlers.get(j);if(Y){let Z=Y.indexOf(X);if(Z!==-1)Y.splice(Z,1)}}}publish(...[j,$]){let G=this.handlers.get(j);if(!G||G.length===0)return;let J=!1,X=G.length;for(let Y=0;Y<X&&Y<G.length;Y++){let Z=G[Y];if(!Z)continue;if(Z.callback($),Z.once)J=!0}if(J){for(let Y=G.length-1;Y>=0;Y--)if(G[Y]?.once)G.splice(Y,1)}}clear(){this.handlers.clear()}clearEvent(j){this.handlers.delete(j)}}var x=Symbol("resource-direct");function I(j){return{[x]:j}}function p(j){return typeof j==="object"&&j!==null&&"factory"in j&&typeof j.factory==="function"}function u(j){return typeof j==="object"&&j!==null&&x in j}function f(j,$){let G=[],J=new Set,X=new Set;function Y(Z,B=[]){if(J.has(Z))return;if(X.has(Z))throw Error(`Circular resource dependency: ${[...B,Z].join(" -> ")}`);X.add(Z);for(let A of $(Z)){let U=j.find((W)=>W===A);if(U)Y(U,[...B,Z])}X.delete(Z),J.add(Z),G.push(Z)}for(let Z of j)Y(Z);return G}class E{resources=new Map;resourceFactories=new Map;resourceDependencies=new Map;resourceDisposers=new Map;initializedResourceKeys=new Set;_changeSubscribers=new Map;add(j,$){let G=(J)=>{this.resources.set(j,J),this.initializedResourceKeys.add(j),this.resourceDependencies.set(j,[])};if(p($)){if(this.resourceFactories.set(j,$.factory),this.resourceDependencies.set(j,$.dependsOn??[]),$.onDispose)this.resourceDisposers.set(j,$.onDispose)}else if(u($))G($[x]);else if(typeof $==="function")this.resourceFactories.set(j,$),this.resourceDependencies.set(j,[]);else G($);return this}tryGet(j,...$){if(!this.has(j))return;return this.get(j,...$)}get(j,...$){let G=this.resources.get(j);if(G!==void 0)return G;let J=this.resourceFactories.get(j);if(J===void 0)throw Error(`Resource ${String(j)} not found`);let X=$[0],Y=J(X);if(!(Y instanceof Promise))this.resources.set(j,Y),this.initializedResourceKeys.add(j);return Y}has(j){return this.resources.has(j)||this.resourceFactories.has(j)}remove(j){let $=this.resources.delete(j),G=this.resourceFactories.delete(j);return this.resourceDependencies.delete(j),this.resourceDisposers.delete(j),this.initializedResourceKeys.delete(j),$||G}getKeys(){let j=new Set([...this.resources.keys(),...this.resourceFactories.keys()]);return Array.from(j)}needsInitialization(j){return this.resourceFactories.has(j)&&!this.initializedResourceKeys.has(j)}getPendingInitializationKeys(){return Array.from(this.resourceFactories.keys()).filter((j)=>!this.initializedResourceKeys.has(j))}async initializeResource(j,...$){if(!this.resourceFactories.has(j)||this.initializedResourceKeys.has(j))return;let G=this.resourceFactories.get(j);if(!G)return;let J=$[0],X=await G(J);this.resources.set(j,X),this.initializedResourceKeys.add(j),this.resourceFactories.delete(j)}async initializeResources(...j){let $=j.slice(1),G=$.length===0?this.getPendingInitializationKeys():$;if(G.length===0)return;let J=f(G,(X)=>[...this.resourceDependencies.get(X)??[]]);for(let X of J)await this.initializeResource(X,...j.slice(0,1))}getDependencies(j){return this.resourceDependencies.get(j)??[]}async disposeResource(j,...$){if(!this.resources.has(j)&&!this.resourceFactories.has(j))return!1;if(this.initializedResourceKeys.has(j)){let G=this.resourceDisposers.get(j),J=this.resources.get(j);if(G&&J!==void 0){let X=$[0];await G(J,X)}}return this.resources.delete(j),this.resourceFactories.delete(j),this.resourceDependencies.delete(j),this.resourceDisposers.delete(j),this.initializedResourceKeys.delete(j),this._changeSubscribers.delete(j),!0}onResourceChange(j,$){let G=this._changeSubscribers.get(j),J=G??new Set;if(!G)this._changeSubscribers.set(j,J);let X=$;return J.add(X),()=>{if(J.delete(X),J.size===0)this._changeSubscribers.delete(j)}}notifyChange(j,$,G){if(Object.is($,G))return;let J=this._changeSubscribers.get(j);if(!J||J.size===0)return;let X=[...J];for(let Y of X)Y($,G)}async disposeResources(...j){let $=Array.from(this.initializedResourceKeys);if($.length===0)return;let G=f($,(J)=>[...this.resourceDependencies.get(J)??[]]).reverse();for(let J of G)await this.disposeResource(J,...j)}}class R{queries=new Map;entityManager;_hasParentHasQueries=!1;constructor(j){this.entityManager=j}get hasParentHasQueries(){return this._hasParentHasQueries}addQuery(j,$){let G={definition:$,matchingEntities:new Set};if(this.queries.set(j,G),$.parentHas?.length)this._hasParentHasQueries=!0;let J=this.entityManager.getEntitiesWithQuery($.with,$.without??[]);for(let X of J)if(this.entityMatchesQuery(X,G.definition))G.matchingEntities.add(X.id),G.definition.onEnter?.(X)}removeQuery(j){let $=this.queries.delete(j);if($)this._recalcParentHasFlag();return $}entityMatchesQuery(j,$){for(let G of $.with)if(!(G in j.components))return!1;if($.without){for(let G of $.without)if(G in j.components)return!1}if($.parentHas?.length){let G=this.entityManager.getParent(j.id);if(G===null)return!1;let J=this.entityManager.getEntity(G);if(!J)return!1;for(let X of $.parentHas)if(!(X in J.components))return!1}return!0}_applyQueryTransition(j,$){let G=$.matchingEntities.has(j.id),J=this.entityMatchesQuery(j,$.definition);if(!G&&J)$.matchingEntities.add(j.id),$.definition.onEnter?.(j);else if(G&&!J)$.matchingEntities.delete(j.id),$.definition.onExit?.(j.id)}onComponentAdded(j,$){for(let[,G]of this.queries)this._applyQueryTransition(j,G);if(this._hasParentHasQueries)this._recheckChildren(j.id)}onComponentRemoved(j,$){for(let[,G]of this.queries)this._applyQueryTransition(j,G);if(this._hasParentHasQueries)this._recheckChildren(j.id)}onEntityRemoved(j){for(let[$,G]of this.queries)if(G.matchingEntities.has(j))G.matchingEntities.delete(j),G.definition.onExit?.(j)}recheckEntity(j){for(let[,$]of this.queries)this._applyQueryTransition(j,$)}recheckEntityAndChildren(j){if(this.recheckEntity(j),this._hasParentHasQueries)this._recheckChildren(j.id)}_recheckChildren(j){let $=this.entityManager.getChildren(j);for(let G of $){let J=this.entityManager.getEntity(G);if(J)this.recheckEntity(J)}}_recalcParentHasFlag(){this._hasParentHasQueries=!1;for(let[,j]of this.queries)if(j.definition.parentHas?.length){this._hasParentHasQueries=!0;return}}}class w{commands=[];removeEntity(j,$){this.commands.push((G)=>{G.removeEntity(j,$)})}addComponent(j,$,G){this.commands.push((J)=>{J.addComponent(j,$,G)})}removeComponent(j,$){this.commands.push((G)=>{G.removeComponent(j,$)})}spawn(j){this.commands.push(($)=>{$.spawn(j)})}spawnChild(j,$){this.commands.push((G)=>{G.spawnChild(j,$)})}addComponents(j,$){this.commands.push((G)=>{G.addComponents(j,$)})}setParent(j,$){this.commands.push((G)=>{G.setParent(j,$)})}mutateComponent(j,$,G){this.commands.push((J)=>{J.mutateComponent(j,$,G)})}markChanged(j,$){this.commands.push((G)=>{G.markChanged(j,$)})}removeParent(j){this.commands.push(($)=>{$.removeParent(j)})}playback(j){for(let $ of this.commands)try{$(j)}catch(G){console.warn("CommandBuffer: Command failed during playback:",G)}this.commands.length=0}clear(){this.commands.length=0}get length(){return this.commands.length}}function z(j){return j}class S{_label;queries={};processFunction;detachFunction;initializeFunction;eventHandlers;_priority=0;_phase="update";_groups=[];_inScreens;_excludeScreens;_requiredAssets;_runWhenEmpty=!1;_entityEnterHandlers={};_resourceKeys;constructor(j){this._label=j}get label(){return this._label}_createSystemObject(){let j={label:this._label,entityQueries:this.queries,priority:this._priority,phase:this._phase};if(this.processFunction)j.process=this.processFunction;if(this.detachFunction)j.onDetach=this.detachFunction;if(this.initializeFunction)j.onInitialize=this.initializeFunction;if(this.eventHandlers)j.eventHandlers=this.eventHandlers;if(this._groups.length>0)j.groups=[...this._groups];if(this._inScreens)j.inScreens=this._inScreens;if(this._excludeScreens)j.excludeScreens=this._excludeScreens;if(this._requiredAssets)j.requiredAssets=this._requiredAssets;if(this._runWhenEmpty)j.runWhenEmpty=!0;if(Object.keys(this._entityEnterHandlers).length>0)j.onEntityEnter={...this._entityEnterHandlers};return j}setPriority(j){return this._priority=j,this}inPhase(j){return this._phase=j,this}inGroup(j){if(!this._groups.includes(j))this._groups.push(j);return this}inScreens(j){return this._inScreens=[...j],this}excludeScreens(j){return this._excludeScreens=[...j],this}requiresAssets(j){return this._requiredAssets=[...j],this}runWhenEmpty(){return this._runWhenEmpty=!0,this}withResources(j){return this._resourceKeys=[...j],this}addQuery(j,$){let G=this;return G.queries={...this.queries,[j]:$},G}setProcess(j){if(this._resourceKeys?.length){let $=this._resourceKeys,G;this.processFunction=(J)=>{if(!G){G={};for(let X of $)G[X]=J.ecs.getResource(X)}J.resources=G,j(J)}}else this.processFunction=j;return this}setOnEntityEnter(j,$){return this._entityEnterHandlers[j]=$,this}setOnDetach(j){return this.detachFunction=j,this}setOnInitialize(j){return this.initializeFunction=j,this}setEventHandlers(j){return this.eventHandlers=j,this}}function N(j,$,G){let J=new Set,X=[$];while(X.length>0){let Y=X.pop();if(Y===void 0)break;if(Y===j)throw Error(`Circular required component dependency: '${String(j)}' -> '${String($)}' -> ... -> '${String(j)}'`);if(J.has(Y))continue;J.add(Y);let Z=G(Y);if(Z)for(let B of Z)X.push(B.component)}}var b="0.12.9";class K{assets=new Map;groups=new Map;eventBus=null;setEventBus(j){this.eventBus=j}register(j,$){if(this.assets.set(j,{definition:$,status:"pending"}),$.group){let G=this.groups.get($.group)??new Set;G.add(j),this.groups.set($.group,G)}}async loadEagerAssets(){let j=[];for(let[$,G]of this.assets)if(G.definition.eager&&G.status==="pending")j.push($);await Promise.all(j.map(($)=>this.loadAsset($)))}async loadAsset(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);if($.status==="loaded"&&$.value!==void 0)return $.value;if($.status==="loading"&&$.loadPromise)return $.loadPromise;if($.status==="failed")$.status="pending";$.status="loading",$.loadPromise=$.definition.loader();try{let G=await $.loadPromise;return $.value=G,$.status="loaded",$.loadPromise=void 0,this.eventBus?.publish("assetLoaded",{key:j}),this.checkGroupProgress($.definition.group),G}catch(G){let J=G instanceof Error?G:Error(String(G));throw $.status="failed",$.error=J,$.loadPromise=void 0,this.eventBus?.publish("assetFailed",{key:j,error:J}),J}}async loadAssetGroup(j){let $=this.groups.get(j);if(!$||$.size===0)throw Error(`Asset group '${j}' not found or empty`);await Promise.all(Array.from($).map((G)=>this.loadAsset(G)))}get(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);if($.status!=="loaded"||$.value===void 0)throw Error(`Asset '${String(j)}' is not loaded (status: ${$.status})`);return $.value}tryGet(j){let $=this.assets.get(j);if(!$||$.status!=="loaded")return;return $.value}getHandle(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);let G=this;return{get status(){return $.status},get isLoaded(){return $.status==="loaded"},get(){return G.get(j)},tryGet(){return G.tryGet(j)}}}getStatus(j){let $=this.assets.get(j);if(!$)throw Error(`Asset '${String(j)}' not found`);return $.status}isLoaded(j){return this.assets.get(j)?.status==="loaded"}isGroupLoaded(j){let $=this.groups.get(j);if(!$||$.size===0)return!1;for(let G of $){let J=this.assets.get(G);if(!J||J.status!=="loaded")return!1}return!0}getGroupProgress(j){return this.getGroupProgressDetails(j).progress}getGroupProgressDetails(j){let $=this.groups.get(j);if(!$||$.size===0)return{loaded:0,total:0,progress:0};let G=0;for(let X of $)if(this.assets.get(X)?.status==="loaded")G++;let J=$.size;return{loaded:G,total:J,progress:G/J}}checkGroupProgress(j){if(!j||!this.eventBus)return;let $=j,G=this.getGroupProgressDetails($);if(this.eventBus.publish("assetGroupProgress",{group:$,...G}),G.loaded===G.total)this.eventBus.publish("assetGroupLoaded",{group:$})}createResource(){let j=this;return{getStatus($){return j.getStatus($)},isLoaded($){return j.isLoaded($)},isGroupLoaded($){return j.isGroupLoaded($)},getGroupProgress($){return j.getGroupProgress($)},get($){return j.get($)},tryGet($){return j.tryGet($)},getHandle($){return j.getHandle($)}}}getKeys(){return Array.from(this.assets.keys())}getGroupNames(){return Array.from(this.groups.keys())}getGroupKeys(j){let $=this.groups.get(j);return $?Array.from($):[]}}class g{manager;constructor(j){this.manager=j}add(j,$){return this.manager.register(j,{loader:$,eager:!0}),this}addWithConfig(j,$){return this.manager.register(j,$),this}addGroup(j,$){for(let[G,J]of Object.entries($))this.manager.register(G,{loader:J,eager:!1,group:j});return this}getManager(){return this.manager}}function C(j){return new g(j??new K)}class O{screens=new Map;currentScreen=null;screenStack=[];eventBus=null;assetManager=null;ecs=null;setDependencies(j,$,G){this.eventBus=j,this.assetManager=$,this.ecs=G}requireEcs(){if(!this.ecs)throw Error("ScreenManager: dependencies not set. Call setDependencies() first.");return this.ecs}register(j,$){this.screens.set(j,{definition:$})}async setScreen(j,$){let G=this.screens.get(j);if(!G)throw Error(`Screen '${String(j)}' not found`);await this.verifyRequiredAssets(G.definition.requiredAssets,G.definition.requiredAssetGroups);while(this.screenStack.length>0){let X=this.screenStack.pop();if(X)await this.exitScreen(X.name)}if(this.currentScreen)await this.exitScreen(this.currentScreen.name);let J=G.definition.initialState($);this.currentScreen={name:j,config:$,state:J},await G.definition.onEnter?.({config:$,ecs:this.requireEcs()}),this.eventBus?.publish("screenEnter",{screen:j,config:$})}async pushScreen(j,$){let G=this.screens.get(j);if(!G)throw Error(`Screen '${String(j)}' not found`);if(await this.verifyRequiredAssets(G.definition.requiredAssets,G.definition.requiredAssetGroups),this.currentScreen)this.screenStack.push(this.currentScreen);let J=G.definition.initialState($);this.currentScreen={name:j,config:$,state:J},await G.definition.onEnter?.({config:$,ecs:this.requireEcs()}),this.eventBus?.publish("screenPush",{screen:j,config:$})}async popScreen(){if(this.screenStack.length===0)throw Error("Cannot pop screen: stack is empty");if(this.currentScreen)await this.exitScreen(this.currentScreen.name),this.eventBus?.publish("screenPop",{screen:this.currentScreen.name});this.currentScreen=this.screenStack.pop()??null}async exitScreen(j){let $=this.screens.get(j);if($?.definition.onExit)await $.definition.onExit(this.requireEcs());this.eventBus?.publish("screenExit",{screen:j})}async verifyRequiredAssets(j,$){if(!this.assetManager)return;if(j){for(let G of j)if(!this.assetManager.isLoaded(G))await this.assetManager.loadAsset(G)}if($){for(let G of $)if(!this.assetManager.isGroupLoaded(G))await this.assetManager.loadAssetGroup(G)}}getCurrentScreen(){return this.currentScreen?.name??null}getConfig(j){if(!this.currentScreen)throw Error("No current screen");if(j!==void 0&&this.currentScreen.name!==j)throw Error(`Expected current screen '${String(j)}', but current is '${String(this.currentScreen.name)}'`);return this.currentScreen.config}tryGetConfig(j){if(!this.currentScreen)return;if(j!==void 0&&this.currentScreen.name!==j)return;return this.currentScreen.config}getState(j){if(!this.currentScreen)throw Error("No current screen");if(j!==void 0&&this.currentScreen.name!==j)throw Error(`Expected current screen '${String(j)}', but current is '${String(this.currentScreen.name)}'`);return this.currentScreen.state}tryGetState(j){if(!this.currentScreen)return;if(j!==void 0&&this.currentScreen.name!==j)return;return this.currentScreen.state}updateState(j,$){if(!this.currentScreen)throw Error("No current screen");if($!==void 0&&this.currentScreen.name!==$)throw Error(`Expected current screen '${String($)}', but current is '${String(this.currentScreen.name)}'`);let G=typeof j==="function"?j(this.currentScreen.state):j;this.currentScreen.state={...this.currentScreen.state,...G}}getStackDepth(){return this.screenStack.length}isOverlay(){return this.screenStack.length>0}isActive(j){if(this.currentScreen?.name===j)return!0;return this.screenStack.some(($)=>$.name===j)}isCurrent(j){return this.currentScreen?.name===j}createResource(){let j=this;return{get current(){return j.getCurrentScreen()},get config(){return j.tryGetConfig()??null},get state(){return j.tryGetState()??null},set state($){if(j.currentScreen&&$!==null)j.currentScreen.state=$},get stack(){return j.screenStack},get isOverlay(){return j.isOverlay()},get stackDepth(){return j.getStackDepth()},isActive($){return j.isActive($)},isCurrent($){return j.isCurrent($)}}}getScreenNames(){return Array.from(this.screens.keys())}hasScreen(j){return this.screens.has(j)}}class k{manager;constructor(j){this.manager=j}add(j,$){return this.manager.register(j,$),this}getManager(){return this.manager}}function q(j){return new k(j??new O)}class v{assetConfigurator=null;screenConfigurator=null;pendingResources=[];pendingDisposeCallbacks=[];pendingRequiredComponents=[];pendingPlugins=[];_fixedDt=null;constructor(){}withPlugin(j){return this.pendingPlugins.push(j),this}withComponentTypes(){return this}withEventTypes(){return this}withResourceTypes(){return this}withResource(j,$){return this.pendingResources.push({key:j,value:$}),this}withDispose(j,$){return this.pendingDisposeCallbacks.push({key:j,callback:$}),this}withRequired(j,$,G){return this.pendingRequiredComponents.push({trigger:j,required:$,factory:G}),this}withAssets(j){let $=C();return j($),this.assetConfigurator=$,this}withScreens(j){let $=q();return j($),this.screenConfigurator=$,this}withFixedTimestep(j){return this._fixedDt=j,this}withReactiveQueryNames(){return this}pluginFactory(){return z}build(){let j=new P;for(let $ of this.pendingPlugins)j.installPlugin($);for(let{key:$,value:G}of this.pendingResources)j.addResource($,G);for(let{key:$,callback:G}of this.pendingDisposeCallbacks)j.registerDispose($,G);for(let{trigger:$,required:G,factory:J}of this.pendingRequiredComponents)j.registerRequired($,G,J);if(this.assetConfigurator)j._setAssetManager(this.assetConfigurator.getManager());else if(j._hasPendingPluginAssets())j._setAssetManager(new K);if(this.screenConfigurator)j._setScreenManager(this.screenConfigurator.getManager());else if(j._hasPendingPluginScreens())j._setScreenManager(new O);if(this._fixedDt!==null)j._setFixedDt(this._fixedDt);return j}}var h=["preUpdate","fixedUpdate","update","postUpdate","render"];class P{static VERSION=b;_entityManager;_eventBus;_resourceManager;_commandBuffer;_systems=[];_phaseSystems={preUpdate:[],fixedUpdate:[],update:[],postUpdate:[],render:[]};_installedPlugins=new Set;_disabledGroups=new Set;_assetManager=null;_screenManager=null;_reactiveQueryManager;_postUpdateHooks=[];_currentTick=0;_systemLastSeqs=new Map;_changeThreshold=0;_fixedDt=0.016666666666666666;_fixedAccumulator=0;_interpolationAlpha=0;_maxFixedSteps=8;_requiredComponents=new Map;_pendingPluginAssets=[];_pendingPluginScreens=[];_diagnosticsEnabled=!1;_systemTimings=new Map;_phaseTimings={preUpdate:0,fixedUpdate:0,update:0,postUpdate:0,render:0};_entityEnterTracking=new Map;_entityEnterFrameSet=new Set;_systemContexts=new WeakMap;_pendingFinalizers=[];_batchingRegistrations=!1;constructor(){this._entityManager=new H,this._eventBus=new V,this._resourceManager=new E,this._reactiveQueryManager=new R(this._entityManager),this._commandBuffer=new w,this._subscribeLifecycleHooks()}_subscribeLifecycleHooks(){this._entityManager.onAfterComponentAdded((j,$)=>{this._entityManager.markChanged(j,$);let G=this._requiredComponents.get($);if(G){let J=this._entityManager.getEntity(j);if(J){let X=J.components[$];for(let{component:Y,factory:Z}of G){if(this._entityManager._pendingBatchKeys?.has(Y))continue;if(!(Y in J.components))this._entityManager.addComponent(j,Y,Z(X))}}}}),this._entityManager.onAfterEntityMutated((j)=>{let $=this._entityManager.getEntity(j);if($)this._reactiveQueryManager.recheckEntityAndChildren($)}),this._entityManager.onAfterComponentRemoved((j,$)=>{let G=this._entityManager.getEntity(j);if(G)this._reactiveQueryManager.onComponentRemoved(G,$)}),this._entityManager.onBeforeEntityRemoved((j)=>{this._reactiveQueryManager.onEntityRemoved(j)}),this._entityManager.onAfterParentChanged((j)=>{if(this._reactiveQueryManager.hasParentHasQueries){let $=this._entityManager.getEntity(j);if($)this._reactiveQueryManager.recheckEntity($)}})}static create(){return new v}addSystem(j){let $=new S(j);return this._pendingFinalizers.push(()=>{this._registerSystem($._createSystemObject())}),$}_finalizePendingBuilders(){if(this._pendingFinalizers.length===0)return;this._batchingRegistrations=!0;while(this._pendingFinalizers.length>0){let j=this._pendingFinalizers;this._pendingFinalizers=[];for(let $ of j)$()}this._batchingRegistrations=!1,this._rebuildPhaseSystems()}update(j){this._finalizePendingBuilders();let $=this._screenManager?.getCurrentScreen()??null,G=this._diagnosticsEnabled;this._runPhase("preUpdate",j,$,G);let J=G?performance.now():0;this._fixedAccumulator+=j;let X=0;while(this._fixedAccumulator>=this._fixedDt&&X<this._maxFixedSteps)this._executePhase(this._phaseSystems.fixedUpdate,this._fixedDt,$),this._commandBuffer.playback(this),this._fixedAccumulator-=this._fixedDt,X++;if(this._fixedAccumulator>=this._fixedDt)this._fixedAccumulator=0;if(G)this._phaseTimings.fixedUpdate=performance.now()-J;this._interpolationAlpha=this._fixedAccumulator/this._fixedDt,this._runPhase("update",j,$,G),this._runPhase("postUpdate",j,$,G);for(let Y of this._postUpdateHooks)Y({ecs:this,dt:j});this._runPhase("render",j,$,G),this._changeThreshold=this._entityManager.changeSeq,this._currentTick++}_executePhase(j,$,G){for(let J of j){if(!J.process&&!J.onEntityEnter)continue;if(J.groups?.length){let W=!1;for(let F of J.groups)if(this._disabledGroups.has(F)){W=!0;break}if(W)continue}if(J.inScreens?.length){if(G===null||!J.inScreens.includes(G))continue}if(J.excludeScreens?.length){if(G!==null&&J.excludeScreens.includes(G))continue}if(J.requiredAssets?.length&&this._assetManager){let W=!0;for(let F of J.requiredAssets)if(!this._assetManager.isLoaded(F)){W=!1;break}if(!W)continue}let X=this._systemLastSeqs.get(J)??0;this._changeThreshold=X;let Y=this._systemContexts.get(J);if(!Y)Y={queries:{},dt:0,ecs:this},this._systemContexts.set(J,Y);Y.dt=$;let Z=Y.queries,B=!1,A=!1;if(J.entityQueries)for(let W in J.entityQueries){A=!0;let F=J.entityQueries[W];if(F){let L=Z[W]??(Z[W]=[]);if(this._entityManager.getEntitiesWithQueryInto(L,F.with,F.without||[],F.changed,F.changed?this._changeThreshold:void 0,F.parentHas),L.length)B=!0}}let U=this._entityEnterTracking.get(J);if(U&&J.onEntityEnter)for(let W in J.onEntityEnter){let F=Z[W],D=U.get(W);if(!F||!D)continue;let L=J.onEntityEnter[W];if(!L)continue;let _=this._entityEnterFrameSet;_.clear();for(let Q of F)if(_.add(Q.id),!D.has(Q.id))D.add(Q.id),L({entity:Q,ecs:this});for(let Q of D)if(!_.has(Q))D.delete(Q)}if(J.process){if(this._diagnosticsEnabled){let W=performance.now();if(B||J.runWhenEmpty)J.process(Y);else if(!A)J.process(Y);this._systemTimings.set(J.label,performance.now()-W)}else if(B||J.runWhenEmpty)J.process(Y);else if(!A)J.process(Y)}this._systemLastSeqs.set(J,this._entityManager.changeSeq)}}_runPhase(j,$,G,J){if(J){let X=performance.now();this._executePhase(this._phaseSystems[j],$,G),this._phaseTimings[j]=performance.now()-X}else this._executePhase(this._phaseSystems[j],$,G);this._commandBuffer.playback(this)}async initialize(){if(this._finalizePendingBuilders(),await this.initializeResources(),this._assetManager)this._assetManager.setEventBus(this._eventBus),await this._assetManager.loadEagerAssets(),this._resourceManager.add("$assets",this._assetManager.createResource());if(this._screenManager)this._screenManager.setDependencies(this._eventBus,this._assetManager,this),this._resourceManager.add("$screen",this._screenManager.createResource());for(let j of this._systems)await j.onInitialize?.(this)}async initializeResources(...j){await this._resourceManager.initializeResources(this,...j)}_rebuildPhaseSystems(){for(let j of h)this._phaseSystems[j]=[];for(let j of this._systems){let $=j.phase??"update";this._phaseSystems[$].push(j)}for(let j of h)this._phaseSystems[j].sort(($,G)=>{let J=$.priority??0;return(G.priority??0)-J})}updateSystemPriority(j,$){this._finalizePendingBuilders();let G=this._systems.find((J)=>J.label===j);if(!G)return!1;return G.priority=$,this._rebuildPhaseSystems(),!0}updateSystemPhase(j,$){this._finalizePendingBuilders();let G=this._systems.find((J)=>J.label===j);if(!G)return!1;return G.phase=$,this._rebuildPhaseSystems(),!0}get interpolationAlpha(){return this._interpolationAlpha}get fixedDt(){return this._fixedDt}disableSystemGroup(j){this._disabledGroups.add(j)}enableSystemGroup(j){this._disabledGroups.delete(j)}isSystemGroupEnabled(j){return!this._disabledGroups.has(j)}getSystemsInGroup(j){return this._finalizePendingBuilders(),this._systems.filter(($)=>$.groups?.includes(j)).map(($)=>$.label)}removeSystem(j){this._finalizePendingBuilders();let $=this._systems.findIndex((J)=>J.label===j);if($===-1)return!1;let G=this._systems[$];if(!G)return!1;if(G.onDetach)G.onDetach(this);return this._systems.splice($,1),this._systemLastSeqs.delete(G),this._entityEnterTracking.delete(G),this._rebuildPhaseSystems(),!0}_registerSystem(j){if(this._systems.push(j),this._systemLastSeqs.set(j,this._changeThreshold),!this._batchingRegistrations)this._rebuildPhaseSystems();if(j.onEntityEnter){let $=new Map;for(let G in j.onEntityEnter)$.set(G,new Set);this._entityEnterTracking.set(j,$)}if(!j.eventHandlers)return;for(let $ in j.eventHandlers){let G=j.eventHandlers[$];if(G)this._eventBus.subscribe($,(J)=>{G({data:J,ecs:this})})}}hasResource(j){return this._resourceManager.has(j)}getResource(j){if(!this._resourceManager.has(j))throw Error(`Resource '${String(j)}' not found. Available resources: [${this.getResourceKeys().map(($)=>String($)).join(", ")}]`);return this._resourceManager.get(j,this)}tryGetResource(j){let $=j;if(!this._resourceManager.has($))return;return this._resourceManager.get($,this)}addResource(j,$){return this._resourceManager.add(j,$),this}removeResource(j){return this._resourceManager.remove(j)}async disposeResource(j){return this._resourceManager.disposeResource(j,this)}async disposeResources(){return this._resourceManager.disposeResources(this)}updateResource(j,$){let G=this.getResource(j),J=$(G);return this._resourceManager.add(j,J),this._resourceManager.notifyChange(j,J,G),this}setResource(j,$){let G=this.tryGetResource(j);if(this._resourceManager.add(j,$),G!==void 0)this._resourceManager.notifyChange(j,$,G);return this}onResourceChange(j,$){return this._resourceManager.onResourceChange(j,$)}getResourceKeys(){return this._resourceManager.getKeys()}resourceNeedsInitialization(j){return this._resourceManager.needsInitialization(j)}getEntity(j){return this._entityManager.getEntity(j)}getComponent(j,$){return this._entityManager.getComponent(j,$)}addComponent(j,$,G){this._entityManager.addComponent(j,$,G)}addComponents(j,$){this._entityManager.addComponents(j,$)}removeComponent(j,$){this._entityManager.removeComponent(j,$)}hasComponent(j,$){return this._entityManager.getComponent(j,$)!==void 0}spawn(j){let $=this._entityManager.createEntity();return this._entityManager.addComponents($.id,j),$}getEntitiesWithQuery(j,$=[],G,J){return this._entityManager.getEntitiesWithQuery(j,$,G,G?this._changeThreshold:void 0,J)}getSingleton(j,$=[]){let G=this._entityManager.getEntitiesWithQuery(j,$);if(G.length===0)throw Error(`getSingleton: no entity matches query with=[${String(j)}] without=[${String($)}]`);if(G.length>1)throw Error(`getSingleton: expected 1 entity but found ${G.length} matching query with=[${String(j)}] without=[${String($)}]`);let J=G[0];if(!J)throw Error("getSingleton: unexpected empty result");return J}tryGetSingleton(j,$=[]){let G=this._entityManager.getEntitiesWithQuery(j,$);if(G.length===0)return;if(G.length>1)throw Error(`tryGetSingleton: expected 0 or 1 entity but found ${G.length} matching query with=[${String(j)}] without=[${String($)}]`);return G[0]}removeEntity(j,$){return this._entityManager.removeEntity(j,$)}spawnChild(j,$){let G=this._entityManager.spawnChild(j,$);return this._emitHierarchyChanged(G.id,null,j),G}setParent(j,$){let G=this._entityManager.getParent(j);return this._entityManager.setParent(j,$),this._emitHierarchyChanged(j,G,$),this}removeParent(j){let $=this._entityManager.getParent(j),G=this._entityManager.removeParent(j);if(G)this._emitHierarchyChanged(j,$,null);return G}getParent(j){return this._entityManager.getParent(j)}getChildren(j){return this._entityManager.getChildren(j)}getChildAt(j,$){return this._entityManager.getChildAt(j,$)}getChildIndex(j,$){return this._entityManager.getChildIndex(j,$)}getAncestors(j){return this._entityManager.getAncestors(j)}getDescendants(j){return this._entityManager.getDescendants(j)}getRoot(j){return this._entityManager.getRoot(j)}getSiblings(j){return this._entityManager.getSiblings(j)}isDescendantOf(j,$){return this._entityManager.isDescendantOf(j,$)}isAncestorOf(j,$){return this._entityManager.isAncestorOf(j,$)}getRootEntities(){return this._entityManager.getRootEntities()}forEachInHierarchy(j,$){this._entityManager.forEachInHierarchy(j,$)}hierarchyIterator(j){return this._entityManager.hierarchyIterator(j)}_emitHierarchyChanged(j,$,G){this._eventBus.publish("hierarchyChanged",{entityId:j,oldParent:$,newParent:G})}get installedPlugins(){return Array.from(this._installedPlugins)}get entityManager(){return this._entityManager}get eventBus(){return this._finalizePendingBuilders(),this._eventBus}get commands(){return this._commandBuffer}get currentTick(){return this._currentTick}get changeThreshold(){return this._changeThreshold}enableDiagnostics(j){if(this._diagnosticsEnabled=j,!j)this._systemTimings.clear(),this._phaseTimings={preUpdate:0,fixedUpdate:0,update:0,postUpdate:0,render:0}}get diagnosticsEnabled(){return this._diagnosticsEnabled}get systemTimings(){return this._systemTimings}get phaseTimings(){return this._phaseTimings}get entityCount(){return this._entityManager.entityCount}mutateComponent(j,$,G){let J=this._entityManager.getComponent(j,$);if(J===void 0)throw Error(`Entity ${j} does not have component "${String($)}"`);return G(J),this._entityManager.markChanged(j,$),J}markChanged(j,$){this._entityManager.markChanged(j,$)}registerDispose(j,$){this._entityManager.registerDispose(j,$)}registerRequired(j,$,G){if(String(j)===String($))throw Error(`Cannot require a component to depend on itself: '${String(j)}'`);let J=this._requiredComponents.get(j)??[];if(J.some((X)=>X.component===$))throw Error(`Required component '${String($)}' already registered for trigger '${String(j)}'`);this._checkRequiredCycle(j,$),J.push({component:$,factory:G}),this._requiredComponents.set(j,J)}_checkRequiredCycle(j,$){N(j,$,(G)=>this._requiredComponents.get(G))}onComponentAdded(j,$){return this._entityManager.onComponentAdded(j,$)}onComponentRemoved(j,$){return this._entityManager.onComponentRemoved(j,$)}addReactiveQuery(j,$){this._reactiveQueryManager.addQuery(j,$)}removeReactiveQuery(j){return this._reactiveQueryManager.removeQuery(j)}on(j,$){return this._eventBus.subscribe(j,$)}off(j,$){return this._eventBus.unsubscribe(j,$)}onPostUpdate(j){return this._postUpdateHooks.push(j),()=>{let $=this._postUpdateHooks.indexOf(j);if($!==-1)this._postUpdateHooks.splice($,1)}}requireAssetManager(){if(!this._assetManager)throw Error("Asset manager not configured. Use withAssets() in builder.");return this._assetManager}getAsset(j){return this.requireAssetManager().get(j)}tryGetAsset(j){return this._assetManager?.tryGet(j)}getAssetHandle(j){return this.requireAssetManager().getHandle(j)}isAssetLoaded(j){return this._assetManager?.isLoaded(j)??!1}async loadAsset(j){return this.requireAssetManager().loadAsset(j)}async loadAssetGroup(j){return this.requireAssetManager().loadAssetGroup(j)}isAssetGroupLoaded(j){return this._assetManager?.isGroupLoaded(j)??!1}getAssetGroupProgress(j){return this._assetManager?.getGroupProgress(j)??0}requireScreenManager(){if(!this._screenManager)throw Error("Screen manager not configured. Use withScreens() in builder.");return this._screenManager}async setScreen(j,$){return this.requireScreenManager().setScreen(j,$)}async pushScreen(j,$){return this.requireScreenManager().pushScreen(j,$)}async popScreen(){return this.requireScreenManager().popScreen()}getCurrentScreen(){return this._screenManager?.getCurrentScreen()??null}getScreenConfig(j){return this.requireScreenManager().getConfig(j)}tryGetScreenConfig(j){return this._screenManager?.tryGetConfig(j)??void 0}getScreenState(j){return this.requireScreenManager().getState(j)}tryGetScreenState(j){return this._screenManager?.tryGetState(j)??void 0}updateScreenState(j,$){if(typeof j==="string")this.requireScreenManager().updateState($,j);else this.requireScreenManager().updateState(j)}isCurrentScreen(j){return this._screenManager?.isCurrent(j)??!1}isScreenActive(j){return this._screenManager?.isActive(j)??!1}getScreenStackDepth(){return this._screenManager?.getStackDepth()??0}_setAssetManager(j){this._assetManager=j;for(let[$,G]of this._pendingPluginAssets)this._assetManager.register($,G);this._pendingPluginAssets=[]}_setScreenManager(j){this._screenManager=j;for(let[$,G]of this._pendingPluginScreens)this._screenManager.register($,G);this._pendingPluginScreens=[]}_hasPendingPluginAssets(){return this._pendingPluginAssets.length>0}_hasPendingPluginScreens(){return this._pendingPluginScreens.length>0}_setFixedDt(j){this._fixedDt=j}_registerAsset(j,$){this._pendingPluginAssets.push([j,$])}_registerScreen(j,$){this._pendingPluginScreens.push([j,$])}installPlugin(j){if(this._installedPlugins.has(j.id))return this;return this._installedPlugins.add(j.id),j.install(this),this}pluginFactory(){return z}getHelpers(j){return j(this)}}function Hj(j){return j}function Ej(j,$){return{x:j,y:$}}function Rj(){return{x:0,y:0}}function wj(j,$){return{x:j.x+$.x,y:j.y+$.y}}function Sj(j,$){return{x:j.x-$.x,y:j.y-$.y}}function Tj(j,$){return{x:j.x*$,y:j.y*$}}function xj(j){return{x:-j.x,y:-j.y}}function Cj(j,$){return j.x*$.x+j.y*$.y}function qj(j,$){return j.x*$.y-j.y*$.x}function vj(j){return j.x*j.x+j.y*j.y}function fj(j){return Math.sqrt(j.x*j.x+j.y*j.y)}function Nj(j){let $=Math.sqrt(j.x*j.x+j.y*j.y);if($===0)return{x:0,y:0};return{x:j.x/$,y:j.y/$}}function bj(j,$){let G=j.x-$.x,J=j.y-$.y;return G*G+J*J}function gj(j,$){let G=j.x-$.x,J=j.y-$.y;return Math.sqrt(G*G+J*J)}function kj(j,$,G=0.0000000001){return Math.abs(j.x-$.x)<=G&&Math.abs(j.y-$.y)<=G}var rj=P;export{Rj as vec2Zero,Sj as vec2Sub,Tj as vec2Scale,Nj as vec2Normalize,xj as vec2Negate,vj as vec2LengthSq,fj as vec2Length,kj as vec2Equals,Cj as vec2Dot,bj as vec2DistanceSq,gj as vec2Distance,qj as vec2Cross,wj as vec2Add,Ej as vec2,I as directValue,z as definePlugin,rj as default,q as createScreenConfigurator,Hj as createQueryDefinition,C as createAssetConfigurator,S as SystemBuilder,O as ScreenManager,K as AssetManager};
2
2
 
3
- //# debugId=380203371F4279A864756E2164756E21
3
+ //# debugId=2F687826EF1C313A64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -20,6 +20,6 @@
20
20
  "import ECSpresso from './ecspresso';\nimport { SystemBuilder, type ProcessContext } from './system-builder';\nimport { type Plugin, type BasePluginOptions, definePlugin } from './plugin';\n\nexport * from './types';\nexport * from './asset-types';\nexport * from './screen-types';\nexport * from './utils/math';\nexport type { ReactiveQueryDefinition } from './reactive-query-manager';\nexport { default as AssetManager, createAssetConfigurator } from './asset-manager';\nexport { default as ScreenManager, createScreenConfigurator } from './screen-manager';\nexport { SystemBuilder, type ProcessContext };\nexport { type Plugin, type BasePluginOptions, definePlugin };\nexport { directValue, type ResourceDirectValue } from './resource-manager';\nexport default ECSpresso;\n"
21
21
  ],
22
22
  "mappings": "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",
23
- "debugId": "380203371F4279A864756E2164756E21",
23
+ "debugId": "2F687826EF1C313A64756E2164756E21",
24
24
  "names": []
25
25
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "ecspresso",
3
- "version": "0.12.7",
3
+ "version": "0.12.9",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "homepage": "https://david0178418.github.io/ecspresso/",
7
+ "homepage": "https://DeeGeeGames.github.io/ecspresso/",
8
8
  "description": "A minimal Entity-Component-System library for typescript and javascript.",
9
9
  "sideEffects": false,
10
10
  "exports": {
@@ -82,7 +82,7 @@
82
82
  },
83
83
  "repository": {
84
84
  "type": "git",
85
- "url": "https://github.com/david0178418/ecspresso"
85
+ "url": "https://github.com/DeeGeeGames/ecspresso"
86
86
  },
87
87
  "keywords": [
88
88
  "game",