@esengine/ecs-framework 2.2.10 → 2.2.12

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/index.cjs CHANGED
@@ -1,4 +1,2 @@
1
- "use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function t(e,t,n,i,r,s,o){try{var a=e[s](o),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(i,r)}function n(e){return function(){var n=this,i=arguments;return new Promise((function(r,s){var o=e.apply(n,i);function a(e){t(o,r,s,a,c,"next",e)}function c(e){t(o,r,s,a,c,"throw",e)}a(void 0)}))}}function i(e,t,n){if(h())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,t);var r=new(e.bind.apply(e,i));return n&&d(r,n.prototype),r}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,p(i.key),i)}}function s(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function o(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,n){if(t){if("string"==typeof t)return e(t,n);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t))||n){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},a.apply(null,arguments)}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function u(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,d(e,t)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(h=function(){return!!e})()}function l(){
2
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
- var e,t,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",r=n.toStringTag||"@@toStringTag";function s(n,i,r,s){var c=i&&i.prototype instanceof a?i:a,u=Object.create(c.prototype);return f(u,"_invoke",function(n,i,r){var s,a,c,u=0,h=r||[],l=!1,f={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return s=t,a=0,c=e,f.n=n,o}};function d(n,i){for(a=n,c=i,t=0;!l&&u&&!r&&t<h.length;t++){var r,s=h[t],d=f.p,p=s[2];n>3?(r=p===i)&&(c=s[(a=s[4])?5:(a=3,3)],s[4]=s[5]=e):s[0]<=d&&((r=n<2&&d<s[1])?(a=0,f.v=i,f.n=s[1]):d<p&&(r=n<3||s[0]>i||i>p)&&(s[4]=n,s[5]=i,f.n=p,a=0))}if(r||n>1)return o;throw l=!0,i}return function(r,h,p){if(u>1)throw TypeError("Generator is already running");for(l&&1===h&&d(h,p),a=h,c=p;(t=a<2?e:c)||!l;){s||(a?a<3?(a>1&&(f.n=-1),d(a,c)):f.n=c:f.v=c);try{if(u=2,s){if(a||(r="next"),t=s[r]){if(!(t=t.call(s,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,a<2&&(a=0)}else 1===a&&(t=s.return)&&t.call(s),a<2&&(c=TypeError("The iterator does not provide a '"+r+"' method"),a=1);s=e}else if((t=(l=f.n<0)?c:n.call(i,f))!==o)break}catch(t){s=e,a=1,c=t}finally{u=1}}return{value:t,done:l}}}(n,r,s),!0),u}var o={};function a(){}function c(){}function u(){}t=Object.getPrototypeOf;var h=[][i]?t(t([][i]())):(f(t={},i,(function(){return this})),t),d=u.prototype=a.prototype=Object.create(h);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,f(e,r,"GeneratorFunction")),e.prototype=Object.create(d),e}return c.prototype=u,f(d,"constructor",u),f(u,"constructor",c),c.displayName="GeneratorFunction",f(u,r,"GeneratorFunction"),f(d),f(d,r,"Generator"),f(d,i,(function(){return this})),f(d,"toString",(function(){return"[object Generator]"})),(l=function(){return{w:s,m:p}})()}function f(e,t,n,i){var r=Object.defineProperty;try{r({},"",{})}catch(e){r=0}f=function(e,t,n,i){function s(t,n){f(e,t,(function(e){return this._invoke(t,n,e)}))}t?r?r(e,t,{value:n,enumerable:!i,configurable:!i,writable:!i}):e[t]=n:(s("next",0),s("throw",1),s("return",2))},f(e,t,n,i)}function d(e,t){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},d(e,t)}function p(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function y(e){var t="function"==typeof Map?new Map:void 0;return y=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return i(e,arguments,c(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),d(n,e)},y(e)}function g(e,t,n,i){var r,s=arguments.length,o=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,n,o):r(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o}function m(e,t){return function(n,i){t(n,i,e)}}function v(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}"function"==typeof SuppressedError&&SuppressedError;var _=function(){function e(){}return e.update=function(e){this.unscaledDeltaTime=e,this.deltaTime=e*this.timeScale,this.unscaledTotalTime+=this.unscaledDeltaTime,this.totalTime+=this.deltaTime,this.frameCount++},e.sceneChanged=function(){this.frameCount=0,this.totalTime=0,this.unscaledTotalTime=0,this.deltaTime=0,this.unscaledDeltaTime=0},e.checkEvery=function(e,t){return this.totalTime-t>=e},e}();_.deltaTime=0,_.unscaledDeltaTime=0,_.totalTime=0,_.unscaledTotalTime=0,_.timeScale=1,_.frameCount=0;var S,C=function(){function e(){this._timeInSeconds=0,this._repeats=!1,this._isDone=!1,this._elapsedTime=0}var t=e.prototype;return t.getContext=function(){return this.context},t.reset=function(){this._elapsedTime=0},t.stop=function(){this._isDone=!0},t.tick=function(){return!this._isDone&&this._elapsedTime>this._timeInSeconds&&(this._elapsedTime-=this._timeInSeconds,this._onTime(this),this._isDone||this._repeats||(this._isDone=!0)),this._elapsedTime+=_.deltaTime,this._isDone},t.initialize=function(e,t,n,i){this._timeInSeconds=e,this._repeats=t,this.context=n,this._onTime=i.bind(n)},t.unload=function(){this.context=null,this._onTime=null},s(e,[{key:"isDone",get:function(){return this._isDone}},{key:"elapsedTime",get:function(){return this._elapsedTime}}])}(),w=new WeakMap,E=new WeakMap,b=new WeakMap;function A(){return function(e){var t=w.get(e);return w.set(e,{injectable:!0,dependencies:[],properties:null==t?void 0:t.properties}),e}}function T(e){return void 0===e&&(e=0),function(t){var n=t.prototype;if(!n||"function"!=typeof n.update)throw new Error("@Updatable() decorator requires class "+t.name+" to implement IUpdatable interface with update() method. Please add 'implements IUpdatable' and define update(deltaTime?: number): void method.");return b.set(t,{updatable:!0,priority:e}),t}}function M(e){return function(t,n,i){var r=E.get(t);r||(r=new Map,E.set(t,r)),r.set(i,e)}}function x(e){var t,n=w.get(e);return null!==(t=null==n?void 0:n.injectable)&&void 0!==t&&t}function I(e,t){for(var n,r=(n=e,E.get(n)||new Map),s=[],o=e.length,a=0;a<o;a++){var c=r.get(a);if(c){if("string"==typeof c||"symbol"==typeof c)throw new Error("String and Symbol service identifiers are not yet supported in constructor injection. Please use class types for "+e.name+" parameter "+a);s.push(t.resolve(c))}else s.push(void 0)}return i(e,s)}function k(e,t){var n,i=e.constructor,r=(n=i,w.get(n));if(null!=r&&r.properties&&0!==r.properties.size)for(var s,a=o(r.properties);!(s=a()).done;){var c=s.value,u=c[0],h=c[1],l=t.resolve(h);null!==l&&(e[u]=l)}}function D(e){var t,n=b.get(e);return null!==(t=null==n?void 0:n.updatable)&&void 0!==t&&t}function R(e){return b.get(e)}exports.TimerManager=function(){function e(){this._timers=[]}var t=e.prototype;return t.update=function(){for(var e=this._timers.length-1;e>=0;e--)this._timers[e].tick()&&(this._timers[e].unload(),this._timers.splice(e,1))},t.schedule=function(e,t,n,i){var r=new C;return r.initialize(e,t,n,i),this._timers.push(r),r},t.dispose=function(){for(var e,t=o(this._timers);!(e=t()).done;){e.value.unload()}this._timers=[]},e}(),exports.TimerManager=g([T()],exports.TimerManager),exports.PerformanceWarningType=void 0,(S=exports.PerformanceWarningType||(exports.PerformanceWarningType={})).HIGH_EXECUTION_TIME="high_execution_time",S.HIGH_MEMORY_USAGE="high_memory_usage",S.HIGH_CPU_USAGE="high_cpu_usage",S.FREQUENT_GC="frequent_gc",S.LOW_FPS="low_fps",S.HIGH_ENTITY_COUNT="high_entity_count";var O=function(){function e(){this._systemData=new Map,this._systemStats=new Map,this._warnings=[],this._isEnabled=!1,this._maxRecentSamples=60,this._maxWarnings=100,this._thresholds={executionTime:{warning:16.67,critical:33.33},memoryUsage:{warning:100,critical:200},cpuUsage:{warning:70,critical:90},fps:{warning:45,critical:30},entityCount:{warning:1e3,critical:5e3}},this._fpsHistory=[],this._lastFrameTime=0,this._frameCount=0,this._fpsUpdateInterval=1e3,this._lastFpsUpdate=0,this._currentFps=60,this._memoryCheckInterval=5e3,this._lastMemoryCheck=0,this._memoryHistory=[],this._gcCount=0,this._lastGcCheck=0,this._gcCheckInterval=1e3}var t=e.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.startMonitoring=function(e){return this._isEnabled?performance.now():0},t.endMonitoring=function(e,t,n){if(void 0===n&&(n=0),this._isEnabled&&0!==t){var i=performance.now(),r=i-t,s={name:e,executionTime:r,entityCount:n,averageTimePerEntity:n>0?r/n:0,lastUpdateTime:i};this._systemData.set(e,s),this.updateStats(e,r)}},t.updateStats=function(e,t){var n=this._systemStats.get(e);n||(n={totalTime:0,averageTime:0,minTime:Number.MAX_VALUE,maxTime:0,executionCount:0,recentTimes:[],standardDeviation:0,percentile95:0,percentile99:0},this._systemStats.set(e,n)),n.totalTime+=t,n.executionCount++,n.averageTime=n.totalTime/n.executionCount,n.minTime=Math.min(n.minTime,t),n.maxTime=Math.max(n.maxTime,t),n.recentTimes.push(t),n.recentTimes.length>this._maxRecentSamples&&n.recentTimes.shift(),this.calculateAdvancedStats(n)},t.calculateAdvancedStats=function(e){if(0!==e.recentTimes.length){var t=e.recentTimes.reduce((function(e,t){return e+t}),0)/e.recentTimes.length,n=e.recentTimes.reduce((function(e,n){return e+Math.pow(n-t,2)}),0)/e.recentTimes.length;e.standardDeviation=Math.sqrt(n);var i=[].concat(e.recentTimes).sort((function(e,t){return e-t})),r=i.length;e.percentile95=i[Math.floor(.95*r)]||0,e.percentile99=i[Math.floor(.99*r)]||0}},t.getSystemData=function(e){return this._systemData.get(e)},t.getSystemStats=function(e){return this._systemStats.get(e)},t.getAllSystemData=function(){return new Map(this._systemData)},t.getAllSystemStats=function(){return new Map(this._systemStats)},t.getPerformanceReport=function(){if(!this._isEnabled)return"Performance monitoring is disabled.";var e=[];e.push("=== ECS Performance Report ==="),e.push("");for(var t,n=o(Array.from(this._systemStats.entries()).sort((function(e,t){return t[1].averageTime-e[1].averageTime})));!(t=n()).done;){var i=t.value,r=i[0],s=i[1],a=this._systemData.get(r);e.push("System: "+r),e.push(" Current: "+(null==a?void 0:a.executionTime.toFixed(2))+"ms ("+(null==a?void 0:a.entityCount)+" entities)"),e.push(" Average: "+s.averageTime.toFixed(2)+"ms"),e.push(" Min/Max: "+s.minTime.toFixed(2)+"ms / "+s.maxTime.toFixed(2)+"ms"),e.push(" Total: "+s.totalTime.toFixed(2)+"ms ("+s.executionCount+" calls)"),null!=a&&a.averageTimePerEntity&&a.averageTimePerEntity>0&&e.push(" Per Entity: "+a.averageTimePerEntity.toFixed(4)+"ms"),e.push("")}var c=Array.from(this._systemData.values()).reduce((function(e,t){return e+t.executionTime}),0);return e.push("Total Frame Time: "+c.toFixed(2)+"ms"),e.push("Systems Count: "+this._systemData.size),e.join("\n")},t.reset=function(){this._systemData.clear(),this._systemStats.clear()},t.resetSystem=function(e){this._systemData.delete(e),this._systemStats.delete(e)},t.getPerformanceWarnings=function(e){void 0===e&&(e=16.67);for(var t,n=[],i=o(this._systemData.entries());!(t=i()).done;){var r=t.value,s=r[0],a=r[1];a.executionTime>e&&n.push(s+": "+a.executionTime.toFixed(2)+"ms (>"+e+"ms)")}return n},t.setMaxRecentSamples=function(e){this._maxRecentSamples=e;for(var t,n=o(this._systemStats.values());!(t=n()).done;)for(var i=t.value;i.recentTimes.length>e;)i.recentTimes.shift()},t.dispose=function(){this._systemData.clear(),this._systemStats.clear(),this._warnings=[],this._fpsHistory=[],this._memoryHistory=[],this._isEnabled=!1},s(e,[{key:"isEnabled",get:function(){return this._isEnabled}}])}(),z=function(){function e(e,t,n){void 0===t&&(t=100),void 0===n&&(n=1024),this._objects=[],this._createFn=e,this._maxSize=t,this._objectSize=n,this._stats={size:0,maxSize:t,totalCreated:0,totalObtained:0,totalReleased:0,hitRate:0,estimatedMemoryUsage:0}}e.getPool=function(t,n,i){void 0===n&&(n=100),void 0===i&&(i=1024);var r=this._pools.get(t);return r||(r=new e((function(){return new t}),n,i),this._pools.set(t,r)),r};var t=e.prototype;return t.obtain=function(){if(this._stats.totalObtained++,this._objects.length>0){var e=this._objects.pop();return this._stats.size--,this._updateHitRate(),this._updateMemoryUsage(),e}return this._stats.totalCreated++,this._updateHitRate(),this._createFn()},t.release=function(e){e&&(this._stats.totalReleased++,this._stats.size<this._maxSize&&(e.reset(),this._objects.push(e),this._stats.size++,this._updateMemoryUsage()))},t.getStats=function(){return a({},this._stats)},t.clear=function(){for(var e,t=o(this._objects);!(e=t()).done;){e.value.reset()}this._objects.length=0,this._stats.size=0,this._updateMemoryUsage()},t.compact=function(e){for(var t=null!=e?e:Math.floor(this._objects.length/2);this._objects.length>t;){var n=this._objects.pop();n&&(n.reset(),this._stats.size--)}this._updateMemoryUsage()},t.prewarm=function(e){for(var t=Math.min(e,this._maxSize-this._objects.length),n=0;n<t;n++){var i=this._createFn();i.reset(),this._objects.push(i),this._stats.totalCreated++,this._stats.size++}this._updateMemoryUsage()},t.setMaxSize=function(e){this._maxSize=e,this._stats.maxSize=e,this._objects.length>e&&this.compact(e)},t.getAvailableCount=function(){return this._objects.length},t.isEmpty=function(){return 0===this._objects.length},t.isFull=function(){return this._objects.length>=this._maxSize},e.getAllPoolTypes=function(){return Array.from(this._pools.keys())},e.getAllPoolStats=function(){for(var e,t={},n=o(this._pools);!(e=n()).done;){var i=e.value,r=i[0],s=i[1];t[r.name||r.toString()]=s.getStats()}return t},e.compactAllPools=function(){for(var e,t=o(this._pools.values());!(e=t()).done;){e.value.compact()}},e.clearAllPools=function(){for(var e,t=o(this._pools.values());!(e=t()).done;){e.value.clear()}this._pools.clear()},e.getGlobalStatsString=function(){var e=this.getAllPoolStats(),t=["=== Object Pool Global Statistics ===",""];if(0===Object.keys(e).length)return t.push("No pools registered"),t.join("\n");for(var n=0,i=Object.entries(e);n<i.length;n++){var r=i[n],s=r[0],o=r[1];t.push(s+":"),t.push(" Size: "+o.size+"/"+o.maxSize),t.push(" Hit Rate: "+(100*o.hitRate).toFixed(1)+"%"),t.push(" Total Created: "+o.totalCreated),t.push(" Total Obtained: "+o.totalObtained),t.push(" Memory: "+(o.estimatedMemoryUsage/1024).toFixed(1)+" KB"),t.push("")}return t.join("\n")},t._updateHitRate=function(){if(0===this._stats.totalObtained)this._stats.hitRate=0;else{var e=this._stats.totalObtained-this._stats.totalCreated;this._stats.hitRate=e/this._stats.totalObtained}},t._updateMemoryUsage=function(){this._stats.estimatedMemoryUsage=this._stats.size*this._objectSize},e}();z._pools=new Map;var B,P=function(){function e(){this.pools=new Map,this.autoCompactInterval=6e4,this.lastCompactTime=0}var t=e.prototype;return t.registerPool=function(e,t){this.pools.set(e,t)},t.getPool=function(e){return this.pools.get(e)||null},t.update=function(){var e=Date.now();e-this.lastCompactTime>this.autoCompactInterval&&(this.compactAllPools(),this.lastCompactTime=e)},t.createPool=function(e,t,n,i){void 0===n&&(n=100),void 0===i&&(i=1024);var r=this.pools.get(e);return r||(r=new z(t,n,i),this.pools.set(e,r)),r},t.removePool=function(e){var t=this.pools.get(e);return!!t&&(t.clear(),this.pools.delete(e),!0)},t.getPoolNames=function(){return Array.from(this.pools.keys())},t.getPoolCount=function(){return this.pools.size},t.compactAllPools=function(){for(var e,t=o(this.pools.values());!(e=t()).done;){e.value.compact()}},t.clearAllPools=function(){for(var e,t=o(this.pools.values());!(e=t()).done;){e.value.clear()}},t.getAllStats=function(){for(var e,t=new Map,n=o(this.pools);!(e=n()).done;){var i=e.value,r=i[0],s=i[1];t.set(r,s.getStats())}return t},t.getGlobalStats=function(){for(var e,t=0,n=0,i=0,r=0,s=0,a=0,c=o(this.pools.values());!(e=c()).done;){var u=e.value.getStats();t+=u.size,n+=u.maxSize,i+=u.totalCreated,r+=u.totalObtained,s+=u.totalReleased,a+=u.estimatedMemoryUsage}return{size:t,maxSize:n,totalCreated:i,totalObtained:r,totalReleased:s,hitRate:0===r?0:(r-i)/r,estimatedMemoryUsage:a}},t.getStatsString=function(){var e=["=== Pool Manager Statistics ===",""];if(0===this.pools.size)return e.push("No pools registered"),e.join("\n");var t=this.getGlobalStats();e.push("Total Pools: "+this.pools.size),e.push("Global Hit Rate: "+(100*t.hitRate).toFixed(1)+"%"),e.push("Global Memory Usage: "+(t.estimatedMemoryUsage/1024).toFixed(1)+" KB"),e.push("");for(var n,i=o(this.pools);!(n=i()).done;){var r=n.value,s=r[0],a=r[1].getStats();e.push(s+":"),e.push(" Size: "+a.size+"/"+a.maxSize),e.push(" Hit Rate: "+(100*a.hitRate).toFixed(1)+"%"),e.push(" Memory: "+(a.estimatedMemoryUsage/1024).toFixed(1)+" KB"),e.push("")}return e.join("\n")},t.setAutoCompactInterval=function(e){this.autoCompactInterval=e},t.prewarmAllPools=function(){for(var e,t=o(this.pools.values());!(e=t()).done;){var n=e.value,i=n.getStats(),r=Math.floor(.2*i.maxSize);n.prewarm(r)}},t.reset=function(){this.clearAllPools(),this.pools.clear(),this.lastCompactTime=0},t.dispose=function(){this.reset()},e}(),L=Symbol("ComponentTypeName"),N=Symbol("SystemTypeName");function U(e){return e.__systemMetadata__}function W(e){var t=e[L];return t||(e.name||"UnknownComponent")}function F(e){var t=e[N];return t||(e.name||"UnknownSystem")}function H(e){return W(e.constructor)}function j(e){return F(e.constructor)}exports.LogLevel=void 0,(B=exports.LogLevel||(exports.LogLevel={}))[B.Debug=0]="Debug",B[B.Info=1]="Info",B[B.Warn=2]="Warn",B[B.Error=3]="Error",B[B.Fatal=4]="Fatal",B[B.None=5]="None";var q={BLACK:"",RED:"",GREEN:"",YELLOW:"",BLUE:"",MAGENTA:"",CYAN:"",WHITE:"",BRIGHT_BLACK:"",BRIGHT_RED:"",BRIGHT_GREEN:"",BRIGHT_YELLOW:"",BRIGHT_BLUE:"",BRIGHT_MAGENTA:"",BRIGHT_CYAN:"",BRIGHT_WHITE:"",RESET:"",BOLD:"",UNDERLINE:""},G=function(){function e(e){void 0===e&&(e={}),this._config=a({level:exports.LogLevel.Info,enableTimestamp:!0,enableColors:"undefined"==typeof window},e)}var t=e.prototype;return t.debug=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.log.apply(this,[exports.LogLevel.Debug,e].concat(n))},t.info=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.log.apply(this,[exports.LogLevel.Info,e].concat(n))},t.warn=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.log.apply(this,[exports.LogLevel.Warn,e].concat(n))},t.error=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.log.apply(this,[exports.LogLevel.Error,e].concat(n))},t.fatal=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.log.apply(this,[exports.LogLevel.Fatal,e].concat(n))},t.setLevel=function(e){this._config.level=e},t.setColors=function(e){0===Object.keys(e).length?delete this._config.colors:this._config.colors=a({},this._config.colors,e)},t.setPrefix=function(e){this._config.prefix=e},t.log=function(e,t){if(!(e<this._config.level)){var n=t;if(this._config.enableTimestamp)n="["+(new Date).toISOString()+"] "+n;if(this._config.prefix&&(n="["+this._config.prefix+"] "+n),n="["+exports.LogLevel[e].toUpperCase()+"] "+n,this._config.output)this._config.output(e,n);else{for(var i=arguments.length,r=new Array(i>2?i-2:0),s=2;s<i;s++)r[s-2]=arguments[s];this.outputToConsole.apply(this,[e,n].concat(r))}}},t.outputToConsole=function(e,t){for(var n=this._config.enableColors?this.getColors():null,i=arguments.length,r=new Array(i>2?i-2:0),s=2;s<i;s++)r[s-2]=arguments[s];switch(e){case exports.LogLevel.Debug:var o,a;if(n)(o=console).debug.apply(o,[""+n.debug+t+n.reset].concat(r));else(a=console).debug.apply(a,[t].concat(r));break;case exports.LogLevel.Info:var c,u;if(n)(c=console).info.apply(c,[""+n.info+t+n.reset].concat(r));else(u=console).info.apply(u,[t].concat(r));break;case exports.LogLevel.Warn:var h,l;if(n)(h=console).warn.apply(h,[""+n.warn+t+n.reset].concat(r));else(l=console).warn.apply(l,[t].concat(r));break;case exports.LogLevel.Error:var f,d;if(n)(f=console).error.apply(f,[""+n.error+t+n.reset].concat(r));else(d=console).error.apply(d,[t].concat(r));break;case exports.LogLevel.Fatal:var p,y;if(n)(p=console).error.apply(p,[""+n.fatal+t+n.reset].concat(r));else(y=console).error.apply(y,[t].concat(r))}},t.getColors=function(){return a({},{debug:q.BRIGHT_BLACK,info:q.GREEN,warn:q.YELLOW,error:q.RED,fatal:q.BRIGHT_RED,reset:q.RESET},this._config.colors)},e}(),Q=function(){function e(){this._loggers=new Map,this._defaultLevel=exports.LogLevel.Info}var t=e.prototype;return t.createDefaultLogger=function(){return this._loggerFactory?this._loggerFactory():new G({level:this._defaultLevel})},e.getInstance=function(){return e._instance||(e._instance=new e),e._instance},t.getLogger=function(e){if(!e)return this.defaultLogger;if(!this._loggers.has(e)){var t=this._loggerFactory?this._loggerFactory(e):new G({prefix:e,level:this._defaultLevel});this._loggers.set(e,t)}return this._loggers.get(e)},t.setLogger=function(e,t){this._loggers.set(e,t)},t.setGlobalLevel=function(e){this._defaultLevel=e,this._defaultLogger instanceof G&&this._defaultLogger.setLevel(e);for(var t,n=o(this._loggers.values());!(t=n()).done;){var i=t.value;i instanceof G&&i.setLevel(e)}},t.createChildLogger=function(e,t){var n=e+"."+t;return this.getLogger(n)},t.setGlobalColors=function(e){this._defaultLogger instanceof G&&this._defaultLogger.setColors(e);for(var t,n=o(this._loggers.values());!(t=n()).done;){var i=t.value;i instanceof G&&i.setColors(e)}},t.resetColors=function(){this._defaultLogger instanceof G&&this._defaultLogger.setColors({});for(var e,t=o(this._loggers.values());!(e=t()).done;){var n=e.value;n instanceof G&&n.setColors({})}},t.setLoggerFactory=function(e){(this._defaultLogger||this._loggers.size>0)&&console.warn("[LoggerManager] setLoggerFactory 应该在导入 ECS 模块之前调用。已创建的 logger 引用不会被更新。"),this._loggerFactory=e,this._defaultLogger=void 0,this._loggers.clear()},s(e,[{key:"defaultLogger",get:function(){return this._defaultLogger||(this._defaultLogger=this.createDefaultLogger()),this._defaultLogger}}])}(),V=Q.getInstance().getLogger();function Y(e){return Q.getInstance().getLogger(e)}Y("ReferenceTracker");var K=function(){function e(e){this._target=e}return e.prototype.deref=function(){return this._target},e}(),J="undefined"!=typeof globalThis&&globalThis.WeakRef||"undefined"!=typeof global&&global.WeakRef||"undefined"!=typeof window&&window.WeakRef||K,$=new Map;function Z(e){var t=$.get(e);return(null==t?void 0:t.deref())||null}var X=function(){function e(){this._references=new Map,this._scene=null}var t=e.prototype;return t.registerReference=function(e,t,n){var i=e.id,r=this._references.get(i);r||(r=new Set,this._references.set(i,r)),this._findRecord(r,t,n)||r.add({component:new J(t),propertyKey:n})},t.unregisterReference=function(e,t,n){var i=e.id,r=this._references.get(i);if(r){var s=this._findRecord(r,t,n);s&&(r.delete(s),0===r.size&&this._references.delete(i))}},t.clearReferencesTo=function(e){var t=this._references.get(e);if(t){for(var n,i=[],r=o(t);!(n=r()).done;){var s=n.value;s.component.deref()&&i.push(s)}for(var a=0,c=i;a<c.length;a++){var u=c[a],h=u.component.deref();h&&(h[u.propertyKey]=null)}this._references.delete(e)}},t.clearComponentReferences=function(e){for(var t,n=o(this._references.entries());!(t=n()).done;){for(var i,r=t.value,s=r[0],a=r[1],c=[],u=o(a);!(i=u()).done;){var h=i.value,l=h.component.deref();l&&l!==e||c.push(h)}for(var f=0,d=c;f<d.length;f++){var p=d[f];a.delete(p)}0===a.size&&this._references.delete(s)}},t.getReferencesTo=function(e){var t=this._references.get(e);if(!t)return[];for(var n,i=[],r=o(t);!(n=r()).done;){var s=n.value;s.component.deref()&&i.push(s)}return i},t.cleanup=function(){for(var e,t=[],n=o(this._references.entries());!(e=n()).done;){for(var i,r=e.value,s=r[0],a=r[1],c=[],u=o(a);!(i=u()).done;){var h=i.value;h.component.deref()||c.push(h)}for(var l=0,f=c;l<f.length;l++){var d=f[l];a.delete(d)}0===a.size&&t.push(s)}for(var p=0,y=t;p<y.length;p++){var g=y[p];this._references.delete(g)}},t.setScene=function(e){this._scene=new J(e)},t.registerEntityScene=function(e,t){$.set(e,new J(t))},t.unregisterEntityScene=function(e){$.delete(e)},t.getDebugInfo=function(){for(var e,t={},n=o(this._references.entries());!(e=n()).done;){for(var i,r=e.value,s=r[0],a=[],c=o(r[1]);!(i=c()).done;){var u=i.value,h=u.component.deref();h&&a.push({componentId:h.id,propertyKey:u.propertyKey})}a.length>0&&(t["entity_"+s]=a)}return t},t._findRecord=function(e,t,n){for(var i,r=o(e);!(i=r()).done;){var s=i.value;if(s.component.deref()===t&&s.propertyKey===n)return s}},e}(),ee=Y("EntityRefDecorator"),te=Symbol("EntityRefMetadata"),ne=Symbol("EntityRefValues");function ie(e){var t=e[ne];return t||(t=new Map,e[ne]=t),t}function re(e){return e&&("function"==typeof e?e:e.constructor)[te]||null}var se=function(){function e(){}var t=e.prototype;return t.collectEntityData=function(e){if(!e)return this.getEmptyEntityDebugData();var t,n=e.entities;if(!n)return this.getEmptyEntityDebugData();try{t=n.getStats?n.getStats():this.calculateFallbackEntityStats(n)}catch(e){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}}var i=this.collectArchetypeData(e);return{totalEntities:t.totalEntities,activeEntities:t.activeEntities,pendingAdd:t.pendingAdd||0,pendingRemove:t.pendingRemove||0,entitiesPerArchetype:i.distribution,topEntitiesByComponents:i.topEntities,entityHierarchy:[],entityDetailsMap:{}}},t.getRawEntityList=function(e){if(!e)return[];var t=e.entities;return null!=t&&t.buffer?t.buffer.map((function(e){var t,n;return{id:e.id,name:e.name||"Entity_"+e.id,active:!1!==e.active,enabled:!1!==e.enabled,activeInHierarchy:!1!==e.activeInHierarchy,componentCount:e.components.length,componentTypes:e.components.map((function(e){return H(e)})),parentId:(null===(t=e.parent)||void 0===t?void 0:t.id)||null,childIds:(null===(n=e.children)||void 0===n?void 0:n.map((function(e){return e.id})))||[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0}})):[]},t.getEntityDetails=function(e,t){try{var n,i,r;if(!t)return null;var s=t.entities;if(null==s||!s.buffer)return null;var o=s.buffer.find((function(t){return t.id===e}));if(!o)return null;var c=o.getDebugInfo?o.getDebugInfo():this.buildFallbackEntityInfo(o,t),u=this.extractComponentDetails(o.components),h=this.getSceneInfo(t);return a({},c,{scene:h.name,sceneName:h.name,sceneType:h.type,parentName:(null===(n=o.parent)||void 0===n?void 0:n.name)||null,components:u||[],componentCount:(null===(i=o.components)||void 0===i?void 0:i.length)||0,componentTypes:(null===(r=o.components)||void 0===r?void 0:r.map((function(e){return H(e)})))||[]})}catch(e){return{error:"获取实体详情失败: "+(e instanceof Error?e.message:String(e)),scene:"获取失败",components:[],componentCount:0,componentTypes:[]}}},t.getSceneInfo=function(e){var t="当前场景",n="Scene";try{if(e.name&&"string"==typeof e.name&&e.name.trim())t=e.name.trim();else if(e.constructor&&e.constructor.name)t=e.constructor.name,n=e.constructor.name;else if(e._name&&"string"==typeof e._name&&e._name.trim())t=e._name.trim();else{var i,r=null===(i=Object.getPrototypeOf(e))||void 0===i||null===(i=i.constructor)||void 0===i?void 0:i.name;r&&"Object"!==r&&(t=r,n=r)}}catch(e){t="场景名获取失败"}return{name:t,type:n}},t.collectEntityDataWithMemory=function(e){if(!e)return this.getEmptyEntityDebugData();var t,n=e.entities;if(!n)return this.getEmptyEntityDebugData();try{t=n.getStats?n.getStats():this.calculateFallbackEntityStats(n)}catch(e){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}}var i=this.collectArchetypeDataWithMemory(e);return{totalEntities:t.totalEntities,activeEntities:t.activeEntities,pendingAdd:t.pendingAdd||0,pendingRemove:t.pendingRemove||0,entitiesPerArchetype:i.distribution,topEntitiesByComponents:i.topEntities,entityHierarchy:this.buildEntityHierarchyTree(n),entityDetailsMap:this.buildEntityDetailsMap(n,e)}},t.collectArchetypeData=function(e){var t;if(e&&e.archetypeSystem&&"function"==typeof e.archetypeSystem.getAllArchetypes)return this.extractArchetypeStatistics(e.archetypeSystem);var n={entities:(null===(t=e.entities)||void 0===t?void 0:t.buffer)||[]};return{distribution:this.getArchetypeDistributionFast(n),topEntities:this.getTopEntitiesByComponentsFast(n)}},t.getArchetypeDistributionFast=function(e){var t=new Map;return e&&e.entities&&e.entities.forEach((function(e){var n,i=(null===(n=e.components)||void 0===n?void 0:n.map((function(e){return H(e)})))||[],r=i.length>0?i.sort().join(", "):"无组件",s=t.get(r);s?s.count++:t.set(r,{count:1,componentTypes:i})})),Array.from(t.entries()).map((function(e){return{signature:e[0],count:e[1].count,memory:0}})).sort((function(e,t){return t.count-e.count})).slice(0,20)},t.getTopEntitiesByComponentsFast=function(e){return e&&e.entities?e.entities.map((function(e){var t;return{id:e.id.toString(),name:e.name||"Entity_"+e.id,componentCount:(null===(t=e.components)||void 0===t?void 0:t.length)||0,memory:0}})).sort((function(e,t){return t.componentCount-e.componentCount})):[]},t.collectArchetypeDataWithMemory=function(e){var t;if(e&&e.archetypeSystem&&"function"==typeof e.archetypeSystem.getAllArchetypes)return this.extractArchetypeStatisticsWithMemory(e.archetypeSystem);var n={entities:(null===(t=e.entities)||void 0===t?void 0:t.buffer)||[]};return{distribution:this.getArchetypeDistributionWithMemory(n),topEntities:this.getTopEntitiesByComponentsWithMemory(n)}},t.extractArchetypeStatistics=function(e){var t=e.getAllArchetypes(),n=[],i=[];return t.forEach((function(e){var t,r,s=(null===(t=e.componentTypes)||void 0===t?void 0:t.map((function(e){return e.name})).join(","))||"Unknown",o=(null===(r=e.entities)||void 0===r?void 0:r.length)||0;n.push({signature:s,count:o,memory:0}),e.entities&&e.entities.forEach((function(e){var t;i.push({id:e.id.toString(),name:e.name||"Entity_"+e.id,componentCount:(null===(t=e.components)||void 0===t?void 0:t.length)||0,memory:0})}))})),n.sort((function(e,t){return t.count-e.count})),i.sort((function(e,t){return t.componentCount-e.componentCount})),{distribution:n,topEntities:i}},t.extractArchetypeStatisticsWithMemory=function(e){var t=this,n=e.getAllArchetypes(),i=[],r=[];return n.forEach((function(e){var n,s,o=(null===(n=e.componentTypes)||void 0===n?void 0:n.map((function(e){return e.name})).join(","))||"Unknown",a=(null===(s=e.entities)||void 0===s?void 0:s.length)||0,c=0;if(e.entities&&e.entities.length>0){for(var u=Math.min(5,e.entities.length),h=0,l=0;l<u;l++)h+=t.estimateEntityMemoryUsage(e.entities[l]);c=h/u*a}i.push({signature:o,count:a,memory:c}),e.entities&&e.entities.forEach((function(e){var n;r.push({id:e.id.toString(),name:e.name||"Entity_"+e.id,componentCount:(null===(n=e.components)||void 0===n?void 0:n.length)||0,memory:t.estimateEntityMemoryUsage(e)})}))})),i.sort((function(e,t){return t.count-e.count})),r.sort((function(e,t){return t.componentCount-e.componentCount})),{distribution:i,topEntities:r}},t.getArchetypeDistribution=function(e){var t=new Map;return e&&e.entities&&e.entities.forEach((function(e){var n,i=(null===(n=e.componentMask)||void 0===n?void 0:n.toString())||"0",r=t.get(i);t.set(i,(r||0)+1)})),Array.from(t.entries()).map((function(e){return{signature:e[0],count:e[1],memory:0}})).sort((function(e,t){return t.count-e.count}))},t.getArchetypeDistributionWithMemory=function(e){var t=this,n=new Map;return e&&e.entities&&e.entities.forEach((function(e){var i,r=(null===(i=e.components)||void 0===i?void 0:i.map((function(e){return H(e)})))||[],s=r.length>0?r.sort().join(", "):"无组件",o=n.get(s),a=t.estimateEntityMemoryUsage(e);(isNaN(a)||a<0)&&(a=0),o?(o.count++,o.memory+=a):n.set(s,{count:1,memory:a,componentTypes:r})})),Array.from(n.entries()).map((function(e){var t=e[0],n=e[1];return{signature:t,count:n.count,memory:isNaN(n.memory)?0:n.memory}})).sort((function(e,t){return t.count-e.count}))},t.getTopEntitiesByComponents=function(e){return e&&e.entities?e.entities.map((function(e){var t;return{id:e.id.toString(),name:e.name||"Entity_"+e.id,componentCount:(null===(t=e.components)||void 0===t?void 0:t.length)||0,memory:0}})).sort((function(e,t){return t.componentCount-e.componentCount})):[]},t.getTopEntitiesByComponentsWithMemory=function(e){var t=this;return e&&e.entities?e.entities.map((function(e){var n;return{id:e.id.toString(),name:e.name||"Entity_"+e.id,componentCount:(null===(n=e.components)||void 0===n?void 0:n.length)||0,memory:t.estimateEntityMemoryUsage(e)}})).sort((function(e,t){return t.componentCount-e.componentCount})):[]},t.getEmptyEntityDebugData=function(){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}},t.calculateFallbackEntityStats=function(e){var t=e.buffer||[],n=t.filter((function(e){return e.enabled&&!e._isDestroyed}));return{totalEntities:t.length,activeEntities:n.length,pendingAdd:0,pendingRemove:0,averageComponentsPerEntity:n.length>0?t.reduce((function(e,t){var n;return e+((null===(n=t.components)||void 0===n?void 0:n.length)||0)}),0)/n.length:0}},t.estimateEntityMemoryUsage=function(e){var t=this;try{var n=0,i=this.calculateObjectSize(e,["components","children","parent"]);return!isNaN(i)&&i>0&&(n+=i),e.components&&Array.isArray(e.components)&&e.components.forEach((function(e){var i=t.calculateObjectSize(e,["entity"]);!isNaN(i)&&i>0&&(n+=i)})),isNaN(n)||n<0?0:n}catch(e){return 0}},t.calculateObjectSize=function(e,t){if(void 0===t&&(t=[]),!e||"object"!=typeof e)return 0;var n=new WeakSet,i=function(e,r){if(void 0===r&&(r=0),!e||"object"!=typeof e||r>=2)return 0;if(n.has(e))return 0;n.add(e);var s=32;try{for(var o=Object.keys(e),a=Math.min(o.length,20),c=0;c<a;c++){var u=o[c];if(!(t.includes(u)||"constructor"===u||"__proto__"===u||u.startsWith("_cc_")||u.startsWith("__"))){var h=e[u];s+=2*u.length,"string"==typeof h?s+=Math.min(2*h.length,200):"number"==typeof h?s+=8:"boolean"==typeof h?s+=4:Array.isArray(h)?s+=40+Math.min(8*h.length,160):"object"==typeof h&&null!==h&&(s+=i(h,r+1))}}}catch(e){return 64}return s};try{var r=i(e);return Math.max(r,32)}catch(e){return 64}},t.buildEntityHierarchyTree=function(e){var t=this;if(null==e||!e.buffer)return[];var n=[];return e.buffer.forEach((function(e){if(!e.parent){var i=t.buildEntityHierarchyNode(e);n.push(i)}})),n.sort((function(e,t){return e.name<t.name?-1:e.name>t.name?1:e.id-t.id})),n},t.buildEntityHierarchyNode=function(e){var t,n=this,i={id:e.id,name:e.name||"Entity_"+e.id,active:!1!==e.active,enabled:!1!==e.enabled,activeInHierarchy:!1!==e.activeInHierarchy,componentCount:e.components.length,componentTypes:e.components.map((function(e){return H(e)})),parentId:(null===(t=e.parent)||void 0===t?void 0:t.id)||null,children:[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0};(e.children&&e.children.length>0&&(i.children=e.children.map((function(e){return n.buildEntityHierarchyNode(e)}))),"function"==typeof e.getDebugInfo)&&(i=a({},i,e.getDebugInfo()));return e.components&&e.components.length>0&&(i.componentDetails=this.extractComponentDetails(e.components)),i},t.buildEntityDetailsMap=function(e,t){var n=this;if(null==e||!e.buffer)return{};for(var i={},r=e.buffer,s=0;s<r.length;s+=100){r.slice(s,s+100).forEach((function(e){var r,s=e.getDebugInfo?e.getDebugInfo():n.buildFallbackEntityInfo(e,t),o=e.getComponentCacheStats?e.getComponentCacheStats():null,c=n.extractComponentDetails(e.components);i[e.id]=a({},s,{parentName:(null===(r=e.parent)||void 0===r?void 0:r.name)||null,components:c,componentTypes:s.componentTypes||c.map((function(e){return e.typeName})),cachePerformance:o?{hitRate:o.cacheStats.hitRate,size:o.cacheStats.size,maxSize:o.cacheStats.maxSize}:null})}))}return i},t.buildFallbackEntityInfo=function(e,t){var n,i,r,s=this.getSceneInfo(t);return{name:e.name||"Entity_"+e.id,id:e.id,enabled:!1!==e.enabled,active:!1!==e.active,activeInHierarchy:!1!==e.activeInHierarchy,destroyed:e.isDestroyed||!1,scene:s.name,sceneName:s.name,sceneType:s.type,componentCount:e.components.length,componentTypes:e.components.map((function(e){return H(e)})),componentMask:(null===(n=e.componentMask)||void 0===n?void 0:n.toString())||"0",parentId:(null===(i=e.parent)||void 0===i?void 0:i.id)||null,childCount:(null===(r=e.children)||void 0===r?void 0:r.length)||0,childIds:e.children.map((function(e){return e.id}))||[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0}},t.extractComponentDetails=function(e){var t=this;return e.map((function(e){var n=H(e),i={};try{Object.keys(e).forEach((function(n){if(!n.startsWith("_")&&"entity"!==n&&"constructor"!==n){var r=e[n];null!=r&&(i[n]=t.formatPropertyValue(r))}})),0===Object.keys(i).length&&(i._info="该组件没有公开属性",i._componentId=H(e))}catch(t){i._error="属性提取失败",i._componentId=H(e)}return{typeName:n,properties:i}}))},t.getComponentProperties=function(e,t,n){var i=this;try{if(!n)return{};var r=n.entities;if(null==r||!r.buffer)return{};var s=r.buffer.find((function(t){return t.id===e}));if(!s||t>=s.components.length)return{};var o=s.components[t],a={};return Object.keys(o).forEach((function(e){if(!e.startsWith("_")&&"entity"!==e){var t=o[e];null!=t&&(a[e]=i.formatPropertyValue(t))}})),a}catch(e){return{_error:"属性提取失败"}}},t.formatPropertyValue=function(e,t){return void 0===t&&(t=0),null==e?e:"object"!=typeof e?"string"==typeof e&&e.length>200?"[长字符串: "+e.length+"字符] "+e.substring(0,100)+"...":e:0===t?this.formatObjectFirstLevel(e):this.createLazyLoadPlaceholder(e)},t.formatObjectFirstLevel=function(e){var t=this;try{if(Array.isArray(e)){if(0===e.length)return[];if(e.length>10){var n=e.slice(0,3).map((function(e){return t.formatPropertyValue(e,1)}));return{_isLazyArray:!0,_arrayLength:e.length,_sample:n,_summary:"数组["+e.length+"个元素]"}}return e.map((function(e){return t.formatPropertyValue(e,1)}))}var i=Object.keys(e);if(0===i.length)return{};for(var r={},s=0,o=0,a=i;o<a.length;o++){var c=a[o];if(s>=15){r._hasMoreProperties=!0,r._totalProperties=i.length,r._hiddenCount=i.length-s;break}if(!c.startsWith("_")&&!c.startsWith("$")&&"function"!=typeof e[c])try{var u=e[c];null!=u&&(r[c]=this.formatPropertyValue(u,1),s++)}catch(e){r[c]="[访问失败: "+(e instanceof Error?e.message:String(e))+"]",s++}}return r}catch(e){return"[对象解析失败: "+(e instanceof Error?e.message:String(e))+"]"}},t.createLazyLoadPlaceholder=function(e){try{var t,n=(null===(t=e.constructor)||void 0===t?void 0:t.name)||"Object";return{_isLazyObject:!0,_typeName:n,_summary:this.getObjectSummary(e,n),_objectId:this.generateObjectId(e)}}catch(e){return{_isLazyObject:!0,_typeName:"Unknown",_summary:"无法分析的对象: "+(e instanceof Error?e.message:String(e)),_objectId:Math.random().toString(36).substr(2,9)}}},t.getObjectSummary=function(e,t){try{if((t.toLowerCase().includes("vec")||t.toLowerCase().includes("vector"))&&void 0!==e.x&&void 0!==e.y){var n=void 0!==e.z?e.z:"";return t+"("+e.x+", "+e.y+(n?", "+n:"")+")"}if(t.toLowerCase().includes("color")&&void 0!==e.r&&void 0!==e.g&&void 0!==e.b){var i=void 0!==e.a?e.a:1;return t+"("+e.r+", "+e.g+", "+e.b+", "+i+")"}if(t.toLowerCase().includes("node"))return t+": "+(e.name||e._name||"未命名");if(t.toLowerCase().includes("component")){var r,s,o=(null===(r=e.node)||void 0===r?void 0:r.name)||(null===(s=e.node)||void 0===s?void 0:s._name)||"";return t+(o?" on "+o:"")}var a=Object.keys(e);return 0===a.length?t+" (空对象)":t+" ("+a.length+"个属性)"}catch(e){return t+" (无法分析)"}},t.generateObjectId=function(e){try{return void 0!==e.id?"obj_"+e.id:void 0!==e._id?"obj_"+e._id:void 0!==e.uuid?"obj_"+e.uuid:void 0!==e._uuid?"obj_"+e._uuid:"obj_"+Math.random().toString(36).substr(2,9)}catch(e){return"obj_"+Math.random().toString(36).substr(2,9)}},t.expandLazyObject=function(e,t,n,i){try{if(!i)return null;var r=i.entities;if(null==r||!r.buffer)return null;var s=r.buffer.find((function(t){return t.id===e}));if(!s)return null;if(t>=s.components.length)return null;var o=s.components[t],a=this.getObjectByPath(o,n);return a?this.formatObjectFirstLevel(a):null}catch(e){return{error:"展开失败: "+(e instanceof Error?e.message:String(e))}}},t.getObjectByPath=function(e,t){if(!t)return e;for(var n,i=e,r=o(t.split("."));!(n=r()).done;){var s=n.value;if(null==i)return null;if(s.includes("[")&&s.includes("]")){var a=s.substring(0,s.indexOf("[")),c=parseInt(s.substring(s.indexOf("[")+1,s.indexOf("]")));if(a&&(i=i[a]),!(Array.isArray(i)&&c>=0&&c<i.length))return null;i=i[c]}else i=i[s]}return i},e}(),oe=function(){function e(){}return e.prototype.collectSystemData=function(e,t){if(!t)return{totalSystems:0,systemsInfo:[]};var n=t.entityProcessors;if(!n)return{totalSystems:0,systemsInfo:[]};var i=n.processors||[],r=new Map,s=new Map;if(e)try{r=e.getAllSystemStats(),s=e.getAllSystemData()}catch(e){}return{totalSystems:i.length,systemsInfo:i.map((function(e){var t,n=e.systemName||j(e),i=r.get(n),o=s.get(n);return{name:n,type:j(e),entityCount:(null===(t=e.entities)||void 0===t?void 0:t.length)||0,executionTime:(null==i?void 0:i.averageTime)||(null==o?void 0:o.executionTime)||0,minExecutionTime:(null==i?void 0:i.minTime)===Number.MAX_VALUE?0:(null==i?void 0:i.minTime)||0,maxExecutionTime:(null==i?void 0:i.maxTime)||0,executionTimeHistory:(null==i?void 0:i.recentTimes)||[],updateOrder:e.updateOrder||0,enabled:!1!==e.enabled,lastUpdateTime:(null==o?void 0:o.lastUpdateTime)||0}}))}},e}(),ae=function(){function e(){this.frameTimeHistory=[],this.maxHistoryLength=60,this.lastGCCount=0,this.gcCollections=0,this.lastMemoryCheck=0}var t=e.prototype;return t.collectPerformanceData=function(e){var t=_.deltaTime,n=1e3*t,i=t>0?Math.round(1/t):0,r=this.getECSPerformanceData(e),s=r.totalExecutionTime,o=n>0?s/n*100:0,a=0;performance.memory&&(a=performance.memory.usedJSHeapSize/1024/1024),this.frameTimeHistory.push(s),this.frameTimeHistory.length>this.maxHistoryLength&&this.frameTimeHistory.shift();var c=this.frameTimeHistory.filter((function(e){return e>=0}));return{frameTime:s,engineFrameTime:n,ecsPercentage:o,memoryUsage:a,fps:i,averageFrameTime:c.length>0?c.reduce((function(e,t){return e+t}),0)/c.length:s,minFrameTime:c.length>0?Math.min.apply(Math,c):s,maxFrameTime:c.length>0?Math.max.apply(Math,c):s,frameTimeHistory:[].concat(this.frameTimeHistory),systemPerformance:this.getSystemPerformance(e),systemBreakdown:r.systemBreakdown,memoryDetails:this.getMemoryDetails()}},t.getECSPerformanceData=function(e){if(!e)return{totalExecutionTime:0,systemBreakdown:[]};if(!e.enabled){try{e.enabled=!0}catch(e){}return{totalExecutionTime:0,systemBreakdown:[]}}try{var t=0,n=[],i=e.getAllSystemStats();if(0===i.size)return{totalExecutionTime:0,systemBreakdown:[]};for(var r,s=o(i.entries());!(r=s()).done;){var a=r.value,c=a[0],u=a[1],h=u.recentTimes&&u.recentTimes.length>0?u.recentTimes[u.recentTimes.length-1]:u.averageTime||0;t+=h,n.push({systemName:c,executionTime:h,percentage:0})}return n.forEach((function(e){e.percentage=t>0?e.executionTime/t*100:0})),n.sort((function(e,t){return t.executionTime-e.executionTime})),{totalExecutionTime:t,systemBreakdown:n}}catch(e){return{totalExecutionTime:0,systemBreakdown:[]}}},t.getSystemPerformance=function(e){if(!e)return[];try{var t=e.getAllSystemStats(),n=e.getAllSystemData();return Array.from(t.entries()).map((function(e){var t=e[0],i=e[1],r=n.get(t);return{systemName:t,averageTime:i.averageTime||0,maxTime:i.maxTime||0,minTime:i.minTime===Number.MAX_VALUE?0:i.minTime||0,samples:i.executionCount||0,percentage:0,entityCount:(null==r?void 0:r.entityCount)||0,lastExecutionTime:(null==r?void 0:r.executionTime)||0}}))}catch(e){return[]}},t.getMemoryDetails=function(){var e={entities:0,components:0,systems:0,pooled:0,totalMemory:0,usedMemory:0,freeMemory:0,gcCollections:this.updateGCCount()};try{if(performance.memory){var t=performance.memory;if(e.totalMemory=t.jsHeapSizeLimit||536870912,e.usedMemory=t.usedJSHeapSize||0,e.freeMemory=e.totalMemory-e.usedMemory,this.lastMemoryCheck>0)this.lastMemoryCheck-e.usedMemory>1048576&&this.gcCollections++;this.lastMemoryCheck=e.usedMemory}else e.totalMemory=536870912,e.freeMemory=536870912}catch(e){return{totalMemory:0,usedMemory:0,freeMemory:0,entityMemory:0,componentMemory:0,systemMemory:0,pooledMemory:0,gcCollections:this.gcCollections}}return e},t.updateGCCount=function(){try{return"undefined"!=typeof PerformanceObserver||performance.measureUserAgentSpecificMemory,this.gcCollections}catch(e){return this.gcCollections}},e}(),ce=function(){function e(e,t,n,i,r){void 0===n&&(n=1e3),void 0===i&&(i=10),void 0===r&&(r=1.5),this.pool=[],this.stats={totalCreated:0,totalAcquired:0,totalReleased:0},this.createFn=e,this.resetFn=t,this.maxSize=n,this.minSize=Math.max(1,i),this.growthFactor=Math.max(1.1,r)}var t=e.prototype;return t.acquire=function(){return this.stats.totalAcquired++,this.pool.length>0?this.pool.pop():(this.stats.totalCreated++,this.createFn())},t.release=function(e){this.stats.totalReleased++,this.pool.length>=this.maxSize||(this.resetFn&&this.resetFn(e),this.pool.push(e))},t.prewarm=function(e){for(var t=Math.min(e,this.maxSize),n=this.pool.length;n<t;n++){var i=this.createFn();this.resetFn&&this.resetFn(i),this.pool.push(i),this.stats.totalCreated++}},t.shrink=function(){for(;this.pool.length>this.minSize;)this.pool.pop()},t.clear=function(){this.pool.length=0},t.getAvailableCount=function(){return this.pool.length},t.getMaxSize=function(){return this.maxSize},t.getStats=function(){var e=0===this.stats.totalAcquired?0:(this.stats.totalAcquired-this.stats.totalCreated)/this.stats.totalAcquired;return{totalCreated:this.stats.totalCreated,totalAcquired:this.stats.totalAcquired,totalReleased:this.stats.totalReleased,hitRate:e,currentSize:this.pool.length,maxSize:this.maxSize,minSize:this.minSize,utilizationRate:this.pool.length/this.maxSize}},e}(),ue=function(){function e(){this.pools=new Map,this.usageTracker=new Map,this.autoCleanupInterval=6e4,this.lastCleanupTime=0}e.getInstance=function(){return e.instance||(e.instance=new e),e.instance};var t=e.prototype;return t.registerPool=function(e,t,n,i,r){this.pools.set(e,new ce(t,n,i,r)),this.usageTracker.set(e,{createCount:0,releaseCount:0,lastAccessTime:Date.now()})},t.acquireComponent=function(e){var t=this.pools.get(e);return this.trackUsage(e,"create"),t?t.acquire():null},t.releaseComponent=function(e,t){var n=this.pools.get(e);this.trackUsage(e,"release"),n&&n.release(t)},t.trackUsage=function(e,t){var n=this.usageTracker.get(e);n||(n={createCount:0,releaseCount:0,lastAccessTime:Date.now()},this.usageTracker.set(e,n)),"create"===t?n.createCount++:n.releaseCount++,n.lastAccessTime=Date.now()},t.update=function(){var e=Date.now();if(!(e-this.lastCleanupTime<this.autoCleanupInterval)){for(var t,n=o(this.usageTracker.entries());!(t=n()).done;){var i=t.value,r=i[0];if(e-i[1].lastAccessTime>12e4){var s=this.pools.get(r);s&&s.shrink()}}this.lastCleanupTime=e}},t.getHotComponents=function(e){return void 0===e&&(e=100),Array.from(this.usageTracker.entries()).filter((function(t){return t[0],t[1].createCount>e})).map((function(e){return e[0]}))},t.prewarmAll=function(e){void 0===e&&(e=100);for(var t,n=o(this.pools.values());!(t=n()).done;){t.value.prewarm(e)}},t.clearAll=function(){for(var e,t=o(this.pools.values());!(e=t()).done;){e.value.clear()}},t.reset=function(){this.pools.clear(),this.usageTracker.clear()},t.getGlobalStats=function(){for(var e,t=[],n=o(this.pools.entries());!(e=n()).done;){var i=e.value,r=i[0],s=i[1];t.push({componentName:r,poolStats:s.getStats(),usage:this.usageTracker.get(r)})}return t},t.getPoolStats=function(){for(var e,t=new Map,n=o(this.pools);!(e=n()).done;){var i=e.value,r=i[0],s=i[1];t.set(r,{available:s.getAvailableCount(),maxSize:s.getMaxSize()})}return t},t.getPoolUtilization=function(){for(var e,t=new Map,n=o(this.pools);!(e=n()).done;){var i=e.value,r=i[0],s=i[1],a=s.getAvailableCount(),c=s.getMaxSize(),u=c-a,h=c>0?u/c*100:0;t.set(r,{used:u,total:c,utilization:h})}return t},t.getComponentUtilization=function(e){var t=this.pools.get(e);if(!t)return 0;var n=t.getAvailableCount(),i=t.getMaxSize();return i>0?(i-n)/i*100:0},e}(),he=function(){function e(){}var t=e.prototype;return t.collectComponentData=function(e){var t=this;if(!e)return{componentTypes:0,componentInstances:0,componentStats:[]};var n=e.entities;if(null==n||!n.buffer)return{componentTypes:0,componentInstances:0,componentStats:[]};var i=new Map,r=0;n.buffer.forEach((function(e){e.components&&e.components.forEach((function(e){var t=H(e),n=i.get(t)||{count:0,entities:0};n.count++,r++,i.set(t,n)}))}));var s=new Map,a=new Map;try{for(var c,u=ue.getInstance(),h=u.getPoolStats(),l=u.getPoolUtilization(),f=o(h.entries());!(c=f()).done;){var d=c.value,p=d[0],y=d[1];a.set(p,y.maxSize)}for(var g,m=o(l.entries());!(g=m()).done;){var v=g.value,_=v[0],S=v[1];s.set(_,S.utilization)}}catch(e){}return{componentTypes:i.size,componentInstances:r,componentStats:Array.from(i.entries()).map((function(i){var r=i[0],o=i[1],c=a.get(r)||0,u=s.get(r)||0,h=t.getEstimatedComponentSize(r,e);return{typeName:r,instanceCount:o.count,memoryPerInstance:h,totalMemory:o.count*h,poolSize:c,poolUtilization:u,averagePerEntity:o.count/n.buffer.length}}))}},t.getEstimatedComponentSize=function(t,n){if(e.componentSizeCache.has(t))return e.componentSizeCache.get(t);if(!n)return 64;var i=n.entities;if(null==i||!i.buffer)return 64;var r=64;try{for(var s,a=o(i.buffer);!(s=a()).done;){var c=s.value;if(c.components){var u=c.components.find((function(e){return H(e)===t}));if(u){r=this.calculateQuickObjectSize(u);break}}}}catch(e){r=64}return e.componentSizeCache.set(t,r),r},t.calculateQuickObjectSize=function(e){if(!e||"object"!=typeof e)return 8;var t=32,n=new WeakSet,i=function(e,t){if(void 0===t&&(t=0),!e||"object"!=typeof e||n.has(e)||t>3)return 0;n.add(e);var r=0;try{for(var s=Object.keys(e),o=0;o<Math.min(s.length,20);o++){var a=s[o];if("entity"!==a&&"_entity"!==a&&"constructor"!==a){var c=e[a];r+=2*a.length,"string"==typeof c?r+=Math.min(2*c.length,200):"number"==typeof c?r+=8:"boolean"==typeof c?r+=4:"object"==typeof c&&null!==c&&(r+=i(c,t+1))}}}catch(e){return 32}return r};return t+=i(e),Math.max(t,32)},t.calculateDetailedComponentMemory=function(e,t){if(!t)return this.getEstimatedComponentSize(e,t);var n=t.entities;if(null==n||!n.buffer)return this.getEstimatedComponentSize(e,t);try{for(var i,r=o(n.buffer);!(i=r()).done;){var s=i.value;if(s.components){var a=s.components.find((function(t){return H(t)===e}));if(a)return this.estimateObjectSize(a)}}}catch(e){}return this.getEstimatedComponentSize(e,t)},t.estimateObjectSize=function(e,t,n){if(void 0===t&&(t=new WeakSet),void 0===n&&(n=0),null==e||n>10)return 0;if(t.has(e))return 0;var i=0;switch(typeof e){case"boolean":i=4;break;case"number":default:i=8;break;case"string":i=24+Math.min(2*e.length,1e3);break;case"object":if(t.add(e),Array.isArray(e)){i=40+8*e.length;for(var r=Math.min(e.length,50),s=0;s<r;s++)i+=this.estimateObjectSize(e[s],t,n+1)}else{i=32;try{for(var o=Object.getOwnPropertyNames(e),a=Math.min(o.length,30),c=0;c<a;c++){var u=o[c];if("constructor"!==u&&"__proto__"!==u&&"entity"!==u&&"_entity"!==u&&!u.startsWith("_cc_")&&!u.startsWith("__"))try{i+=16+2*u.length;var h=e[u];null!=h&&(i+=this.estimateObjectSize(h,t,n+1))}catch(e){continue}}}catch(e){i=128}}}return 8*Math.ceil(i/8)},e.clearCache=function(){e.componentSizeCache.clear()},e}();he.componentSizeCache=new Map;var le,fe=function(){function e(){this.sceneStartTime=Date.now()}var t=e.prototype;return t.collectSceneData=function(e){var t,n;if(!e)return{currentSceneName:"No Scene",isInitialized:!1,sceneRunTime:0,sceneEntityCount:0,sceneSystemCount:0,sceneMemory:0,sceneUptime:0};var i=(Date.now()-this.sceneStartTime)/1e3,r=e.entities,s=e.entityProcessors;return{currentSceneName:e.name||"Unnamed Scene",isInitialized:e._didSceneBegin||!1,sceneRunTime:i,sceneEntityCount:(null==r||null===(t=r.buffer)||void 0===t?void 0:t.length)||0,sceneSystemCount:(null==s||null===(n=s.processors)||void 0===n?void 0:n.length)||0,sceneMemory:0,sceneUptime:i}},t.setSceneStartTime=function(e){this.sceneStartTime=e},e}(),de=function(){function e(e,t){void 0===t&&(t=!0),this.isConnected=!1,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectInterval=2e3,this.url=e,this.autoReconnect=t}var t=e.prototype;return t.setMessageHandler=function(e){this.messageHandler=e},t.connect=function(){var e=this;return new Promise((function(t,n){try{e.ws=new WebSocket(e.url),e.ws.onopen=function(n){e.handleOpen(n),t()},e.ws.onclose=function(t){e.handleClose(t)},e.ws.onerror=function(t){e.handleError(t),n(t)},e.ws.onmessage=function(t){e.handleMessage(t)}}catch(t){e.handleConnectionFailure(t),n(t)}}))},t.disconnect=function(){this.ws&&(this.autoReconnect=!1,this.ws.close(),this.ws=void 0),this.isConnected=!1},t.send=function(e){if(this.isConnected&&this.ws)try{var t="string"==typeof e?e:JSON.stringify(e);this.ws.send(t)}catch(e){}},t.getConnectionStatus=function(){return this.isConnected},t.setMaxReconnectAttempts=function(e){this.maxReconnectAttempts=e},t.setReconnectInterval=function(e){this.reconnectInterval=e},t.scheduleReconnect=function(){var e=this;this.reconnectTimer&&clearTimeout(this.reconnectTimer);var t=Math.min(1e3*Math.pow(2,this.reconnectAttempts),3e4);this.reconnectAttempts++,this.reconnectTimer=setTimeout((function(){e.connect().catch((function(t){e.reconnectAttempts<e.maxReconnectAttempts&&e.scheduleReconnect()}))}),t)},t.handleMessage=function(e){try{var t=JSON.parse(e.data);this.messageHandler&&this.messageHandler(t)}catch(e){}},t.handleOpen=function(e){this.isConnected=!0,this.reconnectAttempts=0,this.onOpen&&this.onOpen(e)},t.handleClose=function(e){this.isConnected=!1,this.onClose&&this.onClose(e),this.autoReconnect&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect()},t.handleError=function(e){this.onError&&this.onError(e)},t.handleConnectionFailure=function(e){this.onError&&this.onError(e)},e}();!function(e){e[e.LOW=0]="LOW",e[e.HIGH=1]="HIGH"}(le||(le={}));var pe=function(){function e(){}return e.create=function(t){if(t<0)throw new Error("Bit index "+t+" out of range [0, ∞)");var n={base:[0,0],segments:void 0};return e.setBit(n,t),n},e.fromNumber=function(e){return{base:[e>>>0,0],segments:void 0}},e.hasAny=function(e,t){var n=t.base,i=e.base,r=t.segments,s=e.segments,o=0!==(i[le.LOW]&n[le.LOW])||0!==(i[le.HIGH]&n[le.HIGH]);return!o&&r&&s?s.some((function(e,t){return 0!==(e[le.LOW]&r[t][le.LOW])||0!==(e[le.HIGH]&r[t][le.HIGH])})):o},e.hasAll=function(e,t){var n,i=e.base,r=t.base,s=e.segments,o=t.segments,a=(i[le.LOW]&r[le.LOW])===r[le.LOW]&&(i[le.HIGH]&r[le.HIGH])===r[le.HIGH];if(!a||!o)return a;var c=null!==(n=null==s?void 0:s.length)&&void 0!==n?n:0;if(s)for(var u=0;u<Math.min(c,o.length);u++)if((s[u][le.LOW]&o[u][le.LOW])!==o[u][le.LOW]||(s[u][le.HIGH]&o[u][le.HIGH])!==o[u][le.HIGH])return!1;for(var h=c;h<o.length;h++)if(0!==o[h][le.LOW]||0!==o[h][le.HIGH])return!1;return!0},e.hasNone=function(e,t){var n=e.base,i=t.base,r=e.segments,s=t.segments,o=0===(n[le.LOW]&i[le.LOW])&&0===(n[le.HIGH]&i[le.HIGH]);return r&&o&&s?r.every((function(e,t){return 0===(e[le.LOW]&s[t][le.LOW])&&0===(e[le.HIGH]&s[t][le.HIGH])})):o},e.isZero=function(e){var t=0===e.base[le.LOW]&&0===e.base[le.HIGH];return e.segments&&t?e.segments.every((function(e){return 0===e[le.LOW]&&0===e[le.HIGH]})):t},e.equals=function(e,t){var n,i,r=e.base[le.LOW]===t.base[le.LOW]&&e.base[le.HIGH]===t.base[le.HIGH];if(!r||!e.segments&&!t.segments)return r;for(var s=null!==(n=e.segments)&&void 0!==n?n:[],o=null!==(i=t.segments)&&void 0!==i?i:[],a=0;a<Math.max(s.length,o.length);a++){var c=s[a],u=o[a];if(c&&!u){if(0!==c[le.LOW]||0!==c[le.HIGH])return!1}else if(!c&&u){if(0!==u[le.LOW]||0!==u[le.HIGH])return!1}else if(c[le.LOW]!==u[le.LOW]||c[le.HIGH]!==u[le.HIGH])return!1}return!0},e.setBit=function(t,n){if(n<0)throw new Error("Bit index "+n+" out of range [0, 63]");var i=e.getSegmentByBitIndex(t,n),r=63&n;r<32?i[le.LOW]|=1<<r:i[le.HIGH]|=1<<r-32},e.getBit=function(t,n){if(n<0)return!1;var i=e.getSegmentByBitIndex(t,n,!1);if(!i)return!1;var r=63&n;return r<32?!!(i[le.LOW]&1<<r):!!(i[le.HIGH]&1<<r-32)},e.clearBit=function(t,n){if(n<0)throw new Error("Bit index "+n+" out of range [0, 63]");var i=e.getSegmentByBitIndex(t,n,!1);if(i){var r=63&n;r<32?i[le.LOW]&=~(1<<r):i[le.HIGH]&=~(1<<r-32)}},e.orInPlace=function(e,t){e.base[le.LOW]|=t.base[le.LOW],e.base[le.HIGH]|=t.base[le.HIGH];var n=t.segments;if(n&&n.length>0){e.segments||(e.segments=[]);for(var i=e.segments;i.length<n.length;)i.push([0,0]);for(var r=0;r<n.length;r++)i[r][le.LOW]|=n[r][le.LOW],i[r][le.HIGH]|=n[r][le.HIGH]}},e.andInPlace=function(e,t){e.base[le.LOW]&=t.base[le.LOW],e.base[le.HIGH]&=t.base[le.HIGH];var n=t.segments;if(n&&n.length>0){e.segments||(e.segments=[]);for(var i=e.segments;i.length<n.length;)i.push([0,0]);for(var r=0;r<n.length;r++)i[r][le.LOW]&=n[r][le.LOW],i[r][le.HIGH]&=n[r][le.HIGH]}},e.xorInPlace=function(e,t){e.base[le.LOW]^=t.base[le.LOW],e.base[le.HIGH]^=t.base[le.HIGH];var n=t.segments;if(n&&0!=n.length){e.segments||(e.segments=[]);for(var i=e.segments;i.length<n.length;)i.push([0,0]);for(var r=0;r<n.length;r++)i[r][le.LOW]^=n[r][le.LOW],i[r][le.HIGH]^=n[r][le.HIGH]}},e.clear=function(e){e.base[le.LOW]=0,e.base[le.HIGH]=0;for(var t=0;t<(null!==(n=null===(i=e.segments)||void 0===i?void 0:i.length)&&void 0!==n?n:0);t++){var n,i,r=e.segments[t];r[le.LOW]=0,r[le.HIGH]=0}},e.copy=function(t,n){if(e.clear(n),n.base[le.LOW]=t.base[le.LOW],n.base[le.HIGH]=t.base[le.HIGH],t.segments&&0!=t.segments.length)if(n.segments){for(var i=t.segments.length-n.segments.length,r=0;r<i;r++)n.segments.push([0,0]);for(var s=0;s<length;s++){var o=n.segments[s],a=t.segments[s];o[le.LOW]=a[le.LOW],o[le.HIGH]=a[le.HIGH]}}else n.segments=t.segments.map((function(e){return[].concat(e)}))},e.clone=function(e){return{base:e.base.slice(),segments:e.segments?e.segments.map((function(e){return[].concat(e)})):void 0}},e.toString=function(e,t,n){var i,r;void 0===t&&(t=2),void 0===n&&(n=!1),2!=t&&16!=t&&(t=2);var s=null!==(i=null===(r=e.segments)||void 0===r?void 0:r.length)&&void 0!==i?i:0,o="";if(n){var a=0;a=2===t?66:19;for(var c=0;c<=s;c++){o+=(0===c?"0 (Base):":c+" ("+64*c+"):").toString().padEnd(a)}o+="\n"}for(var u=-1;u<s;u++){var h="",l=-1==u?e.base:e.segments[u],f=l[le.HIGH],d=l[le.LOW];if(2==t){h=f.toString(2).padStart(32,"0")+"_"+d.toString(2).padStart(32,"0")}else{var p=f?f.toString(16).toUpperCase():"";n&&(p=p.padStart(8,"0"));var y=d.toString(16).toUpperCase();p&&(y=y.padStart(8,"0")),h="0x"+p+y}o+=-1===u?h:" "+h}return o},e.popCount=function(e){for(var t=0,n=-1;n<(null!==(i=null===(r=e.segments)||void 0===r?void 0:r.length)&&void 0!==i?i:0);n++){for(var i,r,s=-1==n?e.base:e.segments[n],o=s[le.LOW],a=s[le.HIGH];o;)o&=o-1,t++;for(;a;)a&=a-1,t++}return t},e.getSegmentByBitIndex=function(e,t,n){if(void 0===n&&(n=!0),t<=63)return e.base;var i=e.segments;if(!i){if(!n)return null;i=e.segments=[]}var r=(t>>6)-1;if(i.length<=r){if(!n)return null;for(var s=r-i.length+1,o=0;o<s;o++)i.push([0,0])}return i[r]},e}();pe.ZERO={base:[0,0],segments:void 0};var ye=function(){function e(){}return e.inferOptimalType=function(e,t){void 0===t&&(t={});var n=typeof e;if("boolean"===n)return"uint8";if("number"!==n)return"float32";var i=t,r=i.minValue,s=i.maxValue,o=i.precision,a=i.signed;if(!0===o)return Math.abs(e)>34028235e31||void 0!==r&&Math.abs(r)>34028235e31||void 0!==s&&Math.abs(s)>34028235e31?"float64":"float32";if(!1===o||Number.isInteger(e)){var c=void 0!==r?r:e,u=void 0!==s?s:e;return!1!==a&&(c<0||e<0)?c>=-128&&u<=127?"int8":c>=-32768&&u<=32767?"int16":c>=-2147483648&&u<=2147483647?"int32":"float64":u<=255?"uint8":u<=65535?"uint16":u<=4294967295?"uint32":"float64"}return Number.isInteger(e)?e>=0&&e<=255?"uint8":e>=-128&&e<=127?"int8":e>=0&&e<=65535?"uint16":e>=-32768&&e<=32767?"int16":e>=0&&e<=4294967295?"uint32":e>=-2147483648&&e<=2147483647?"int32":"float64":"float32"},e.getTypedArrayConstructor=function(e){switch(e){case"float32":default:return Float32Array;case"float64":return Float64Array;case"int32":return Int32Array;case"uint32":return Uint32Array;case"int16":return Int16Array;case"uint16":return Uint16Array;case"int8":return Int8Array;case"uint8":return Uint8Array;case"uint8clamped":return Uint8ClampedArray}},e}(),ge=function(){function e(e){this.fields=new Map,this.stringFields=new Map,this.serializedFields=new Map,this.complexFields=new Map,this.entityToIndex=new Map,this.indexToEntity=[],this.freeIndices=[],this._size=0,this._capacity=1e3,this.type=e,this.initializeFields(e)}var t=e.prototype;return t.initializeFields=function(t){var n=new t,i=t.__highPrecisionFields||new Set,r=t.__float64Fields||new Set,s=t.__float32Fields||new Set,o=t.__int32Fields||new Set,a=t.__uint32Fields||new Set,c=t.__int16Fields||new Set,u=t.__uint16Fields||new Set,h=t.__int8Fields||new Set,l=t.__uint8Fields||new Set,f=t.__uint8ClampedFields||new Set,d=t.__autoTypedFields||new Map,p=t.__serializeMapFields||new Set,y=t.__serializeSetFields||new Set,g=t.__serializeArrayFields||new Set;for(var m in n)if(n.hasOwnProperty(m)&&"id"!==m){var v=n[m],_=typeof v;if("number"===_)if(i.has(m));else if(d.has(m)){var S=d.get(m),C=ye.inferOptimalType(v,S),w=ye.getTypedArrayConstructor(C);this.fields.set(m,new w(this._capacity)),e._logger.info("字段 "+m+" 自动推断为 "+C+" 类型,值: "+v+", 选项:",S)}else r.has(m)?this.fields.set(m,new Float64Array(this._capacity)):o.has(m)?this.fields.set(m,new Int32Array(this._capacity)):a.has(m)?this.fields.set(m,new Uint32Array(this._capacity)):c.has(m)?this.fields.set(m,new Int16Array(this._capacity)):u.has(m)?this.fields.set(m,new Uint16Array(this._capacity)):h.has(m)?this.fields.set(m,new Int8Array(this._capacity)):l.has(m)?this.fields.set(m,new Uint8Array(this._capacity)):f.has(m)?this.fields.set(m,new Uint8ClampedArray(this._capacity)):(s.has(m),this.fields.set(m,new Float32Array(this._capacity)));else"boolean"===_?l.has(m)||!s.has(m)&&!r.has(m)?this.fields.set(m,new Uint8Array(this._capacity)):this.fields.set(m,new Float32Array(this._capacity)):"string"===_?this.stringFields.set(m,new Array(this._capacity)):"object"===_&&null!==v&&(p.has(m)||y.has(m)||g.has(m))&&this.serializedFields.set(m,new Array(this._capacity))}},t.addComponent=function(e,t){if(this.entityToIndex.has(e)){var n=this.entityToIndex.get(e);this.updateComponentAtIndex(n,t)}else{var i;this.freeIndices.length>0?i=this.freeIndices.pop():(i=this._size)>=this._capacity&&this.resize(2*this._capacity),this.entityToIndex.set(e,i),this.indexToEntity[i]=e,this.updateComponentAtIndex(i,t),this._size++}},t.updateComponentAtIndex=function(e,t){var n=this.indexToEntity[e],i=new Map,r=this.type.__highPrecisionFields||new Set,s=this.type.__serializeMapFields||new Set,o=this.type.__serializeSetFields||new Set,a=this.type.__serializeArrayFields||new Set,c=this.type.__deepCopyFields||new Set;for(var u in t)if(t.hasOwnProperty(u)&&"id"!==u){var h=t[u],l=typeof h;if("number"===l)if(r.has(u)||!this.fields.has(u))i.set(u,h);else this.fields.get(u)[e]=h;else if("boolean"===l&&this.fields.has(u)){this.fields.get(u)[e]=h?1:0}else if(this.stringFields.has(u)){this.stringFields.get(u)[e]=String(h)}else if(this.serializedFields.has(u)){this.serializedFields.get(u)[e]=this.serializeValue(h,u,s,o,a)}else c.has(u)?i.set(u,this.deepClone(h)):i.set(u,h)}i.size>0&&this.complexFields.set(n,i)},t.serializeValue=function(t,n,i,r,s){try{return i.has(n)&&t instanceof Map?JSON.stringify(Array.from(t.entries())):r.has(n)&&t instanceof Set?JSON.stringify(Array.from(t)):(s.has(n)&&Array.isArray(t),JSON.stringify(t))}catch(t){return e._logger.warn("SoA序列化字段 "+n+" 失败:",t),"{}"}},t.deserializeValue=function(t,n,i,r,s){try{var o=JSON.parse(t);return i.has(n)?new Map(o):r.has(n)?new Set(o):(s.has(n),o)}catch(t){return e._logger.warn("SoA反序列化字段 "+n+" 失败:",t),null}},t.deepClone=function(e){var t=this;if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array)return e.map((function(e){return t.deepClone(e)}));if(e instanceof Map){for(var n,i=new Map,r=o(e.entries());!(n=r()).done;){var s=n.value,a=s[0],c=s[1];i.set(a,this.deepClone(c))}return i}if(e instanceof Set){for(var u,h=new Set,l=o(e.values());!(u=l()).done;){var f=u.value;h.add(this.deepClone(f))}return h}var d={};for(var p in e)e.hasOwnProperty(p)&&(d[p]=this.deepClone(e[p]));return d},t.getComponent=function(e){var t=this.entityToIndex.get(e);if(void 0===t)return null;for(var n,i=new this.type,r=this.type.__serializeMapFields||new Set,s=this.type.__serializeSetFields||new Set,a=this.type.__serializeArrayFields||new Set,c=o(this.fields.entries());!(n=c()).done;){var u=n.value,h=u[0],l=u[1][t],f=this.getFieldType(h);i[h]="boolean"===f?1===l:l}for(var d,p=o(this.stringFields.entries());!(d=p()).done;){var y=d.value,g=y[0],m=y[1];i[g]=m[t]}for(var v,_=o(this.serializedFields.entries());!(v=_()).done;){var S=v.value,C=S[0],w=S[1][t];w&&(i[C]=this.deserializeValue(w,C,r,s,a))}var E=this.complexFields.get(e);if(E)for(var b,A=o(E.entries());!(b=A()).done;){var T=b.value,M=T[0],x=T[1];i[M]=x}return i},t.getFieldType=function(e){return typeof(new this.type)[e]},t.hasComponent=function(e){return this.entityToIndex.has(e)},t.removeComponent=function(e){var t=this.entityToIndex.get(e);if(void 0===t)return null;var n=this.getComponent(e);return this.complexFields.delete(e),this.entityToIndex.delete(e),this.freeIndices.push(t),this._size--,n},t.resize=function(t){for(var n,i=o(this.fields.entries());!(n=i()).done;){var r=n.value,s=r[0],a=r[1],c=void 0;a instanceof Float32Array?c=new Float32Array(t):a instanceof Float64Array?c=new Float64Array(t):a instanceof Int32Array?c=new Int32Array(t):a instanceof Uint32Array?c=new Uint32Array(t):a instanceof Int16Array?c=new Int16Array(t):a instanceof Uint16Array?c=new Uint16Array(t):a instanceof Int8Array?c=new Int8Array(t):a instanceof Uint8Array?c=new Uint8Array(t):a instanceof Uint8ClampedArray?c=new Uint8ClampedArray(t):(c=new Float32Array(t),e._logger.warn("未知的TypedArray类型用于字段 "+s+",回退到Float32Array")),c.set(a),this.fields.set(s,c)}for(var u,h=o(this.stringFields.entries());!(u=h()).done;){for(var l=u.value,f=l[0],d=l[1],p=new Array(t),y=0;y<d.length;y++)p[y]=d[y];this.stringFields.set(f,p)}for(var g,m=o(this.serializedFields.entries());!(g=m()).done;){for(var v=g.value,_=v[0],S=v[1],C=new Array(t),w=0;w<S.length;w++)C[w]=S[w];this.serializedFields.set(_,C)}this._capacity=t},t.getActiveIndices=function(){return Array.from(this.entityToIndex.values())},t.getFieldArray=function(e){return this.fields.get(e)||null},t.getTypedFieldArray=function(e){return this.fields.get(String(e))||null},t.getEntityIndex=function(e){return this.entityToIndex.get(e)},t.getEntityIdByIndex=function(e){return this.indexToEntity[e]},t.size=function(){return this._size},t.clear=function(){this.entityToIndex.clear(),this.indexToEntity=[],this.freeIndices=[],this.complexFields.clear(),this._size=0;for(var e,t=o(this.fields.values());!(e=t()).done;){e.value.fill(0)}for(var n,i=o(this.stringFields.values());!(n=i()).done;)for(var r=n.value,s=0;s<r.length;s++)r[s]=void 0;for(var a,c=o(this.serializedFields.values());!(a=c()).done;)for(var u=a.value,h=0;h<u.length;h++)u[h]=void 0},t.compact=function(){if(0!==this.freeIndices.length){for(var e=Array.from(this.entityToIndex.entries()).sort((function(e,t){return e[1]-t[1]})),t=new Map,n=[],i=0;i<e.length;i++){var r=e[i],s=r[0],a=r[1];if(t.set(s,i),n[i]=s,i!==a){for(var c,u=o(this.fields.entries());!(c=u()).done;){var h=c.value[1];h[i]=h[a]}for(var l,f=o(this.stringFields.entries());!(l=f()).done;){var d=l.value[1];d[i]=d[a]}for(var p,y=o(this.serializedFields.entries());!(p=y()).done;){var g=p.value[1];g[i]=g[a]}}}this.entityToIndex=t,this.indexToEntity=n,this.freeIndices=[],this._size=e.length}},t.getStats=function(){for(var e,t=0,n=new Map,i=o(this.fields.entries());!(e=i()).done;){var r=e.value,s=r[0],a=r[1],c=void 0,u=void 0;a instanceof Float32Array?(c=4,u="float32"):a instanceof Float64Array?(c=8,u="float64"):a instanceof Int32Array?(c=4,u="int32"):a instanceof Uint32Array?(c=4,u="uint32"):a instanceof Int16Array?(c=2,u="int16"):a instanceof Uint16Array?(c=2,u="uint16"):a instanceof Int8Array?(c=1,u="int8"):a instanceof Uint8Array?(c=1,u="uint8"):a instanceof Uint8ClampedArray?(c=1,u="uint8clamped"):(c=4,u="unknown");var h=a.length*c;t+=h,n.set(s,{size:this._size,capacity:a.length,type:u,memory:h})}return{size:this._size,capacity:this._capacity,usedSlots:this._size,fragmentation:this.freeIndices.length/this._capacity,memoryUsage:t,fieldStats:n}},t.performVectorizedOperation=function(e){var t=this.getActiveIndices();e(this.fields,t)},e}();ge._logger=Y("SoAStorage");var me=function(){function e(){}return e.register=function(e){var t=W(e);if(this.componentTypes.has(e))return this.componentTypes.get(e);var n=this.nextBitIndex++;return this.componentTypes.set(e,n),this.bitIndexToType.set(n,e),this.componentNameToType.set(t,e),this.componentNameToId.set(t,n),n},e.getBitMask=function(e){var t=this.componentTypes.get(e);if(void 0===t){var n=W(e);throw new Error("Component type "+n+" is not registered")}return pe.create(t)},e.getBitIndex=function(e){var t=this.componentTypes.get(e);if(void 0===t){var n=W(e);throw new Error("Component type "+n+" is not registered")}return t},e.isRegistered=function(e){return this.componentTypes.has(e)},e.getTypeByBitIndex=function(e){return this.bitIndexToType.get(e)||null},e.getRegisteredCount=function(){return this.nextBitIndex},e.getComponentType=function(e){return this.componentNameToType.get(e)||null},e.getAllRegisteredTypes=function(){return new Map(this.componentTypes)},e.getAllComponentNames=function(){return new Map(this.componentNameToType)},e.getComponentId=function(e){return this.componentNameToId.get(e)},e.registerComponentByName=function(e){if(this.componentNameToId.has(e))return this.componentNameToId.get(e);var t=this.nextBitIndex++;return this.componentNameToId.set(e,t),t},e.createSingleComponentMask=function(e){var t="single:"+e;if(this.maskCache.has(t))return this.maskCache.get(t);var n=this.getComponentId(e);if(void 0===n)throw new Error("Component type "+e+" is not registered");var i=pe.create(n);return this.maskCache.set(t,i),i},e.createComponentMask=function(e){var t="multi:"+[].concat(e).sort().join(",");if(this.maskCache.has(t))return this.maskCache.get(t);for(var n,i=pe.clone(pe.ZERO),r=o(e);!(n=r()).done;){var s=n.value,a=this.getComponentId(s);if(void 0!==a){var c=pe.create(a);pe.orInPlace(i,c)}}return this.maskCache.set(t,i),i},e.clearMaskCache=function(){this.maskCache.clear()},e.reset=function(){this.componentTypes.clear(),this.bitIndexToType.clear(),this.componentNameToType.clear(),this.componentNameToId.clear(),this.maskCache.clear(),this.nextBitIndex=0},e}();me._logger=Y("ComponentStorage"),me.componentTypes=new Map,me.bitIndexToType=new Map,me.componentNameToType=new Map,me.componentNameToId=new Map,me.maskCache=new Map,me.nextBitIndex=0;var ve=function(){function e(e){this.dense=[],this.entityIds=[],this.entityToIndex=new Map,this.componentType=e,me.isRegistered(e)||me.register(e)}var t=e.prototype;return t.addComponent=function(e,t){if(this.entityToIndex.has(e))throw new Error("Entity "+e+" already has component "+W(this.componentType));var n=this.dense.length;this.dense.push(t),this.entityIds.push(e),this.entityToIndex.set(e,n)},t.getComponent=function(e){var t=this.entityToIndex.get(e);return void 0!==t?this.dense[t]:null},t.hasComponent=function(e){return this.entityToIndex.has(e)},t.removeComponent=function(e){var t=this.entityToIndex.get(e);if(void 0===t)return null;var n=this.dense[t],i=this.dense.length-1;if(t!==i){var r=this.dense[i],s=this.entityIds[i];this.dense[t]=r,this.entityIds[t]=s,this.entityToIndex.set(s,t)}return this.dense.pop(),this.entityIds.pop(),this.entityToIndex.delete(e),n},t.forEach=function(e){for(var t=0;t<this.dense.length;t++)e(this.dense[t],this.entityIds[t],t)},t.getDenseArray=function(){return{components:[].concat(this.dense),entityIds:[].concat(this.entityIds)}},t.clear=function(){this.dense.length=0,this.entityIds.length=0,this.entityToIndex.clear()},t.getStats=function(){return{totalSlots:this.dense.length,usedSlots:this.dense.length,freeSlots:0,fragmentation:0}},s(e,[{key:"size",get:function(){return this.dense.length}},{key:"type",get:function(){return this.componentType}}])}(),_e=function(){function e(){this.storages=new Map}var t=e.prototype;return t.isSoAStorage=function(e){return this.storages.get(e)instanceof ge},t.getSoAStorage=function(e){var t=this.getStorage(e);return t instanceof ge?t:null},t.getFieldArray=function(e,t){var n=this.getSoAStorage(e);return n?n.getFieldArray(t):null},t.getTypedFieldArray=function(e,t){var n=this.getSoAStorage(e);return n?n.getTypedFieldArray(t):null},t.getActiveIndices=function(e){var t=this.getSoAStorage(e);return t?t.getActiveIndices():[]},t.getEntityIndex=function(e,t){var n=this.getSoAStorage(e);return n?n.getEntityIndex(t):void 0},t.getEntityIdByIndex=function(e,t){var n=this.getSoAStorage(e);return n?n.getEntityIdByIndex(t):void 0},t.getStorage=function(t){var n=this.storages.get(t);n||(t.__enableSoA?(n=new ge(t),e._logger.info("为 "+W(t)+" 启用SoA优化(适用于大规模批量操作)")):n=new ve(t),this.storages.set(t,n));return n},t.addComponent=function(e,t){var n=t.constructor;this.getStorage(n).addComponent(e,t)},t.getComponent=function(e,t){var n=this.storages.get(t);return n?n.getComponent(e):null},t.hasComponent=function(e,t){var n=this.storages.get(t);return!!n&&n.hasComponent(e)},t.removeComponent=function(e,t){var n=this.storages.get(t);return n?n.removeComponent(e):null},t.removeAllComponents=function(e){for(var t,n=o(this.storages.values());!(t=n()).done;){t.value.removeComponent(e)}},t.getComponentMask=function(e){for(var t,n=pe.clone(pe.ZERO),i=o(this.storages.entries());!(t=i()).done;){var r=t.value,s=r[0];if(r[1].hasComponent(e)){var a=me.getBitMask(s);pe.orInPlace(n,a)}}return n},t.getAllStats=function(){for(var e,t=new Map,n=o(this.storages.entries());!(e=n()).done;){var i=e.value,r=i[0],s=i[1],a=W(r);t.set(a,s.getStats())}return t},t.clear=function(){for(var e,t=o(this.storages.values());!(e=t()).done;){e.value.clear()}this.storages.clear()},e}();_e._logger=Y("ComponentStorage");var Se=function(){function e(){}return e.prototype.compare=function(e,t){var n=e.updateOrder-t.updateOrder;return 0==n&&(n=e.id-t.id),n},e}(),Ce=function(){function e(e,t){this.scene=null,this._isDestroyed=!1,this._parent=null,this._children=[],this._active=!0,this._tag=0,this._enabled=!0,this._updateOrder=0,this._componentMask=pe.clone(pe.ZERO),this._componentCache=null,this.name=e,this.id=t}e.notifyQuerySystems=function(e){e.scene&&e.scene.querySystem&&(e.scene.querySystem.updateEntity(e),e.scene.clearSystemEntityCaches())};var t=e.prototype;return t._rebuildComponentCache=function(){var e,t=[];if(null!==(e=this.scene)&&void 0!==e&&e.componentStorageManager){for(var n=this._componentMask,i=me.getRegisteredCount(),r=0;r<i;r++)if(pe.getBit(n,r)){var s=me.getTypeByBitIndex(r);if(s){var o=this.scene.componentStorageManager.getComponent(this.id,s);o&&t.push(o)}}this._componentCache=t}else this._componentCache=t},t.createComponent=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var s=i(e,n);return this.addComponent(s)},t.addComponentInternal=function(e){var t=e.constructor;me.isRegistered(t)||me.register(t);var n=me.getBitMask(t);return pe.orInPlace(this._componentMask,n),this._componentCache=null,e},t.addComponent=function(t){var n,i=t.constructor;if(!this.scene)throw new Error("Entity must be added to Scene before adding components. Use scene.createEntity() instead of new Entity()");if(!this.scene.componentStorageManager)throw new Error("Scene does not have componentStorageManager");if(this.hasComponent(i))throw new Error("Entity "+this.name+" already has component "+W(i));(this.addComponentInternal(t),this.scene.componentStorageManager.addComponent(this.id,t),t.entityId=this.id,this.scene.referenceTracker&&this.scene.referenceTracker.registerEntityScene(this.id,this.scene),t.onAddedToEntity(),e.eventBus)&&e.eventBus.emitComponentAdded({timestamp:Date.now(),source:"Entity",entityId:this.id,entityName:this.name,entityTag:null===(n=this.tag)||void 0===n?void 0:n.toString(),componentType:W(i),component:t});return e.notifyQuerySystems(this),t},t.getComponent=function(e){var t;return this.hasComponent(e)&&null!==(t=this.scene)&&void 0!==t&&t.componentStorageManager?this.scene.componentStorageManager.getComponent(this.id,e):null},t.hasComponent=function(e){if(!me.isRegistered(e))return!1;var t=me.getBitMask(e);return pe.hasAny(this._componentMask,t)},t.getOrCreateComponent=function(e){var t=this.getComponent(e);if(!t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];t=this.createComponent.apply(this,[e].concat(i))}return t},t.removeComponent=function(t){var n,i,r=t.constructor;if(me.isRegistered(r)){var s,o=me.getBitIndex(r);if(pe.clearBit(this._componentMask,o),this._componentCache=null,null!==(n=this.scene)&&void 0!==n&&n.componentStorageManager&&this.scene.componentStorageManager.removeComponent(this.id,r),null!==(i=this.scene)&&void 0!==i&&i.referenceTracker&&this.scene.referenceTracker.clearComponentReferences(t),t.onRemovedFromEntity&&t.onRemovedFromEntity(),t.entityId=null,e.eventBus)e.eventBus.emitComponentRemoved({timestamp:Date.now(),source:"Entity",entityId:this.id,entityName:this.name,entityTag:null===(s=this.tag)||void 0===s?void 0:s.toString(),componentType:W(r),component:t});e.notifyQuerySystems(this)}},t.removeComponentByType=function(e){var t=this.getComponent(e);return t?(this.removeComponent(t),t):null},t.removeAllComponents=function(){var t=[].concat(this.components);pe.clear(this._componentMask),this._componentCache=null;for(var n,i=o(t);!(n=i()).done;){var r,s=n.value,a=s.constructor;null!==(r=this.scene)&&void 0!==r&&r.componentStorageManager&&this.scene.componentStorageManager.removeComponent(this.id,a),s.onRemovedFromEntity()}e.notifyQuerySystems(this)},t.addComponents=function(t){for(var n,i=[],r=o(t);!(n=r()).done;){var s=n.value;try{i.push(this.addComponent(s))}catch(t){e._logger.warn("添加组件失败 "+H(s)+":",t)}}return i},t.removeComponentsByTypes=function(e){for(var t,n=[],i=o(e);!(t=i()).done;){var r=t.value;n.push(this.removeComponentByType(r))}return n},t.getComponents=function(e){for(var t,n=[],i=o(this.components);!(t=i()).done;){var r=t.value;r instanceof e&&n.push(r)}return n},t.getComponentByType=function(e){for(var t,n=o(this.components);!(t=n()).done;){var i=t.value;if(i instanceof e)return i}return null},t.addChild=function(e){if(e===this)throw new Error("Entity cannot be its own child");return e._parent===this||(e._parent&&e._parent.removeChild(e),e._parent=this,this._children.push(e),!e.scene&&this.scene&&(e.scene=this.scene,this.scene.addEntity(e))),e},t.removeChild=function(e){var t=this._children.indexOf(e);return-1!==t&&(this._children.splice(t,1),e._parent=null,!0)},t.removeAllChildren=function(){for(var e,t=o([].concat(this._children));!(e=t()).done;){var n=e.value;this.removeChild(n)}},t.findChild=function(e,t){void 0===t&&(t=!1);for(var n,i=o(this._children);!(n=i()).done;){var r=n.value;if(r.name===e)return r}if(t)for(var s,a=o(this._children);!(s=a()).done;){var c=s.value.findChild(e,!0);if(c)return c}return null},t.findChildrenByTag=function(e,t){void 0===t&&(t=!1);for(var n,i=[],r=o(this._children);!(n=r()).done;){var s=n.value;s.tag===e&&i.push(s)}if(t)for(var a,c=o(this._children);!(a=c()).done;){var u=a.value;i.push.apply(i,u.findChildrenByTag(e,!0))}return i},t.getRoot=function(){for(var e=this;e._parent;)e=e._parent;return e},t.isAncestorOf=function(e){for(var t=e._parent;t;){if(t===this)return!0;t=t._parent}return!1},t.isDescendantOf=function(e){return e.isAncestorOf(this)},t.getDepth=function(){for(var e=0,t=this._parent;t;)e++,t=t._parent;return e},t.forEachChild=function(e,t){void 0===t&&(t=!1),this._children.forEach((function(n,i){e(n,i),t&&n.forEachChild(e,!0)}))},t.onActiveChanged=function(){for(var e,t=o(this.components);!(e=t()).done;){var n=e.value;"onActiveChanged"in n&&"function"==typeof n.onActiveChanged&&n.onActiveChanged()}this.scene&&this.scene.eventSystem&&this.scene.eventSystem.emitSync("entity:activeChanged",{entity:this,active:this._active,activeInHierarchy:this.activeInHierarchy})},t.destroy=function(){if(!this._isDestroyed){this._isDestroyed=!0,this.scene&&this.scene.referenceTracker&&(this.scene.referenceTracker.clearReferencesTo(this.id),this.scene.referenceTracker.unregisterEntityScene(this.id));for(var e,t=o([].concat(this._children));!(e=t()).done;){e.value.destroy()}this._parent&&this._parent.removeChild(this),this.removeAllComponents(),this.scene&&(this.scene.querySystem&&this.scene.querySystem.removeEntity(this),this.scene.entities&&this.scene.entities.remove(this))}},t.destroyAllChildren=function(){if(0!==this._children.length){var e=this.scene,t=[],n=function(e){for(var i,r=o(e._children);!(i=r()).done;){var s=i.value;t.push(s),n(s)}};n(this);for(var i=0,r=t;i<r.length;i++){r[i]._isDestroyed=!0}for(var s=0,a=t;s<a.length;s++){a[s].removeAllComponents()}if(e){for(var c,u=o(t);!(c=u()).done;){var h=c.value;e.entities.remove(h),e.querySystem.removeEntity(h)}e.clearSystemEntityCaches()}this._children.length=0}},t.compareTo=function(e){return Se.prototype.compare(this,e)},t.toString=function(){return"Entity["+this.name+":"+this.id+"]"},t.getDebugInfo=function(){var e;return{name:this.name,id:this.id,enabled:this._enabled,active:this._active,activeInHierarchy:this.activeInHierarchy,destroyed:this._isDestroyed,componentCount:this.components.length,componentTypes:this.components.map((function(e){return H(e)})),componentMask:pe.toString(this._componentMask,2),parentId:(null===(e=this._parent)||void 0===e?void 0:e.id)||null,childCount:this._children.length,childIds:this._children.map((function(e){return e.id})),depth:this.getDepth(),cacheBuilt:null!==this._componentCache}},s(e,[{key:"isDestroyed",get:function(){return this._isDestroyed}},{key:"components",get:function(){return null===this._componentCache&&this._rebuildComponentCache(),this._componentCache}},{key:"parent",get:function(){return this._parent}},{key:"children",get:function(){return[].concat(this._children)}},{key:"childCount",get:function(){return this._children.length}},{key:"active",get:function(){return this._active},set:function(e){this._active!==e&&(this._active=e,this.onActiveChanged())}},{key:"activeInHierarchy",get:function(){return!!this._active&&(!this._parent||this._parent.activeInHierarchy)}},{key:"tag",get:function(){return this._tag},set:function(e){this._tag=e}},{key:"enabled",get:function(){return this._enabled},set:function(e){this._enabled=e}},{key:"updateOrder",get:function(){return this._updateOrder},set:function(e){this._updateOrder=e}},{key:"componentMask",get:function(){return this._componentMask}}])}();Ce._logger=Y("Entity"),Ce.entityComparer=new Se,Ce.eventBus=null;var we=function(){function e(e,t){this.scene=e,this.storageManager=t;var n=e.identifierPool.checkOut();this.entity=new Ce("",n),this.entity.scene=this.scene}var t=e.prototype;return t.named=function(e){return this.entity.name=e,this},t.tagged=function(e){return this.entity.tag=e,this},t.with=function(e){return this.entity.addComponent(e),this},t.withComponents=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var s=r[i];this.entity.addComponent(s)}return this},t.withIf=function(e,t){return e&&this.entity.addComponent(t),this},t.withFactory=function(e){var t=e();return this.entity.addComponent(t),this},t.configure=function(e,t){var n=this.entity.getComponent(e);return n&&t(n),this},t.enabled=function(e){return void 0===e&&(e=!0),this.entity.enabled=e,this},t.active=function(e){return void 0===e&&(e=!0),this.entity.active=e,this},t.withChild=function(e){var t=e.build();return this.entity.addChild(t),this},t.withChildren=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var s=r[i].build();this.entity.addChild(s)}return this},t.withChildFactory=function(e){var t=e(this.entity).build();return this.entity.addChild(t),this},t.withChildIf=function(e,t){if(e){var n=t.build();this.entity.addChild(n)}return this},t.build=function(){return this.entity},t.spawn=function(){return this.scene.addEntity(this.entity),this.entity},t.clone=function(){var t=new e(this.scene,this.storageManager);return t.entity=this.entity,t},e}(),Ee=function(){function e(e){this.buffer=[],this._idToEntity=new Map,this._nameToEntities=new Map,this._entitiesToAdd=[],this._entitiesToRemove=[],this._scene=e}var t=e.prototype;return t.add=function(e){this.addImmediate(e)},t.addImmediate=function(e){this._idToEntity.has(e.id)||(this.buffer.push(e),this._idToEntity.set(e.id,e),this.updateNameIndex(e,!0))},t.remove=function(e){this.removeImmediate(e)},t.removeImmediate=function(e){var t=this.buffer.indexOf(e);-1!==t&&(this.buffer.splice(t,1),this._idToEntity.delete(e.id),this.updateNameIndex(e,!1),this._scene&&this._scene.identifierPool&&this._scene.identifierPool.checkIn(e.id))},t.removeAllEntities=function(){for(var e=[],t=this.buffer.length-1;t>=0;t--)e.push(this.buffer[t].id),this.buffer[t].destroy();if(this._scene&&this._scene.identifierPool)for(var n,i=o(e);!(n=i()).done;){var r=n.value;this._scene.identifierPool.checkIn(r)}this.buffer.length=0,this._idToEntity.clear(),this._nameToEntities.clear(),this._entitiesToAdd.length=0,this._entitiesToRemove.length=0},t.updateLists=function(){if(this._entitiesToAdd.length>0){for(var e,t=o(this._entitiesToAdd);!(e=t()).done;){var n=e.value;this.addImmediate(n)}this._entitiesToAdd.length=0}if(this._entitiesToRemove.length>0){for(var i,r=o(this._entitiesToRemove);!(i=r()).done;){var s=i.value;this.removeImmediate(s)}this._entitiesToRemove.length=0}},t.update=function(){this.updateLists()},t.findEntity=function(e){var t=this._nameToEntities.get(e);return t&&t.length>0?t[0]:null},t.findEntitiesByName=function(e){return this._nameToEntities.get(e)||[]},t.findEntityById=function(e){return this._idToEntity.get(e)||null},t.findEntitiesByTag=function(e){for(var t,n=[],i=o(this.buffer);!(t=i()).done;){var r=t.value;r.tag===e&&n.push(r)}return n},t.findEntitiesWithComponent=function(e){for(var t,n=[],i=o(this.buffer);!(t=i()).done;){var r=t.value;r.hasComponent(e)&&n.push(r)}return n},t.forEach=function(e){for(var t,n=o(this.buffer);!(t=n()).done;){e(t.value)}},t.forEachWhere=function(e,t){for(var n,i=o(this.buffer);!(n=i()).done;){var r=n.value;e(r)&&t(r)}},t.updateNameIndex=function(e,t){if(e.name)if(t){var n=this._nameToEntities.get(e.name);n||(n=[],this._nameToEntities.set(e.name,n)),n.push(e)}else{var i=this._nameToEntities.get(e.name);if(i){var r=i.indexOf(e);-1!==r&&(i.splice(r,1),0===i.length&&this._nameToEntities.delete(e.name))}}},t.getStats=function(){for(var e,t=0,n=o(this.buffer);!(e=n()).done;){var i=e.value;i.enabled&&!i.isDestroyed&&t++}return{totalEntities:this.buffer.length,activeEntities:t,pendingAdd:this._entitiesToAdd.length,pendingRemove:this._entitiesToRemove.length,nameIndexSize:this._nameToEntities.size}},s(e,[{key:"count",get:function(){return this.buffer.length}}])}(),be=function(){function e(e,t){void 0===e&&(e=100),void 0===t&&(t=1024),this._nextAvailableIndex=0,this._freeIndices=[],this._generations=new Map,this._pendingRecycle=[],this._recycleDelay=100,this._stats={totalAllocated:0,totalRecycled:0,currentActive:0,memoryExpansions:0},this._recycleDelay=e,this._expansionBlockSize=t,this._preAllocateGenerations(0,this._expansionBlockSize)}var t=e.prototype;return t.checkOut=function(){var t;if(this._processDelayedRecycle(),this._freeIndices.length>0)t=this._freeIndices.pop();else{if(this._nextAvailableIndex>e.MAX_INDEX)throw new Error("实体索引已达到框架设计限制 ("+e.MAX_INDEX+")。这意味着您已经分配了超过65535个不同的实体索引。这是16位索引设计的限制,考虑优化实体回收策略或升级到64位ID设计。");t=this._nextAvailableIndex++,this._ensureGenerationCapacity(t)}var n=this._generations.get(t)||1;return this._stats.totalAllocated++,this._stats.currentActive++,this._packId(t,n)},t.checkIn=function(e){var t=this._unpackIndex(e),n=this._unpackGeneration(e);return!!this._isValidId(t,n)&&(!this._pendingRecycle.some((function(e){return e.index===t&&e.generation===n}))&&(this._pendingRecycle.push({index:t,generation:n,timestamp:Date.now()}),this._stats.currentActive--,this._stats.totalRecycled++,!0))},t.isValid=function(e){var t=this._unpackIndex(e),n=this._unpackGeneration(e);return this._isValidId(t,n)},t.getStats=function(){for(var t,n=0,i=0,r=o(this._generations);!(t=r()).done;){var s=t.value,a=s[0],c=s[1];a<this._nextAvailableIndex&&(n+=c,i++)}var u=i>0?n/i:1;return{totalAllocated:this._stats.totalAllocated,totalRecycled:this._stats.totalRecycled,currentActive:this._stats.currentActive,currentlyFree:this._freeIndices.length,pendingRecycle:this._pendingRecycle.length,maxPossibleEntities:e.MAX_INDEX+1,maxUsedIndex:this._nextAvailableIndex-1,memoryUsage:this._calculateMemoryUsage(),memoryExpansions:this._stats.memoryExpansions,averageGeneration:Math.round(100*u)/100,generationStorageSize:this._generations.size}},t.forceProcessDelayedRecycle=function(){this._processDelayedRecycle(!0)},t._processDelayedRecycle=function(t){if(void 0===t&&(t=!1),0!==this._pendingRecycle.length){for(var n,i=Date.now(),r=[],s=[],a=o(this._pendingRecycle);!(n=a()).done;){var c=n.value;t||i-c.timestamp>=this._recycleDelay?r.push(c):s.push(c)}for(var u=0,h=r;u<h.length;u++){var l=h[u];if(this._isValidId(l.index,l.generation)){var f=l.generation+1;f>e.MAX_GENERATION&&(f=1),this._generations.set(l.index,f),this._freeIndices.push(l.index)}}this._pendingRecycle=s}},t._preAllocateGenerations=function(t,n){for(var i=0;i<n;i++){var r=t+i;r<=e.MAX_INDEX&&this._generations.set(r,1)}this._stats.memoryExpansions++},t._ensureGenerationCapacity=function(e){if(!this._generations.has(e)){var t=Math.floor(e/this._expansionBlockSize)*this._expansionBlockSize;this._preAllocateGenerations(t,this._expansionBlockSize)}},t._calculateMemoryUsage=function(){return 16*this._generations.size+8*this._freeIndices.length+32*this._pendingRecycle.length},t._packId=function(e,t){return t<<16|e},t._unpackIndex=function(e){return 65535&e},t._unpackGeneration=function(e){return e>>>16&65535},t._isValidId=function(e,t){if(e<0||e>=this._nextAvailableIndex)return!1;var n=this._generations.get(e);return void 0!==n&&n===t},e}();be.MAX_INDEX=65535,be.MAX_GENERATION=65535;var Ae=function(){function e(){this.condition={all:[],any:[],none:[]}}e.all=function(){var t=new e;return t.all.apply(t,arguments)},e.any=function(){var t=new e;return t.any.apply(t,arguments)},e.none=function(){var t=new e;return t.none.apply(t,arguments)},e.byTag=function(t){return(new e).withTag(t)},e.byName=function(t){return(new e).withName(t)},e.byComponent=function(t){return(new e).withComponent(t)},e.complex=function(){return new e},e.empty=function(){return new e};var t=e.prototype;return t.all=function(){var e;return(e=this.condition.all).push.apply(e,arguments),this},t.any=function(){var e;return(e=this.condition.any).push.apply(e,arguments),this},t.none=function(){var e;return(e=this.condition.none).push.apply(e,arguments),this},t.exclude=function(){return this.none.apply(this,arguments)},t.one=function(){return this.any.apply(this,arguments)},t.withTag=function(e){return this.condition.tag=e,this},t.withName=function(e){return this.condition.name=e,this},t.withComponent=function(e){return this.condition.component=e,this},t.withoutTag=function(){return delete this.condition.tag,this},t.withoutName=function(){return delete this.condition.name,this},t.withoutComponent=function(){return delete this.condition.component,this},t.getCondition=function(){return{all:[].concat(this.condition.all),any:[].concat(this.condition.any),none:[].concat(this.condition.none),tag:this.condition.tag,name:this.condition.name,component:this.condition.component}},t.isEmpty=function(){return 0===this.condition.all.length&&0===this.condition.any.length&&0===this.condition.none.length&&void 0===this.condition.tag&&void 0===this.condition.name&&void 0===this.condition.component},t.reset=function(){return this.condition.all.length=0,this.condition.any.length=0,this.condition.none.length=0,delete this.condition.tag,delete this.condition.name,delete this.condition.component,this},t.clone=function(){var t,n,i,r=new e;return(t=r.condition.all).push.apply(t,this.condition.all),(n=r.condition.any).push.apply(n,this.condition.any),(i=r.condition.none).push.apply(i,this.condition.none),void 0!==this.condition.tag&&(r.condition.tag=this.condition.tag),void 0!==this.condition.name&&(r.condition.name=this.condition.name),void 0!==this.condition.component&&(r.condition.component=this.condition.component),r},t.toString=function(){var e=[];return this.condition.all.length>0&&e.push("all("+this.condition.all.map((function(e){return W(e)})).join(", ")+")"),this.condition.any.length>0&&e.push("any("+this.condition.any.map((function(e){return W(e)})).join(", ")+")"),this.condition.none.length>0&&e.push("none("+this.condition.none.map((function(e){return W(e)})).join(", ")+")"),void 0!==this.condition.tag&&e.push("tag("+this.condition.tag+")"),void 0!==this.condition.name&&e.push("name("+this.condition.name+")"),void 0!==this.condition.component&&e.push("component("+W(this.condition.component)+")"),"Matcher["+e.join(" & ")+"]"},e}(),Te=function(){function e(e){this._updateOrder=0,this._enabled=!0,this._performanceMonitor=null,this._systemName=j(this),this._initialized=!1,this._matcher=e||Ae.empty(),this._eventListeners=[],this._scene=null,this._entityIdMap=null,this._entityIdMapVersion=-1,this._entityIdMapSize=0,this.logger=Y(this.getLoggerName()),this._entityCache={frame:null,persistent:null,tracked:new Set,invalidate:function(){this.persistent=null},clearFrame:function(){this.frame=null},clearAll:function(){this.frame=null,this.persistent=null,this.tracked.clear()}}}var t=e.prototype;return t.setPerformanceMonitor=function(e){this._performanceMonitor=e},t.getPerformanceMonitor=function(){if(!this._performanceMonitor)throw new Error(this._systemName+": PerformanceMonitor未注入,请确保在Core.create()之后再添加System到Scene");return this._performanceMonitor},t.setUpdateOrder=function(e){this._updateOrder=e},t.initialize=function(){this._initialized||(this._initialized=!0,this.scene&&(this._entityCache.invalidate(),this.queryEntities()),this.onInitialize())},t.onInitialize=function(){},t.clearEntityCache=function(){this._entityCache.invalidate()},t.reset=function(){this.scene=null,this._initialized=!1,this._entityCache.clearAll(),this._entityIdMap=null,this._entityIdMapVersion=-1,this._entityIdMapSize=0,this.destroy()},t.queryEntities=function(){var e;if(null===(e=this.scene)||void 0===e||!e.querySystem||!this._matcher)return[];var t=this._matcher.getCondition(),n=this.scene.querySystem,i=[];return i=this._matcher.isEmpty()?n.getAllEntities():this.isSingleCondition(t)?this.executeSingleConditionQuery(t,n):this.executeComplexQuery(t,n),this.updateEntityTracking(i),i},t.isSingleCondition=function(e){var t=(e.all.length>0?1:0)|(e.any.length>0?2:0)|(e.none.length>0?4:0)|(void 0!==e.tag?8:0)|(void 0!==e.name?16:0)|(void 0!==e.component?32:0);return 0!==t&&!(t&t-1)},t.executeSingleConditionQuery=function(e,t){return void 0!==e.tag?t.queryByTag(e.tag).entities:void 0!==e.name?t.queryByName(e.name).entities:void 0!==e.component?t.queryByComponent(e.component).entities:e.all.length>0&&0===e.any.length&&0===e.none.length?t.queryAll.apply(t,e.all).entities:0===e.all.length&&e.any.length>0&&0===e.none.length?t.queryAny.apply(t,e.any).entities:0===e.all.length&&0===e.any.length&&e.none.length>0?t.queryNone.apply(t,e.none).entities:[]},t.executeComplexQueryWithIdSets=function(e,t){var n=null;if(void 0!==e.tag){var i=t.queryByTag(e.tag);n=this.extractEntityIds(i.entities)}if(void 0!==e.name){var r=this.extractEntityIds(t.queryByName(e.name).entities);n=n?this.intersectIdSets(n,r):r}if(void 0!==e.component){var s=this.extractEntityIds(t.queryByComponent(e.component).entities);n=n?this.intersectIdSets(n,s):s}if(e.all.length>0){var o=this.extractEntityIds(t.queryAll.apply(t,e.all).entities);n=n?this.intersectIdSets(n,o):o}if(e.any.length>0){var a=this.extractEntityIds(t.queryAny.apply(t,e.any).entities);n=n?this.intersectIdSets(n,a):a}if(e.none.length>0){n||(n=this.extractEntityIds(t.getAllEntities()));var c=t.queryAny.apply(t,e.none),u=this.extractEntityIds(c.entities);n=this.differenceIdSets(n,u)}return n?this.idSetToEntityArray(n,t.getAllEntities()):[]},t.extractEntityIds=function(e){for(var t=e.length,n=new Set,i=0;i<t;i=i+1|0)n.add(0|e[i].id);return n},t.intersectIdSets=function(e,t){var n,i;e.size<=t.size?(n=e,i=t):(n=t,i=e);for(var r,s=new Set,a=o(n);!(r=a()).done;){var c=r.value;i.has(c)&&s.add(c)}return s},t.differenceIdSets=function(e,t){for(var n,i=new Set,r=o(e);!(n=r()).done;){var s=n.value;t.has(s)||i.add(s)}return i},t.getEntityIdMap=function(e){var t,n,i=null!==(t=null===(n=this.scene)||void 0===n||null===(n=n.querySystem)||void 0===n?void 0:n.version)&&void 0!==t?t:0;return null!==this._entityIdMap&&this._entityIdMapVersion===i?this._entityIdMap:this.rebuildEntityIdMap(e,i)},t.rebuildEntityIdMap=function(e,t){var n=this._entityIdMap;n?n.clear():n=new Map;for(var i=e.length,r=0;r<i;r=r+1|0){var s=e[r];n.set(0|s.id,s)}return this._entityIdMap=n,this._entityIdMapVersion=t,this._entityIdMapSize=i,n},t.idSetToEntityArray=function(e,t){for(var n,i=this.getEntityIdMap(t),r=e.size,s=new Array(r),a=0,c=o(e);!(n=c()).done;){var u=n.value,h=i.get(u);void 0!==h&&(s[a]=h,a=a+1|0)}return a<r&&(s.length=a),s},t.executeComplexQuery=function(e,t){return this.executeComplexQueryWithIdSets(e,t)},t.update=function(){if(this._enabled&&this.onCheckProcessing()){var e=this.getPerformanceMonitor(),t=e.startMonitoring(this._systemName),n=0;try{this.onBegin(),this._entityCache.frame=this.queryEntities(),n=this._entityCache.frame.length,this.process(this._entityCache.frame)}finally{e.endMonitoring(this._systemName,t,n)}}},t.lateUpdate=function(){if(this._enabled&&this.onCheckProcessing()){var e=this.getPerformanceMonitor(),t=e.startMonitoring(this._systemName+"_Late"),n=0;try{var i=this._entityCache.frame||[];n=i.length,this.lateProcess(i),this.onEnd()}finally{e.endMonitoring(this._systemName+"_Late",t,n),this._entityCache.clearFrame()}}},t.onBegin=function(){},t.process=function(e){},t.lateProcess=function(e){},t.onEnd=function(){},t.onCheckProcessing=function(){return!0},t.getPerformanceData=function(){return this.getPerformanceMonitor().getSystemData(this._systemName)},t.getPerformanceStats=function(){return this.getPerformanceMonitor().getSystemStats(this._systemName)},t.resetPerformanceData=function(){this.getPerformanceMonitor().resetSystem(this._systemName)},t.toString=function(){var e=this.entities.length,t=this.getPerformanceData(),n=t?" ("+t.executionTime.toFixed(2)+"ms)":"";return this._systemName+"["+e+" entities]"+n},t.updateEntityTracking=function(e){for(var t,n=new Set(e),i=!1,r=o(e);!(t=r()).done;){var s=t.value;this._entityCache.tracked.has(s)||(this._entityCache.tracked.add(s),this.onAdded(s),i=!0)}for(var a,c=o(this._entityCache.tracked);!(a=c()).done;){var u=a.value;n.has(u)||(this._entityCache.tracked.delete(u),this.onRemoved(u),i=!0)}i&&this._entityCache.invalidate()},t.onAdded=function(e){},t.onRemoved=function(e){},t.dispose=function(){this.cleanupManualEventListeners(),this._entityCache.clearAll(),this._entityIdMap=null,this._initialized=!1,this._scene=null,this.logger.debug("System "+this._systemName+" disposed")},t.addEventListener=function(e,t,n){var i;if(null!==(i=this.scene)&&void 0!==i&&i.eventSystem){var r=this.scene.eventSystem.on(e,t,n);r&&this._eventListeners.push({eventSystem:this.scene.eventSystem,eventType:e,handler:t,listenerRef:r})}else this.logger.warn(this.systemName+": 无法添加事件监听器,scene.eventSystem 不可用")},t.removeEventListener=function(e,t){var n=this._eventListeners.findIndex((function(n){return n.eventType===e&&n.handler===t}));if(n>=0){var i=this._eventListeners[n];i.eventSystem.off(e,i.listenerRef),this._eventListeners.splice(n,1)}},t.cleanupManualEventListeners=function(){for(var e,t=o(this._eventListeners);!(e=t()).done;){var n=e.value;try{n.eventSystem.off(n.eventType,n.listenerRef)}catch(e){this.logger.warn(this.systemName+': 移除事件监听器失败 "'+n.eventType+'"',e)}}this._eventListeners.length=0},t.destroy=function(){this.cleanupManualEventListeners(),this.onDestroy()},t.getLoggerName=function(){return j(this)},t.onDestroy=function(){},t.requireComponent=function(e,t){var n=e.getComponent(t);if(!n)throw new Error("Component "+t.name+" not found on entity "+e.name+" in "+this.systemName);return n},t.getComponents=function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];return i.map((function(n){return t.requireComponent(e,n)}))},t.forEach=function(e,t){for(var n=0;n<e.length;n++)t(e[n],n)},t.filterEntities=function(e,t){return Array.from(e).filter(t)},t.mapEntities=function(e,t){return Array.from(e).map(t)},t.findEntity=function(e,t){for(var n=0;n<e.length;n++)if(t(e[n],n))return e[n]},t.someEntity=function(e,t){for(var n=0;n<e.length;n++)if(t(e[n],n))return!0;return!1},t.everyEntity=function(e,t){for(var n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0},s(e,[{key:"entities",get:function(){return null!==this._entityCache.frame?this._entityCache.frame:(null===this._entityCache.persistent&&(this._entityCache.persistent=this.queryEntities()),this._entityCache.persistent)}},{key:"updateOrder",get:function(){return this._updateOrder},set:function(e){this.setUpdateOrder(e)}},{key:"enabled",get:function(){return this._enabled},set:function(e){this._enabled=e}},{key:"systemName",get:function(){return this._systemName}},{key:"scene",get:function(){return this._scene},set:function(e){this._scene=e}},{key:"matcher",get:function(){return this._matcher}}])}(),Me=function(){function e(){this._processors=[],this._isDirty=!1}var t=e.prototype;return t.setDirty=function(){this._isDirty=!0},t.add=function(e){this._processors.push(e),this.setDirty()},t.remove=function(e){var t=this._processors.indexOf(e);-1!==t&&this._processors.splice(t,1)},t.getProcessor=function(e){for(var t,n=o(this._processors);!(t=n()).done;){var i=t.value;if(i instanceof e)return i}return null},t.begin=function(){this.sortProcessors()},t.end=function(){for(var t,n=o(this._processors);!(t=n()).done;){var i=t.value;try{i.reset()}catch(t){e._logger.error("Error in processor "+j(i)+":",t)}}this._isDirty=!1,this._processors.length=0},t.update=function(){this.sortProcessors();for(var t,n=o(this._processors);!(t=n()).done;){var i=t.value;try{i.update()}catch(t){e._logger.error("Error in processor "+j(i)+":",t)}}},t.lateUpdate=function(){for(var e,t=o(this._processors);!(e=t()).done;){e.value.lateUpdate()}},t.sortProcessors=function(){this._isDirty&&(this._processors.sort((function(e,t){return e.updateOrder-t.updateOrder})),this._isDirty=!1)},s(e,[{key:"processors",get:function(){return this._processors}},{key:"count",get:function(){return this._processors.length}}])}();Me._logger=Y("EntityProcessorList");var xe=function(){function e(e){if(e&&"object"==typeof e)this._value=pe.clone(e);else if("number"==typeof e)this._value=pe.fromNumber(e);else if("string"==typeof e){var t=parseInt(e,10);this._value=pe.fromNumber(t)}else this._value=pe.clone(pe.ZERO)}var t=e.prototype;return t.set=function(e){if(e<0)throw new Error("Bit index cannot be negative");pe.setBit(this._value,e)},t.clear=function(e){if(e<0)throw new Error("Bit index cannot be negative");pe.clearBit(this._value,e)},t.get=function(e){return pe.getBit(this._value,e)},t.containsAll=function(e){return pe.hasAll(this._value,e._value)},t.intersects=function(e){return pe.hasAny(this._value,e._value)},t.excludes=function(e){return pe.hasNone(this._value,e._value)},t.clearAll=function(){pe.clear(this._value)},t.isEmpty=function(){return pe.isZero(this._value)},t.cardinality=function(){return pe.popCount(this._value)},t.and=function(t){var n=new e;return pe.copy(this._value,n._value),pe.andInPlace(n._value,t._value),n},t.or=function(t){var n=new e;return pe.copy(this._value,n._value),pe.orInPlace(n._value,t._value),n},t.xor=function(t){var n=new e;return pe.copy(this._value,n._value),pe.xorInPlace(n._value,t._value),n},t.not=function(t){void 0===t&&(t=64),t>64&&(t=64);var n=new e;if(pe.copy(this._value,n._value),t<=32){var i=(1<<t)-1;n._value.base[le.LOW]=~n._value.base[le.LOW]&i,n._value.base[le.HIGH]=0}else if(n._value.base[le.LOW]=~n._value.base[le.LOW],t<64){var r=(1<<t-32)-1;n._value.base[le.HIGH]=~n._value.base[le.HIGH]&r}else n._value.base[le.HIGH]=~n._value.base[le.HIGH];return n},t.copyFrom=function(e){pe.copy(e._value,this._value)},t.clone=function(){return new e(this._value)},t.getValue=function(){return this._value},t.setValue=function(e){if("object"==typeof e)pe.copy(e,this._value);else if("number"==typeof e)this._value=pe.fromNumber(e);else{var t=parseInt(e,10);this._value=pe.fromNumber(t)}},t.toString=function(){for(var e=[],t=0;t<64;t++)this.get(t)&&e.push(t.toString());return"Bits["+e.join(", ")+"]"},t.toBinaryString=function(e){void 0===e&&(e=0),0==e&&(e=64+(this._value.segments?64*this._value.segments.length:0));for(var t="",n=e-1;n>=0;n--)t+=this.get(n)?"1":"0",n%8==0&&n>0&&(t+=" ");return t},t.toHexString=function(){return pe.toString(this._value,16)},e.fromBinaryString=function(t){var n=t.replace(/\s/g,""),i={base:void 0,segments:void 0};if(n.length<=32){var r=parseInt(n,2);i.base=[r>>>0,0]}else{var s=n.substring(n.length-32),o=n.substring(0,n.length-32),a=parseInt(s,2),c=parseInt(o,2);i.base=[a>>>0,c>>>0]}return new e(i)},e.fromHexString=function(t){var n=t.replace(/^0x/i,""),i={base:void 0,segments:void 0};if(n.length<=8){var r=parseInt(n,16);i.base=[r>>>0,0]}else{var s=n.substring(n.length-8),o=n.substring(0,n.length-8),a=parseInt(s,16),c=parseInt(o,16);i.base=[a>>>0,c>>>0]}return new e(i)},t.equals=function(e){return pe.equals(this._value,e._value)},t.getHighestBitIndex=function(){if(pe.isZero(this._value))return-1;if(0!==this._value.base[le.HIGH])for(var e=31;e>=0;e--)if(this._value.base[le.HIGH]&1<<e)return e+32;for(var t=31;t>=0;t--)if(this._value.base[le.LOW]&1<<t)return t;return-1},t.getLowestBitIndex=function(){if(pe.isZero(this._value))return-1;for(var e=0;e<32;e++)if(this._value.base[le.LOW]&1<<e)return e;for(var t=0;t<32;t++)if(this._value.base[le.HIGH]&1<<t)return t+32;return-1},e}(),Ie=function(){function e(){this._dense=[],this._sparse=new Map}var t=e.prototype;return t.add=function(e){if(this._sparse.has(e))return!1;var t=this._dense.length;return this._dense.push(e),this._sparse.set(e,t),!0},t.remove=function(e){var t=this._sparse.get(e);if(void 0===t)return!1;var n=this._dense.length-1;if(t!==n){var i=this._dense[n];this._dense[t]=i,this._sparse.set(i,t)}return this._dense.pop(),this._sparse.delete(e),!0},t.has=function(e){return this._sparse.has(e)},t.getIndex=function(e){return this._sparse.get(e)},t.getByIndex=function(e){return this._dense[e]},t.forEach=function(e){for(var t=0;t<this._dense.length;t++)e(this._dense[t],t)},t.map=function(e){for(var t=[],n=0;n<this._dense.length;n++)t.push(e(this._dense[n],n));return t},t.filter=function(e){for(var t=[],n=0;n<this._dense.length;n++)e(this._dense[n],n)&&t.push(this._dense[n]);return t},t.find=function(e){for(var t=0;t<this._dense.length;t++)if(e(this._dense[t],t))return this._dense[t]},t.some=function(e){for(var t=0;t<this._dense.length;t++)if(e(this._dense[t],t))return!0;return!1},t.every=function(e){for(var t=0;t<this._dense.length;t++)if(!e(this._dense[t],t))return!1;return!0},t.getDenseArray=function(){return[].concat(this._dense)},t.getDenseArrayUnsafe=function(){return this._dense},t.clear=function(){this._dense.length=0,this._sparse.clear()},t.toArray=function(){return[].concat(this._dense)},t.toSet=function(){return new Set(this._dense)},t.getMemoryStats=function(){var e=8*this._dense.length,t=16*this._sparse.size;return{denseArraySize:e,sparseMapSize:t,totalMemory:e+t}},t.validate=function(){if(this._dense.length!==this._sparse.size)return!1;for(var e=0;e<this._dense.length;e++){var t=this._dense[e];if(this._sparse.get(t)!==e)return!1}for(var n,i=o(this._sparse);!(n=i()).done;){var r=n.value,s=r[0],a=r[1];if(a>=this._dense.length||this._dense[a]!==s)return!1}return!0},s(e,[{key:"size",get:function(){return this._dense.length}},{key:"isEmpty",get:function(){return 0===this._dense.length}}])}(),ke=function(e){function t(){return e.call(this)||this}return u(t,e),t.prototype.reset=function(){this.clear()},t}(y(Set)),De=function(){function e(){this._componentMasks=[],this._componentToEntities=new Map,this._entities=new Ie}var t=e.prototype;return t.addEntity=function(e){this._entities.has(e)&&this.removeEntity(e);for(var t,n=pe.clone(pe.ZERO),i=new Set,r=o(e.components);!(t=r()).done;){var s=t.value.constructor;i.add(s),me.isRegistered(s)||me.register(s);var a=me.getBitMask(s);pe.orInPlace(n,a)}this._entities.add(e);for(var c=this._entities.getIndex(e);this._componentMasks.length<=c;)this._componentMasks.push(pe.clone(pe.ZERO));this._componentMasks[c]=n,this.updateComponentMappings(e,i,!0)},t.removeEntity=function(e){var t=this._entities.getIndex(e);if(void 0!==t){var n=this.getEntityComponentTypes(e);this.updateComponentMappings(e,n,!1),this._entities.remove(e);var i=this._componentMasks.length-1;t!==i&&(this._componentMasks[t]=this._componentMasks[i]),this._componentMasks.pop()}},t.queryByComponent=function(e){var t=this._componentToEntities.get(e);return t?new Set(t):new Set},t.queryMultipleAnd=function(t){var n=this;if(0===t.length)return new Set;if(1===t.length)return this.queryByComponent(t[0]);for(var i,r=pe.clone(pe.ZERO),s=o(t);!(i=s()).done;){var a=i.value;if(!me.isRegistered(a))return new Set;var c=me.getBitMask(a);pe.orInPlace(r,c)}var u=e._entitySetPool.obtain();return this._entities.forEach((function(e,t){var i=n._componentMasks[t];pe.hasAll(i,r)&&u.add(e)})),u},t.queryMultipleOr=function(t){var n=this;if(0===t.length)return new Set;if(1===t.length)return this.queryByComponent(t[0]);for(var i,r=pe.clone(pe.ZERO),s=o(t);!(i=s()).done;){var a=i.value;if(me.isRegistered(a)){var c=me.getBitMask(a);pe.orInPlace(r,c)}}if(pe.equals(r,pe.ZERO))return new Set;var u=e._entitySetPool.obtain();return this._entities.forEach((function(e,t){var i=n._componentMasks[t];pe.hasAny(i,r)&&u.add(e)})),u},t.hasComponent=function(e,t){var n=this._entities.getIndex(e);if(void 0===n)return!1;if(!me.isRegistered(t))return!1;var i=this._componentMasks[n],r=me.getBitMask(t);return pe.hasAny(i,r)},t.getEntityMask=function(e){var t=this._entities.getIndex(e);if(void 0!==t)return this._componentMasks[t]},t.getAllEntities=function(){return this._entities.toArray()},t.forEach=function(e){var t=this;this._entities.forEach((function(n,i){e(n,t._componentMasks[i],i)}))},t.clear=function(){this._entities.clear(),this._componentMasks.length=0;for(var t,n=o(this._componentToEntities.values());!(t=n()).done;){var i=t.value;e._entitySetPool.release(i)}this._componentToEntities.clear()},t.getMemoryStats=function(){for(var e,t=this._entities.getMemoryStats(),n=16*this._componentMasks.length,i=16*this._componentToEntities.size,r=o(this._componentToEntities.values());!(e=r()).done;){i+=8*e.value.size}return{entitiesMemory:t.totalMemory,masksMemory:n,mappingsMemory:i,totalMemory:t.totalMemory+n+i}},t.validate=function(){if(!this._entities.validate())return!1;if(this._componentMasks.length!==this._entities.size)return!1;for(var e,t=new Set,n=o(this._componentToEntities.values());!(e=n()).done;)for(var i,r=o(e.value);!(i=r()).done;){var s=i.value;t.add(s)}for(var a,c=o(t);!(a=c()).done;){var u=a.value;if(!this._entities.has(u))return!1}return!0},t.getEntityComponentTypes=function(e){for(var t,n=new Set,i=o(e.components);!(t=i()).done;){var r=t.value;n.add(r.constructor)}return n},t.updateComponentMappings=function(t,n,i){for(var r,s=o(n);!(r=s()).done;){var a=r.value,c=this._componentToEntities.get(a);i?(c||(c=e._entitySetPool.obtain(),this._componentToEntities.set(a,c)),c.add(t)):c&&(c.delete(t),0===c.size&&(this._componentToEntities.delete(a),e._entitySetPool.release(c)))}},s(e,[{key:"size",get:function(){return this._entities.size}},{key:"isEmpty",get:function(){return this._entities.isEmpty}}])}();De._entitySetPool=z.getPool(ke,50,512);var Re,Oe=function(){function e(){this.buckets=new Map,this._size=0}var t=e.prototype;return t.murmur32=function(e,t){var n=t>>>0,i=function(e){e=(e=Math.imul(e,3432918353)>>>0)<<15|e>>>17,e=Math.imul(e,461845907)>>>0,n=(n^=e)<<13|n>>>19,n=Math.imul(n,5)+3864292196>>>0};if(i(e.base[0]>>>0),i(e.base[1]>>>0),e.segments)for(var r,s=o(e.segments);!(r=s()).done;){var a=r.value;i(a[0]>>>0),i(a[1]>>>0)}return n^=e.segments?8*e.segments.length:8,n^=n>>>16,n=Math.imul(n,2246822507)>>>0,n^=n>>>13,n=Math.imul(n,3266489909)>>>0,(n^=n>>>16)>>>0},t.getHashes=function(e){return[this.murmur32(e,2538058380),this.murmur32(e,305419896)]},t.set=function(e,t){var n=this.getHashes(e),i=n[0],r=n[1],s=this.buckets.get(i);s||(s=[],this.buckets.set(i,s));for(var o=0;o<s.length;o++)if(s[o][0]===r)return s[o][1]=t,this;return s.push([r,t]),this._size++,this},t.get=function(e){var t=this.getHashes(e),n=t[0],i=t[1],r=this.buckets.get(n);if(r)for(var s=0;s<r.length;s++)if(r[s][0]===i)return r[s][1]},t.has=function(e){return void 0!==this.get(e)},t.delete=function(e){var t=this.getHashes(e),n=t[0],i=t[1],r=this.buckets.get(n);if(!r)return!1;for(var s=0;s<r.length;s++)if(r[s][0]===i)return r.splice(s,1),this._size--,0===r.length&&this.buckets.delete(n),!0;return!1},t.clear=function(){this.buckets.clear(),this._size=0},t.entries=l().m((function e(){var t,n,i,r,s,a,c,u;return l().w((function(e){for(;;)switch(e.n){case 0:t=o(this.buckets);case 1:if((n=t()).done){e.n=5;break}(i=n.value)[0],r=i[1],s=o(r);case 2:if((a=s()).done){e.n=4;break}return(c=a.value)[0],u=c[1],e.n=3,[void 0,u];case 3:e.n=2;break;case 4:e.n=1;break;case 5:return e.a(2)}}),e,this)})),t.values=l().m((function e(){var t,n,i,r,s,a,c;return l().w((function(e){for(;;)switch(e.n){case 0:t=o(this.buckets.values());case 1:if((n=t()).done){e.n=5;break}i=n.value,r=o(i);case 2:if((s=r()).done){e.n=4;break}return(a=s.value)[0],c=a[1],e.n=3,c;case 3:e.n=2;break;case 4:e.n=1;break;case 5:return e.a(2)}}),e,this)})),s(e,[{key:"size",get:function(){return this._size}},{key:"innerBuckets",get:function(){return this.buckets}}])}(),ze=function(){function e(){this._archetypes=new Oe,this._entityToArchetype=new Map,this._componentToArchetypes=new Map,this._entityComponentTypesCache=new Map,this._allArchetypes=[]}var t=e.prototype;return t.addEntity=function(e){var t=this.getEntityComponentTypes(e),n=this.generateArchetypeId(t),i=this._archetypes.get(n);i||(i=this.createArchetype(t)),i.entities.add(e),this._entityToArchetype.set(e,i)},t.removeEntity=function(e){var t=this._entityToArchetype.get(e);t&&(t.entities.delete(e),this._entityComponentTypesCache.delete(e),this._entityToArchetype.delete(e))},t.updateEntity=function(e){var t=this._entityToArchetype.get(e);this._entityComponentTypesCache.delete(e);var n=this.getEntityComponentTypes(e),i=this.generateArchetypeId(n);if(!t||t.id!==i){t&&t.entities.delete(e);var r=this._archetypes.get(i);r||(r=this.createArchetype(n)),r.entities.add(e),this._entityToArchetype.set(e,r)}},t.queryArchetypes=function(e,t){void 0===t&&(t="AND");var n=[],i=0;if("AND"===t){if(0===e.length){for(var r,s=o(this._allArchetypes);!(r=s()).done;){var a=r.value;n.push(a),i+=a.entities.size}return{archetypes:n,totalEntities:i}}if(1===e.length){var c=this._componentToArchetypes.get(e[0]);if(c)for(var u,h=o(c);!(u=h()).done;){var l=u.value;n.push(l),i+=l.entities.size}return{archetypes:n,totalEntities:i}}for(var f,d,p=1/0,y=o(e);!(d=y()).done;){var g=d.value,m=this._componentToArchetypes.get(g);if(!m||0===m.size)return{archetypes:[],totalEntities:0};m.size<p&&(p=m.size,f=m)}var v=this.generateArchetypeId(e);if(f)for(var _,S=o(f);!(_=S()).done;){var C=_.value;pe.hasAll(C.id,v)&&(n.push(C),i+=C.entities.size)}}else{for(var w,E=new Set,b=o(e);!(w=b()).done;){var A=w.value,T=this._componentToArchetypes.get(A);if(T)for(var M,x=o(T);!(M=x()).done;){var I=M.value;E.add(I)}}for(var k,D=o(E);!(k=D()).done;){var R=k.value;n.push(R),i+=R.entities.size}}return{archetypes:n,totalEntities:i}},t.getEntityArchetype=function(e){return this._entityToArchetype.get(e)},t.getAllArchetypes=function(){return this._allArchetypes.slice()},t.getEntitiesByComponent=function(e){var t=this._componentToArchetypes.get(e);if(!t||0===t.size)return[];for(var n,i=[],r=o(t);!(n=r()).done;)for(var s,a=o(n.value.entities);!(s=a()).done;){var c=s.value;i.push(c)}return i},t.clear=function(){this._archetypes.clear(),this._entityToArchetype.clear(),this._componentToArchetypes.clear(),this._entityComponentTypesCache.clear(),this._allArchetypes=[]},t.updateAllArchetypeArrays=function(){this._allArchetypes=[];for(var e,t=o(this._archetypes.values());!(e=t()).done;){var n=e.value;this._allArchetypes.push(n)}},t.getEntityComponentTypes=function(e){var t=this._entityComponentTypesCache.get(e);return t||(t=e.components.map((function(e){return e.constructor})),this._entityComponentTypesCache.set(e,t)),t},t.generateArchetypeId=function(e){for(var t,n=pe.clone(pe.ZERO),i=o(e);!(t=i()).done;){var r=t.value;me.isRegistered(r)||me.register(r);var s=me.getBitMask(r);pe.orInPlace(n,s)}return n},t.createArchetype=function(e){var t=this.generateArchetypeId(e),n={id:t,componentTypes:[].concat(e),entities:new Set};this._archetypes.set(t,n),this.updateAllArchetypeArrays();for(var i,r=o(e);!(i=r()).done;){var s=i.value,a=this._componentToArchetypes.get(s);a||(a=new Set,this._componentToArchetypes.set(s,a)),a.add(n)}return n},e}();!function(e){e.ALL="all",e.ANY="any",e.NONE="none"}(Re||(Re={}));var Be,Pe=Y("ReactiveQuery");exports.ReactiveQueryChangeType=void 0,(Be=exports.ReactiveQueryChangeType||(exports.ReactiveQueryChangeType={})).ADDED="added",Be.REMOVED="removed",Be.BATCH_UPDATE="batch_update";var Le,Ne,Ue=function(){function e(e,t){var n,i,r;void 0===t&&(t={}),this._entities=[],this._entityIdSet=new Set,this._listeners=[],this._active=!0,this._condition=e,this._config={enableBatchMode:null===(n=t.enableBatchMode)||void 0===n||n,batchDelay:null!==(i=t.batchDelay)&&void 0!==i?i:16,debug:null!==(r=t.debug)&&void 0!==r&&r},this._id=this.generateQueryId(),this._batchChanges={added:[],removed:[],timer:null},this._config.debug&&Pe.debug("创建ReactiveQuery: "+this._id)}var t=e.prototype;return t.generateQueryId=function(){return this._condition.type+":"+this._condition.componentTypes.map((function(e){return e.name})).sort().join(",")},t.subscribe=function(e){var t=this;if(!this._active)throw new Error("Cannot subscribe to disposed ReactiveQuery "+this._id);if("function"!=typeof e)throw new TypeError("Listener must be a function");return this._listeners.push(e),this._config.debug&&Pe.debug("订阅ReactiveQuery: "+this._id+", 监听器数量: "+this._listeners.length),function(){var n=t._listeners.indexOf(e);-1!==n&&t._listeners.splice(n,1)}},t.unsubscribeAll=function(){this._listeners.length=0},t.getEntities=function(){return this._entities},t.matches=function(e){var t=e.componentMask;switch(this._condition.type){case Re.ALL:return pe.hasAll(t,this._condition.mask);case Re.ANY:return pe.hasAny(t,this._condition.mask);case Re.NONE:return pe.hasNone(t,this._condition.mask);default:return!1}},t.notifyEntityAdded=function(e){this._active&&this.matches(e)&&(this._entityIdSet.has(e.id)||(this._entities.push(e),this._entityIdSet.add(e.id),this._config.enableBatchMode?this.addToBatch("added",e):this.notifyListeners({type:exports.ReactiveQueryChangeType.ADDED,entity:e}),this._config.debug&&Pe.debug("ReactiveQuery "+this._id+": 实体添加 "+e.name+"("+e.id+")")))},t.notifyEntityRemoved=function(e){if(this._active&&this._entityIdSet.has(e.id)){var t=this._entities.indexOf(e);-1!==t&&this._entities.splice(t,1),this._entityIdSet.delete(e.id),this._config.enableBatchMode?this.addToBatch("removed",e):this.notifyListeners({type:exports.ReactiveQueryChangeType.REMOVED,entity:e}),this._config.debug&&Pe.debug("ReactiveQuery "+this._id+": 实体移除 "+e.name+"("+e.id+")")}},t.notifyEntityChanged=function(e){if(this._active){var t=this._entityIdSet.has(e.id),n=this.matches(e);t&&!n?this.notifyEntityRemoved(e):!t&&n&&this.notifyEntityAdded(e)}},t.initializeWith=function(e){this._entities.length=0,this._entityIdSet.clear();for(var t,n=o(e);!(t=n()).done;){var i=t.value;this.matches(i)&&(this._entities.push(i),this._entityIdSet.add(i.id))}this._config.debug&&Pe.debug("ReactiveQuery "+this._id+": 初始化 "+this._entities.length+" 个实体")},t.addToBatch=function(e,t){var n=this;"added"===e?this._batchChanges.added.push(t):this._batchChanges.removed.push(t),null===this._batchChanges.timer&&(this._batchChanges.timer=setTimeout((function(){n.flushBatchChanges()}),this._config.batchDelay))},t.flushBatchChanges=function(){if(0!==this._batchChanges.added.length||0!==this._batchChanges.removed.length){var e=[].concat(this._batchChanges.added),t=[].concat(this._batchChanges.removed);this._batchChanges.added.length=0,this._batchChanges.removed.length=0,this._batchChanges.timer=null,this.notifyListeners({type:exports.ReactiveQueryChangeType.BATCH_UPDATE,added:e,removed:t,entities:this._entities}),this._config.debug&&Pe.debug("ReactiveQuery "+this._id+": 批量更新 +"+e.length+" -"+t.length)}else this._batchChanges.timer=null},t.notifyListeners=function(e){for(var t,n=o([].concat(this._listeners));!(t=n()).done;){var i=t.value;try{i(e)}catch(e){Pe.error("ReactiveQuery "+this._id+": 监听器执行出错",e)}}},t.pause=function(){this._active=!1,null!==this._batchChanges.timer&&(clearTimeout(this._batchChanges.timer),this._batchChanges.timer=null),this._batchChanges.added.length=0,this._batchChanges.removed.length=0},t.resume=function(){this._active=!0},t.dispose=function(){null!==this._batchChanges.timer&&(clearTimeout(this._batchChanges.timer),this._batchChanges.timer=null),this._batchChanges.added.length=0,this._batchChanges.removed.length=0,this._active=!1,this.unsubscribeAll(),this._entities.length=0,this._entityIdSet.clear(),this._config.debug&&Pe.debug("ReactiveQuery "+this._id+": 已销毁")},s(e,[{key:"count",get:function(){return this._entities.length}},{key:"condition",get:function(){return this._condition}},{key:"id",get:function(){return this._id}},{key:"active",get:function(){return this._active}},{key:"listenerCount",get:function(){return this._listeners.length}}])}(),We=function(){function e(){this._logger=Y("QuerySystem"),this.entities=[],this._version=0,this.queryCache=new Map,this.cacheMaxSize=1e3,this.cacheTimeout=5e3,this.componentMaskCache=new Map,this.queryStats={totalQueries:0,cacheHits:0,indexHits:0,linearScans:0,archetypeHits:0,dirtyChecks:0},this.resultArrayPool=[],this.poolMaxSize=50,this._reactiveQueries=new Map,this._reactiveQueriesByComponent=new Map,this.entityIndex={byTag:new Map,byName:new Map},this.archetypeSystem=new ze}var t=e.prototype;return t.acquireResultArray=function(){return this.resultArrayPool.length>0?this.resultArrayPool.pop():[]},t.releaseResultArray=function(e){this.resultArrayPool.length<this.poolMaxSize&&(e.length=0,this.resultArrayPool.push(e))},t.setEntities=function(e){this.entities=e,this.clearQueryCache(),this.clearReactiveQueries(),this.rebuildIndexes()},t.addEntity=function(e,t){void 0===t&&(t=!1),this.entities.includes(e)||(this.entities.push(e),this.addEntityToIndexes(e),this.archetypeSystem.addEntity(e),this.notifyReactiveQueriesEntityAdded(e),t||this.clearQueryCache(),this._version++)},t.addEntities=function(e){if(0!==e.length){for(var t,n=new Set(this.entities.map((function(e){return e.id}))),i=0,r=o(e);!(t=r()).done;){var s=t.value;n.has(s.id)||(this.entities.push(s),this.addEntityToIndexes(s),this.archetypeSystem.addEntity(s),n.add(s.id),i++)}i>0&&this.clearQueryCache()}},t.addEntitiesUnchecked=function(e){if(0!==e.length){for(var t,n=o(e);!(t=n()).done;){var i=t.value;this.entities.push(i)}for(var r,s=o(e);!(r=s()).done;){var a=r.value;this.addEntityToIndexes(a),this.archetypeSystem.addEntity(a)}this.clearQueryCache()}},t.removeEntity=function(e){var t=this.entities.indexOf(e);if(-1!==t){for(var n,i=[],r=o(e.components);!(n=r()).done;){var s=n.value;i.push(s.constructor)}this.entities.splice(t,1),this.removeEntityFromIndexes(e),this.archetypeSystem.removeEntity(e),i.length>0?this.notifyReactiveQueriesEntityRemoved(e,i):this.notifyReactiveQueriesEntityRemovedFallback(e),this.clearQueryCache(),this._version++}},t.updateEntity=function(e){this.entities.includes(e)?(this.removeEntityFromIndexes(e),this.archetypeSystem.updateEntity(e),this.addEntityToIndexes(e),this.notifyReactiveQueriesEntityChanged(e),this.clearQueryCache(),this._version++):this.addEntity(e)},t.addEntityToIndexes=function(e){var t=e.tag;void 0!==t&&(this.entityIndex.byTag.get(t)||this.createAndSetTagIndex(t)).add(e);var n=e.name;n&&(this.entityIndex.byName.get(n)||this.createAndSetNameIndex(n)).add(e)},t.createAndSetTagIndex=function(e){var t=new Set;return this.entityIndex.byTag.set(e,t),t},t.createAndSetNameIndex=function(e){var t=new Set;return this.entityIndex.byName.set(e,t),t},t.removeEntityFromIndexes=function(e){if(void 0!==e.tag){var t=this.entityIndex.byTag.get(e.tag);t&&(t.delete(e),0===t.size&&this.entityIndex.byTag.delete(e.tag))}if(e.name){var n=this.entityIndex.byName.get(e.name);n&&(n.delete(e),0===n.size&&this.entityIndex.byName.delete(e.name))}},t.rebuildIndexes=function(){this.entityIndex.byTag.clear(),this.entityIndex.byName.clear(),this.archetypeSystem.clear();for(var e,t=o(this.entities);!(e=t()).done;){var n=e.value;this.addEntityToIndexes(n),this.archetypeSystem.addEntity(n)}},t.queryAll=function(){var e=performance.now();this.queryStats.totalQueries++;for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];var r=this.getOrCreateReactiveQuery(Re.ALL,n).getEntities();return this.queryStats.cacheHits++,{entities:r,count:r.length,executionTime:performance.now()-e,fromCache:!0}},t.queryMultipleComponents=function(e){for(var t,n=[],i=o(this.archetypeSystem.queryArchetypes(e,"AND").archetypes);!(t=i()).done;)for(var r,s=o(t.value.entities);!(r=s()).done;){var a=r.value;n.push(a)}return n},t.queryAny=function(){var e=performance.now();this.queryStats.totalQueries++;for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];var r=this.getOrCreateReactiveQuery(Re.ANY,n).getEntities();return this.queryStats.cacheHits++,{entities:r,count:r.length,executionTime:performance.now()-e,fromCache:!0}},t.queryNone=function(){var e=performance.now();this.queryStats.totalQueries++;for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];var r=this.getOrCreateReactiveQuery(Re.NONE,n).getEntities();return this.queryStats.cacheHits++,{entities:r,count:r.length,executionTime:performance.now()-e,fromCache:!0}},t.queryByTag=function(e){var t=performance.now();this.queryStats.totalQueries++;var n="tag:"+e,i=this.getFromCache(n);if(i)return this.queryStats.cacheHits++,{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!0};this.queryStats.indexHits++;var r=Array.from(this.entityIndex.byTag.get(e)||[]);return this.addToCache(n,r),{entities:r,count:r.length,executionTime:performance.now()-t,fromCache:!1}},t.queryByName=function(e){var t=performance.now();this.queryStats.totalQueries++;var n="name:"+e,i=this.getFromCache(n);if(i)return this.queryStats.cacheHits++,{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!0};this.queryStats.indexHits++;var r=Array.from(this.entityIndex.byName.get(e)||[]);return this.addToCache(n,r),{entities:r,count:r.length,executionTime:performance.now()-t,fromCache:!1}},t.queryByComponent=function(e){var t=performance.now();this.queryStats.totalQueries++;var n=this.generateCacheKey("component",[e]),i=this.getFromCache(n);if(i)return this.queryStats.cacheHits++,{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!0};this.queryStats.indexHits++;var r=this.archetypeSystem.getEntitiesByComponent(e);return this.addToCache(n,r),{entities:r,count:r.length,executionTime:performance.now()-t,fromCache:!1}},t.getFromCache=function(e){var t=this.queryCache.get(e);return t?Date.now()-t.timestamp>this.cacheTimeout||t.version!==this._version?(this.queryCache.delete(e),null):(t.hitCount++,t.entities):null},t.addToCache=function(e,t){this.queryCache.size>=this.cacheMaxSize&&this.cleanupCache(),this.queryCache.set(e,{entities:t,timestamp:Date.now(),hitCount:0,version:this._version})},t.cleanupCache=function(){for(var e,t=Date.now(),n=o(this.queryCache.entries());!(e=n()).done;){var i=e.value,r=i[0];t-i[1].timestamp>this.cacheTimeout&&this.queryCache.delete(r)}if(this.queryCache.size>=this.cacheMaxSize){for(var s,a=1/0,c="",u=1/0,h=o(this.queryCache.entries());!(s=h()).done;){var l=s.value,f=l[0],d=l[1];(d.hitCount<a||d.hitCount===a&&d.timestamp<u)&&(a=d.hitCount,c=f,u=d.timestamp)}c&&this.queryCache.delete(c)}},t.clearQueryCache=function(){this.queryCache.clear(),this.componentMaskCache.clear()},t.clearReactiveQueries=function(){for(var e,t=o(this._reactiveQueries.values());!(e=t()).done;){e.value.dispose()}this._reactiveQueries.clear(),this._reactiveQueriesByComponent.clear()},t.generateCacheKey=function(e,t){return 1===t.length?e+":"+W(t[0]):e+":"+t.map((function(e){return W(e)})).sort().join(",")},t.clearCache=function(){this.clearQueryCache(),this.clearReactiveQueries()},t.createReactiveQuery=function(e,t){if(!e||0===e.length)throw new Error("组件类型列表不能为空");var n=this.createComponentMask(e),i={type:Re.ALL,componentTypes:e,mask:n},r=new Ue(i,t),s=this.executeTraditionalQuery(Re.ALL,e);r.initializeWith(s);var a=this.generateCacheKey("all",e);this._reactiveQueries.set(a,r);for(var c,u=o(e);!(c=u()).done;){var h=c.value,l=this._reactiveQueriesByComponent.get(h);l||(l=new Set,this._reactiveQueriesByComponent.set(h,l)),l.add(r)}return r},t.destroyReactiveQuery=function(e){if(e){var t=e.id;this._reactiveQueries.delete(t);for(var n,i=o(e.condition.componentTypes);!(n=i()).done;){var r=n.value,s=this._reactiveQueriesByComponent.get(r);s&&(s.delete(e),0===s.size&&this._reactiveQueriesByComponent.delete(r))}e.dispose()}},t.createComponentMask=function(e){var t=e.map((function(e){return W(e)})).sort().join(","),n=this.componentMaskCache.get(t);if(n)return n;for(var i,r=pe.clone(pe.ZERO),s=o(e);!(i=s()).done;){var a=i.value;me.isRegistered(a)||me.register(a);var c=me.getBitMask(a);pe.orInPlace(r,c)}return this.componentMaskCache.set(t,r),r},t.getAllEntities=function(){return this.entities},t.getStats=function(){return{entityCount:this.entities.length,indexStats:{componentIndexSize:this.archetypeSystem.getAllArchetypes().length,tagIndexSize:this.entityIndex.byTag.size,nameIndexSize:this.entityIndex.byName.size},queryStats:a({},this.queryStats,{cacheHitRate:this.queryStats.totalQueries>0?(this.queryStats.cacheHits/this.queryStats.totalQueries*100).toFixed(2)+"%":"0%"}),optimizationStats:{archetypeSystem:this.archetypeSystem.getAllArchetypes().map((function(e){return{id:e.id,componentTypes:e.componentTypes.map((function(e){return W(e)})),entityCount:e.entities.size}}))},cacheStats:{size:this._reactiveQueries.size,hitRate:this.queryStats.totalQueries>0?(this.queryStats.cacheHits/this.queryStats.totalQueries*100).toFixed(2)+"%":"0%"}}},t.getEntityArchetype=function(e){return this.archetypeSystem.getEntityArchetype(e)},t.getOrCreateReactiveQuery=function(e,t){var n=this.generateCacheKey(e,t),i=this._reactiveQueries.get(n);if(!i){var r=this.createComponentMask(t);i=new Ue({type:e,componentTypes:t,mask:r},{enableBatchMode:!1,debug:!1});var s=this.executeTraditionalQuery(e,t);i.initializeWith(s),this._reactiveQueries.set(n,i);for(var a,c=o(t);!(a=c()).done;){var u=a.value,h=this._reactiveQueriesByComponent.get(u);h||(h=new Set,this._reactiveQueriesByComponent.set(u,h)),h.add(i)}this._logger.debug("创建内部响应式查询缓存: "+n)}return i},t.executeTraditionalQuery=function(e,t){switch(e){case Re.ALL:for(var n,i=[],r=o(this.archetypeSystem.queryArchetypes(t,"AND").archetypes);!(n=r()).done;)for(var s,a=o(n.value.entities);!(s=a()).done;){var c=s.value;i.push(c)}return i;case Re.ANY:for(var u,h=[],l=o(this.archetypeSystem.queryArchetypes(t,"OR").archetypes);!(u=l()).done;)for(var f,d=o(u.value.entities);!(f=d()).done;){var p=f.value;h.push(p)}return h;case Re.NONE:var y=this.createComponentMask(t);return this.entities.filter((function(e){return pe.hasNone(e.componentMask,y)}));default:return[]}},t.notifyReactiveQueriesEntityAdded=function(e){if(0!==this._reactiveQueries.size)for(var t,n=new Set,i=o(e.components);!(t=i()).done;){var r=t.value.constructor,s=this._reactiveQueriesByComponent.get(r);if(s)for(var a,c=o(s);!(a=c()).done;){var u=a.value;n.has(u)||(u.notifyEntityAdded(e),n.add(u))}}},t.notifyReactiveQueriesEntityRemoved=function(e,t){if(0!==this._reactiveQueries.size)for(var n,i=new Set,r=o(t);!(n=r()).done;){var s=n.value,a=this._reactiveQueriesByComponent.get(s);if(a)for(var c,u=o(a);!(c=u()).done;){var h=c.value;i.has(h)||(h.notifyEntityRemoved(e),i.add(h))}}},t.notifyReactiveQueriesEntityRemovedFallback=function(e){if(0!==this._reactiveQueries.size)for(var t,n=o(this._reactiveQueries.values());!(t=n()).done;){t.value.notifyEntityRemoved(e)}},t.notifyReactiveQueriesEntityChanged=function(e){if(0!==this._reactiveQueries.size){for(var t,n=new Set,i=o(e.components);!(t=i()).done;){var r=t.value.constructor,s=this._reactiveQueriesByComponent.get(r);if(s)for(var a,c=o(s);!(a=c()).done;){var u=a.value;n.has(u)||(u.notifyEntityChanged(e),n.add(u))}}for(var h,l=o(this._reactiveQueries.values());!(h=l()).done;){var f=h.value;n.has(f)||f.notifyEntityChanged(e)}}},s(e,[{key:"version",get:function(){return this._version}}])}(),Fe=function(){function e(e){this._logger=Y("QueryBuilder"),this.conditions=[],this.querySystem=e}var t=e.prototype;return t.withAll=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.conditions.push({type:Re.ALL,componentTypes:t,mask:this.createComponentMask(t)}),this},t.withAny=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.conditions.push({type:Re.ANY,componentTypes:t,mask:this.createComponentMask(t)}),this},t.without=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.conditions.push({type:Re.NONE,componentTypes:t,mask:this.createComponentMask(t)}),this},t.execute=function(){var e,t,n,i=performance.now();if(1===this.conditions.length){var r=this.conditions[0];switch(r.type){case Re.ALL:return(e=this.querySystem).queryAll.apply(e,r.componentTypes);case Re.ANY:return(t=this.querySystem).queryAny.apply(t,r.componentTypes);case Re.NONE:return(n=this.querySystem).queryNone.apply(n,r.componentTypes)}}return{entities:[],count:0,executionTime:performance.now()-i,fromCache:!1}},t.createComponentMask=function(e){for(var t,n=pe.clone(pe.ZERO),i=o(e);!(t=i()).done;){var r=t.value;try{var s=me.getBitMask(r);pe.orInPlace(n,s)}catch(e){this._logger.warn("组件类型 "+W(r)+" 未注册,跳过")}}return n},t.reset=function(){return this.conditions=[],this},e}(),He=function(){function e(){this.listeners=new Map,this.stats=new Map,this.batchQueue=new Map,this.batchTimers=new Map,this.batchConfigs=new Map,this.nextListenerId=0,this.isEnabled=!0,this.maxListeners=100}var t=e.prototype;return t.on=function(e,t,n){return void 0===n&&(n={}),this.addListener(e,t,n)},t.once=function(e,t,n){return void 0===n&&(n={}),this.addListener(e,t,a({},n,{once:!0}))},t.onAsync=function(e,t,n){return void 0===n&&(n={}),this.addListener(e,t,a({},n,{async:!0}))},t.off=function(e,t){var n=this.listeners.get(e);if(!n)return!1;var i=n.findIndex((function(e){return e.id===t}));return-1!==i&&(n.splice(i,1),0===n.length&&(this.listeners.delete(e),this.stats.delete(e)),!0)},t.offAll=function(e){this.listeners.delete(e),this.stats.delete(e),this.clearBatch(e)},t.emit=function(){var e=n(l().m((function e(t,n){var i;return l().w((function(e){for(;;)switch(e.n){case 0:if(this.isEnabled){e.n=1;break}return e.a(2);case 1:if(null==(i=this.batchConfigs.get(t))||!i.enabled){e.n=2;break}return this.addToBatch(t,n),e.a(2);case 2:return e.n=3,this.executeEvent(t,n);case 3:return e.a(2)}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.emitSync=function(t,n){if(this.isEnabled){var i=this.listeners.get(t);if(i&&0!==i.length){for(var r,s=performance.now(),a=[],c=o(this.sortListenersByPriority(i));!(r=c()).done;){var u=r.value;if(!u.config.async)try{u.config.context?u.handler.call(u.config.context,n):u.handler(n),u.config.once&&a.push(u.id)}catch(n){e._logger.error("事件处理器执行错误 "+t+":",n)}}this.removeListeners(t,a),this.updateStats(t,performance.now()-s)}}},t.setBatchConfig=function(e,t){this.batchConfigs.set(e,t)},t.flushBatch=function(e){var t=this.batchQueue.get(e);if(t&&0!==t.length){var n=this.batchTimers.get(e);n&&(clearTimeout(n),this.batchTimers.delete(e)),this.processBatch(e,t),this.batchQueue.delete(e)}},t.getStats=function(e){return e?this.stats.get(e)||this.createEmptyStats(e):new Map(this.stats)},t.resetStats=function(e){e?this.stats.delete(e):this.stats.clear()},t.setEnabled=function(e){this.isEnabled=e},t.hasListeners=function(e){var t=this.listeners.get(e);return!!t&&t.length>0},t.getListenerCount=function(e){var t=this.listeners.get(e);return t?t.length:0},t.clear=function(){this.listeners.clear(),this.stats.clear(),this.clearAllBatches()},t.setMaxListeners=function(e){this.maxListeners=e},t.addListener=function(t,n,i){var r=this.listeners.get(t);if(r||(r=[],this.listeners.set(t,r)),r.length>=this.maxListeners)return e._logger.warn("事件类型 "+t+" 的监听器数量超过最大限制 ("+this.maxListeners+")"),"";var s="listener_"+this.nextListenerId++,o={handler:n,config:a({priority:0},i),id:s};return r.push(o),this.stats.has(t)||this.stats.set(t,this.createEmptyStats(t)),s},t.executeEvent=function(){var t=n(l().m((function t(i,r){var s,a,c,u,h,f,d,p,y,g;return l().w((function(t){for(;;)switch(t.n){case 0:if((s=this.listeners.get(i))&&0!==s.length){t.n=1;break}return t.a(2);case 1:for(a=performance.now(),c=[],u=this.sortListenersByPriority(s),h=u.filter((function(e){return!e.config.async})),f=u.filter((function(e){return e.config.async})),d=o(h);!(p=d()).done;){y=p.value;try{y.config.context?y.handler.call(y.config.context,r):y.handler(r),y.config.once&&c.push(y.id)}catch(t){e._logger.error("同步事件处理器执行错误 "+i+":",t)}}return g=f.map(function(){var t=n(l().m((function t(n){var s;return l().w((function(t){for(;;)switch(t.p=t.n){case 0:if(t.p=0,!n.config.context){t.n=2;break}return t.n=1,n.handler.call(n.config.context,r);case 1:t.n=3;break;case 2:return t.n=3,n.handler(r);case 3:n.config.once&&c.push(n.id),t.n=5;break;case 4:t.p=4,s=t.v,e._logger.error("异步事件处理器执行错误 "+i+":",s);case 5:return t.a(2)}}),t,null,[[0,4]])})));return function(e){return t.apply(this,arguments)}}()),t.n=2,Promise.all(g);case 2:this.removeListeners(i,c),this.updateStats(i,performance.now()-a);case 3:return t.a(2)}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),t.sortListenersByPriority=function(e){return e.slice().sort((function(e,t){return(t.config.priority||0)-(e.config.priority||0)}))},t.removeListeners=function(e,t){if(0!==t.length){var n=this.listeners.get(e);if(n){for(var i,r=function(){var e=i.value,t=n.findIndex((function(t){return t.id===e}));-1!==t&&n.splice(t,1)},s=o(t);!(i=s()).done;)r();0===n.length&&(this.listeners.delete(e),this.stats.delete(e))}}},t.addToBatch=function(e,t){var n=this,i=this.batchQueue.get(e);i||(i=[],this.batchQueue.set(e,i)),i.push(t);var r=this.batchConfigs.get(e);if(i.length>=r.batchSize)this.flushBatch(e);else if(!this.batchTimers.has(e)){var s=setTimeout((function(){n.flushBatch(e)}),r.delay);this.batchTimers.set(e,s)}},t.processBatch=function(){var e=n(l().m((function e(t,n){var i;return l().w((function(e){for(;;)switch(e.n){case 0:return i={type:t,events:n,count:n.length,timestamp:Date.now()},e.n=1,this.executeEvent(t+":batch",i);case 1:return e.a(2)}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.clearBatch=function(e){this.batchQueue.delete(e);var t=this.batchTimers.get(e);t&&(clearTimeout(t),this.batchTimers.delete(e))},t.clearAllBatches=function(){this.batchQueue.clear();for(var e,t=o(this.batchTimers.values());!(e=t()).done;){var n=e.value;clearTimeout(n)}this.batchTimers.clear(),this.batchConfigs.clear()},t.updateStats=function(e,t){var n=this.stats.get(e);n||(n=this.createEmptyStats(e),this.stats.set(e,n)),n.triggerCount++,n.totalExecutionTime+=t,n.averageExecutionTime=n.totalExecutionTime/n.triggerCount,n.lastTriggerTime=Date.now(),n.listenerCount=this.getListenerCount(e)},t.createEmptyStats=function(e){return{eventType:e,listenerCount:0,triggerCount:0,totalExecutionTime:0,averageExecutionTime:0,lastTriggerTime:0}},e}();He._logger=Y("EventSystem"),exports.ECSEventType=void 0,(Le=exports.ECSEventType||(exports.ECSEventType={})).ENTITY_CREATED="entity:created",Le.ENTITY_DESTROYED="entity:destroyed",Le.ENTITY_ENABLED="entity:enabled",Le.ENTITY_DISABLED="entity:disabled",Le.ENTITY_TAG_ADDED="entity:tag:added",Le.ENTITY_TAG_REMOVED="entity:tag:removed",Le.ENTITY_NAME_CHANGED="entity:name:changed",Le.COMPONENT_ADDED="component:added",Le.COMPONENT_REMOVED="component:removed",Le.COMPONENT_MODIFIED="component:modified",Le.COMPONENT_ENABLED="component:enabled",Le.COMPONENT_DISABLED="component:disabled",Le.SYSTEM_ADDED="system:added",Le.SYSTEM_REMOVED="system:removed",Le.SYSTEM_ENABLED="system:enabled",Le.SYSTEM_DISABLED="system:disabled",Le.SYSTEM_PROCESSING_START="system:processing:start",Le.SYSTEM_PROCESSING_END="system:processing:end",Le.SYSTEM_ERROR="system:error",Le.SCENE_CREATED="scene:created",Le.SCENE_DESTROYED="scene:destroyed",Le.SCENE_ACTIVATED="scene:activated",Le.SCENE_DEACTIVATED="scene:deactivated",Le.SCENE_PAUSED="scene:paused",Le.SCENE_RESUMED="scene:resumed",Le.QUERY_EXECUTED="query:executed",Le.QUERY_CACHE_HIT="query:cache:hit",Le.QUERY_CACHE_MISS="query:cache:miss",Le.QUERY_OPTIMIZED="query:optimized",Le.PERFORMANCE_WARNING="performance:warning",Le.PERFORMANCE_CRITICAL="performance:critical",Le.MEMORY_USAGE_HIGH="memory:usage:high",Le.FRAME_RATE_DROP="frame:rate:drop",Le.INDEX_CREATED="index:created",Le.INDEX_UPDATED="index:updated",Le.INDEX_OPTIMIZED="index:optimized",Le.ARCHETYPE_CREATED="archetype:created",Le.ARCHETYPE_ENTITY_ADDED="archetype:entity:added",Le.ARCHETYPE_ENTITY_REMOVED="archetype:entity:removed",Le.DIRTY_MARK_ADDED="dirty:mark:added",Le.DIRTY_BATCH_PROCESSED="dirty:batch:processed",Le.ERROR_OCCURRED="error:occurred",Le.WARNING_ISSUED="warning:issued",Le.FRAMEWORK_INITIALIZED="framework:initialized",Le.FRAMEWORK_SHUTDOWN="framework:shutdown",Le.DEBUG_INFO="debug:info",Le.DEBUG_STATS_UPDATED="debug:stats:updated",exports.EventPriority=void 0,(Ne=exports.EventPriority||(exports.EventPriority={}))[Ne.LOWEST=0]="LOWEST",Ne[Ne.LOW=25]="LOW",Ne[Ne.NORMAL=50]="NORMAL",Ne[Ne.HIGH=75]="HIGH",Ne[Ne.HIGHEST=100]="HIGHEST",Ne[Ne.CRITICAL=200]="CRITICAL";var je={ENTITY:{CREATED:exports.ECSEventType.ENTITY_CREATED,DESTROYED:exports.ECSEventType.ENTITY_DESTROYED,ENABLED:exports.ECSEventType.ENTITY_ENABLED,DISABLED:exports.ECSEventType.ENTITY_DISABLED,TAG_ADDED:exports.ECSEventType.ENTITY_TAG_ADDED,TAG_REMOVED:exports.ECSEventType.ENTITY_TAG_REMOVED,NAME_CHANGED:exports.ECSEventType.ENTITY_NAME_CHANGED},COMPONENT:{ADDED:exports.ECSEventType.COMPONENT_ADDED,REMOVED:exports.ECSEventType.COMPONENT_REMOVED,MODIFIED:exports.ECSEventType.COMPONENT_MODIFIED,ENABLED:exports.ECSEventType.COMPONENT_ENABLED,DISABLED:exports.ECSEventType.COMPONENT_DISABLED},SYSTEM:{ADDED:exports.ECSEventType.SYSTEM_ADDED,REMOVED:exports.ECSEventType.SYSTEM_REMOVED,ENABLED:exports.ECSEventType.SYSTEM_ENABLED,DISABLED:exports.ECSEventType.SYSTEM_DISABLED,PROCESSING_START:exports.ECSEventType.SYSTEM_PROCESSING_START,PROCESSING_END:exports.ECSEventType.SYSTEM_PROCESSING_END,ERROR:exports.ECSEventType.SYSTEM_ERROR},PERFORMANCE:{WARNING:exports.ECSEventType.PERFORMANCE_WARNING,CRITICAL:exports.ECSEventType.PERFORMANCE_CRITICAL,MEMORY_HIGH:exports.ECSEventType.MEMORY_USAGE_HIGH,FRAME_DROP:exports.ECSEventType.FRAME_RATE_DROP}},qe=function(){function e(){}return e.isValid=function(e){return this.validTypes.has(e)},e.getAllValidTypes=function(){return Array.from(this.validTypes)},e.addCustomType=function(e){this.validTypes.add(e)},e.removeCustomType=function(e){this.validTypes.delete(e)},e}();qe.validTypes=new Set([].concat(Object.values(exports.ECSEventType),Object.values(je.ENTITY),Object.values(je.COMPONENT),Object.values(je.SYSTEM),Object.values(je.PERFORMANCE)));var Ge=function(){function e(e){void 0===e&&(e=!1),this.eventIdCounter=0,this.isDebugMode=!1,this.eventSystem=new He,this.isDebugMode=e}var t=e.prototype;return t.emit=function(t,n,i){void 0===i&&(i=!1),this.validateEventType(t);var r=i?this.enhanceEventData(t,n):n;this.isDebugMode&&e._logger.info("发射事件: "+t,r),this.eventSystem.emitSync(t,r)},t.emitAsync=function(){var t=n(l().m((function t(n,i,r){var s;return l().w((function(t){for(;;)switch(t.n){case 0:return void 0===r&&(r=!1),this.validateEventType(n),s=r?this.enhanceEventData(n,i):i,this.isDebugMode&&e._logger.info("发射异步事件: "+n,s),t.n=1,this.eventSystem.emit(n,s);case 1:return t.a(2)}}),t,this)})));return function(e,n,i){return t.apply(this,arguments)}}(),t.on=function(t,n,i){void 0===i&&(i={}),this.validateEventType(t);var r={once:i.once||!1,priority:i.priority||exports.EventPriority.NORMAL,async:i.async||!1,context:i.context};return this.isDebugMode&&e._logger.info("添加监听器: "+t,r),this.eventSystem.on(t,n,r)},t.once=function(e,t,n){return void 0===n&&(n={}),this.on(e,t,a({},n,{once:!0}))},t.onAsync=function(e,t,n){return void 0===n&&(n={}),this.on(e,t,a({},n,{async:!0}))},t.off=function(t,n){return this.isDebugMode&&e._logger.info("移除监听器: "+n+" 事件: "+t),this.eventSystem.off(t,n)},t.offAll=function(t){this.isDebugMode&&e._logger.info("移除所有监听器: "+t),this.eventSystem.offAll(t)},t.hasListeners=function(e){return this.eventSystem.hasListeners(e)},t.getStats=function(e){var t=this,n=this.eventSystem.getStats(e);if(n instanceof Map){var i=new Map;return n.forEach((function(e,n){i.set(n,t.convertEventStats(e))})),i}return this.convertEventStats(n)},t.clear=function(){this.isDebugMode&&e._logger.info("清空所有监听器"),this.eventSystem.clear()},t.setEnabled=function(e){this.eventSystem.setEnabled(e)},t.setDebugMode=function(e){this.isDebugMode=e},t.setMaxListeners=function(e){this.eventSystem.setMaxListeners(e)},t.getListenerCount=function(e){return this.eventSystem.getListenerCount(e)},t.setBatchConfig=function(e,t,n){this.eventSystem.setBatchConfig(e,{batchSize:t,delay:n,enabled:!0})},t.flushBatch=function(e){this.eventSystem.flushBatch(e)},t.resetStats=function(e){this.eventSystem.resetStats(e)},t.emitEntityCreated=function(e){this.emit(exports.ECSEventType.ENTITY_CREATED,e)},t.emitEntityDestroyed=function(e){this.emit(exports.ECSEventType.ENTITY_DESTROYED,e)},t.emitComponentAdded=function(e){this.emit(exports.ECSEventType.COMPONENT_ADDED,e)},t.emitComponentRemoved=function(e){this.emit(exports.ECSEventType.COMPONENT_REMOVED,e)},t.emitSystemAdded=function(e){this.emit(exports.ECSEventType.SYSTEM_ADDED,e)},t.emitSystemRemoved=function(e){this.emit(exports.ECSEventType.SYSTEM_REMOVED,e)},t.emitSceneChanged=function(e){this.emit(exports.ECSEventType.SCENE_ACTIVATED,e)},t.emitPerformanceWarning=function(e){this.emit(exports.ECSEventType.PERFORMANCE_WARNING,e)},t.onEntityCreated=function(e,t){return this.on(exports.ECSEventType.ENTITY_CREATED,e,t)},t.onComponentAdded=function(e,t){return this.on(exports.ECSEventType.COMPONENT_ADDED,e,t)},t.onSystemError=function(e,t){return this.on(exports.ECSEventType.SYSTEM_ERROR,e,t)},t.onPerformanceWarning=function(e,t){return this.on(exports.ECSEventType.PERFORMANCE_WARNING,e,t)},t.validateEventType=function(t){this.isDebugMode&&(qe.isValid(t)||(e._logger.warn("未知事件类型: "+t),qe.addCustomType(t)))},t.enhanceEventData=function(e,t){if(null==t)return{timestamp:Date.now(),eventId:e+"_"+ ++this.eventIdCounter,source:"EventBus"};var n=t;return n.timestamp||(n.timestamp=Date.now()),n.eventId||(n.eventId=e+"_"+ ++this.eventIdCounter),n.source||(n.source="EventBus"),n},t.convertEventStats=function(e){return{eventType:e.eventType,listenerCount:e.listenerCount,triggerCount:e.triggerCount,totalExecutionTime:e.totalExecutionTime,averageExecutionTime:e.averageExecutionTime,lastTriggerTime:e.lastTriggerTime}},e}();Ge._logger=Y("EventBus");var Qe=function(){function e(){}return e.getInstance=function(e){return void 0===e&&(e=!1),this.instance||(this.instance=new Ge(e)),this.instance},e.reset=function(e){return void 0===e&&(e=!1),this.instance&&this.instance.clear(),this.instance=new Ge(e),this.instance},e}(),Ve=function(){function e(e,t){this._entities=e,this._componentTypes=t}var t=e.prototype;return t.forEach=function(e){this._entities.forEach(e)},t.map=function(e){return this._entities.map(e)},t.filter=function(t){return new e(this._entities.filter(t),this._componentTypes)},t.find=function(e){return this._entities.find(e)},t.some=function(e){return this._entities.some(e)},t.every=function(e){return this._entities.every(e)},t.get=function(e){return this._entities[e]},t.toArray=function(){return[].concat(this._entities)},t.getComponentTypes=function(){return this._componentTypes},t[Symbol.iterator]=function(){return this._entities[Symbol.iterator]()},s(e,[{key:"entities",get:function(){return this._entities}},{key:"length",get:function(){return this._entities.length}},{key:"first",get:function(){return this._entities[0]}},{key:"last",get:function(){return this._entities[this._entities.length-1]}},{key:"isEmpty",get:function(){return 0===this._entities.length}}])}(),Ye=function(){function e(e,t,n,i,r){this._all=e||[],this._any=t||[],this._none=n||[],this._tag=i,this._name=r}var t=e.prototype;return t.withAll=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return new e([].concat(this._all,n),this._any,this._none,this._tag,this._name)},t.withAny=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return new e(this._all,[].concat(this._any,n),this._none,this._tag,this._name)},t.withNone=function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return new e(this._all,this._any,[].concat(this._none,n),this._tag,this._name)},t.withTag=function(t){return new e(this._all,this._any,this._none,t,this._name)},t.withName=function(t){return new e(this._all,this._any,this._none,this._tag,t)},t.buildMatcher=function(){var e,t,n,i=Ae.complex();this._all.length>0&&(i=(e=i).all.apply(e,this._all));this._any.length>0&&(i=(t=i).any.apply(t,this._any));this._none.length>0&&(i=(n=i).none.apply(n,this._none));return void 0!==this._tag&&(i=i.withTag(this._tag)),void 0!==this._name&&(i=i.withName(this._name)),i},t.getCondition=function(){return{all:[].concat(this._all),any:[].concat(this._any),none:[].concat(this._none),tag:this._tag,name:this._name}},t.getRequiredTypes=function(){return this._all},t.clone=function(){return new e([].concat(this._all),[].concat(this._any),[].concat(this._none),this._tag,this._name)},e}();var Ke=Symbol("SerializableMetadata"),Je=Symbol("SerializeField"),$e=Symbol("SerializeOptions");function Ze(e){return function(t,n){var i=t.constructor,r=i[Ke];r||(r={options:{version:1},fields:new Map,ignoredFields:new Set},i[Ke]=r),r.fields.set(n,e||{})}}function Xe(e){return e&&("function"==typeof e?e:e.constructor)[Ke]||null}var et=function(){function e(){}return e.serialize=function(e){var t=Xe(e);if(!t)return null;for(var n,i=e.constructor,r=t.options.typeId||W(i),s={},a=o(t.fields);!(n=a()).done;){var c=n.value,u=c[0],h=c[1],l="symbol"==typeof u?u.toString():u,f=e[u];if(!t.ignoredFields.has(u)){var d=h.serializer?h.serializer(f):this.serializeValue(f);s[h.alias||l]=d}}return{type:r,version:t.options.version,data:s}},e.deserialize=function(e,t){var n=t.get(e.type);if(!n)return console.warn("未找到组件类型: "+e.type),null;var i=Xe(n);if(!i)return console.warn("组件 "+e.type+" 不可序列化"),null;for(var r,s=new n,a=o(i.fields);!(r=a()).done;){var c=r.value,u=c[0],h=c[1],l="symbol"==typeof u?u.toString():u,f=h.alias||l,d=e.data[f];if(void 0!==d){var p=h.deserializer?h.deserializer(d):this.deserializeValue(d);s[u]=p}}return s},e.serializeComponents=function(e){for(var t,n=[],i=o(e);!(t=i()).done;){var r=t.value,s=this.serialize(r);s&&n.push(s)}return n},e.deserializeComponents=function(e,t){for(var n,i=[],r=o(e);!(n=r()).done;){var s=n.value,a=this.deserialize(s,t);a&&i.push(a)}return i},e.serializeValue=function(e){var t=this;if(null==e)return e;var n=typeof e;if("string"===n||"number"===n||"boolean"===n)return e;if(e instanceof Date)return{__type:"Date",value:e.toISOString()};if(Array.isArray(e))return e.map((function(e){return t.serializeValue(e)}));if(e instanceof Map)return{__type:"Map",value:Array.from(e.entries())};if(e instanceof Set)return{__type:"Set",value:Array.from(e)};if("object"===n){var i={};for(var r in e)e.hasOwnProperty(r)&&(i[r]=this.serializeValue(e[r]));return i}},e.deserializeValue=function(e){var t=this;if(null==e)return e;var n=typeof e;if("string"===n||"number"===n||"boolean"===n)return e;if("object"===n&&e.__type)switch(e.__type){case"Date":return new Date(e.value);case"Map":return new Map(e.value);case"Set":return new Set(e.value)}if(Array.isArray(e))return e.map((function(e){return t.deserializeValue(e)}));if("object"===n){var i={};for(var r in e)e.hasOwnProperty(r)&&(i[r]=this.deserializeValue(e[r]));return i}return e},e.validateVersion=function(e,t){return e.version===t},e.getSerializationInfo=function(e){var t=Xe(e);if(!t)return{type:"unknown",version:0,fields:[],ignoredFields:[],isSerializable:!1};var n="function"==typeof e?e:e.constructor;return{type:t.options.typeId||W(n),version:t.options.version,fields:Array.from(t.fields.keys()).map((function(e){return"symbol"==typeof e?e.toString():e})),ignoredFields:Array.from(t.ignoredFields).map((function(e){return"symbol"==typeof e?e.toString():e})),isSerializable:!0}},e}(),tt=function(){function e(){}return e.serialize=function(e,t){void 0===t&&(t=!0);var n=et.serializeComponents(Array.from(e.components)),i={id:e.id,name:e.name,tag:e.tag,active:e.active,enabled:e.enabled,updateOrder:e.updateOrder,components:n,children:[]};if(e.parent&&(i.parentId=e.parent.id),t)for(var r,s=o(e.children);!(r=s()).done;){var a=r.value;i.children.push(this.serialize(a,!0))}return i},e.deserialize=function(e,t,n,i,r){void 0===i&&(i=!1);var s=i?e.id:n(),a=new Ce(e.name,s);r&&(a.scene=r),a.tag=e.tag,a.active=e.active,a.enabled=e.enabled,a.updateOrder=e.updateOrder;for(var c,u=o(et.deserializeComponents(e.components,t));!(c=u()).done;){var h=c.value;a.addComponent(h)}for(var l,f=o(e.children);!(l=f()).done;){var d=l.value,p=this.deserialize(d,t,n,i,r);a.addChild(p)}return a},e.serializeEntities=function(e,t){void 0===t&&(t=!0);for(var n,i=[],r=o(e);!(n=r()).done;){var s=n.value;s.parent&&t||i.push(this.serialize(s,t))}return i},e.deserializeEntities=function(e,t,n,i,r){void 0===i&&(i=!1);for(var s,a=[],c=o(e);!(s=c()).done;){var u=s.value,h=this.deserialize(u,t,n,i,r);a.push(h)}return a},e.clone=function(e,t,n){var i=this.serialize(e,!0);return this.deserialize(i,t,n,!1)},e}();const nt=new TextEncoder;function it(e,t,n){e.length>50?function(e,t,n){nt.encodeInto(e,t.subarray(n))}(e,t,n):function(e,t,n){const i=e.length;let r=n,s=0;for(;s<i;){let n=e.charCodeAt(s++);if(4294967168&n){if(4294965248&n){if(n>=55296&&n<=56319&&s<i){const t=e.charCodeAt(s);56320==(64512&t)&&(++s,n=((1023&n)<<10)+(1023&t)+65536)}4294901760&n?(t[r++]=n>>18&7|240,t[r++]=n>>12&63|128,t[r++]=n>>6&63|128):(t[r++]=n>>12&15|224,t[r++]=n>>6&63|128)}else t[r++]=n>>6&31|192;t[r++]=63&n|128}else t[r++]=n}}(e,t,n)}function rt(e,t,n){let i=t;const r=i+n,s=[];let o="";for(;i<r;){const t=e[i++];if(128&t)if(192==(224&t)){const n=63&e[i++];s.push((31&t)<<6|n)}else if(224==(240&t)){const n=63&e[i++],r=63&e[i++];s.push((31&t)<<12|n<<6|r)}else if(240==(248&t)){let n=(7&t)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++];n>65535&&(n-=65536,s.push(n>>>10&1023|55296),n=56320|1023&n),s.push(n)}else s.push(t);else s.push(t);s.length>=4096&&(o+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(o+=String.fromCharCode(...s)),o}const st=new TextDecoder;function ot(e,t,n){return n>200?function(e,t,n){const i=e.subarray(t,t+n);return st.decode(i)}(e,t,n):rt(e,t,n)}class at{constructor(e,t){this.type=e,this.data=t}}class ct extends Error{constructor(e){super(e);const t=Object.create(ct.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:ct.name})}}const ut=4294967295;function ht(e,t,n){const i=Math.floor(n/4294967296),r=n;e.setUint32(t,i),e.setUint32(t+4,r)}function lt(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}const ft={type:-1,encode:function(e){if(e instanceof Date){return function({sec:e,nsec:t}){if(e>=0&&t>=0&&e<=17179869183){if(0===t&&e<=4294967295){const t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e),t}{const n=e/4294967296,i=4294967295&e,r=new Uint8Array(8),s=new DataView(r.buffer);return s.setUint32(0,t<<2|3&n),s.setUint32(4,i),r}}{const n=new Uint8Array(12),i=new DataView(n.buffer);return i.setUint32(0,t),ht(i,4,e),n}}(function(e){const t=e.getTime(),n=Math.floor(t/1e3),i=1e6*(t-1e3*n),r=Math.floor(i/1e9);return{sec:n+r,nsec:i-1e9*r}}(e))}return null},decode:function(e){const t=function(e){const t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:{const e=t.getUint32(0);return{sec:4294967296*(3&e)+t.getUint32(4),nsec:e>>>2}}case 12:return{sec:lt(t,4),nsec:t.getUint32(0)};default:throw new ct(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${e.length}`)}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}};class dt{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(ft)}register({type:e,encode:t,decode:n}){if(e>=0)this.encoders[e]=t,this.decoders[e]=n;else{const i=-1-e;this.builtInEncoders[i]=t,this.builtInDecoders[i]=n}}tryToEncode(e,t){for(let n=0;n<this.builtInEncoders.length;n++){const i=this.builtInEncoders[n];if(null!=i){const r=i(e,t);if(null!=r){return new at(-1-n,r)}}}for(let n=0;n<this.encoders.length;n++){const i=this.encoders[n];if(null!=i){const r=i(e,t);if(null!=r){return new at(n,r)}}}return e instanceof at?e:null}decode(e,t,n){const i=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return i?i(e,t,n):new at(t,e)}}function pt(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):function(e){return e instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer}(e)?new Uint8Array(e):Uint8Array.from(e)}dt.defaultCodec=new dt;class yt{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??dt.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??100,this.initialBufferSize=e?.initialBufferSize??2048,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new yt({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered){return this.clone().encodeSharedRef(e)}try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered){return this.clone().encode(e)}try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.useBigInt64&&"bigint"==typeof e?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){const t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(2*t)}resizeBuffer(e){const t=new ArrayBuffer(e),n=new Uint8Array(t),i=new DataView(t);n.set(this.bytes),this.view=i,this.bytes=n}encodeNil(){this.writeU8(192)}encodeBoolean(e){!1===e?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error(`Too long string: ${e} bytes in UTF-8`);this.writeU8(219),this.writeU32(e)}}encodeString(e){const t=function(e){const t=e.length;let n=0,i=0;for(;i<t;){let r=e.charCodeAt(i++);if(4294967168&r)if(4294965248&r){if(r>=55296&&r<=56319&&i<t){const t=e.charCodeAt(i);56320==(64512&t)&&(++i,r=((1023&r)<<10)+(1023&t)+65536)}n+=4294901760&r?4:3}else n+=2;else n++}return n}(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),it(e,this.bytes,this.pos),this.pos+=t}encodeObject(e,t){const n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`);this.encodeMap(e,t)}}encodeBinary(e){const t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error(`Too large binary: ${t}`);this.writeU8(198),this.writeU32(t)}const n=pt(e);this.writeU8a(n)}encodeArray(e,t){const n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error(`Too large array: ${n}`);this.writeU8(221),this.writeU32(n)}for(const n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let n=0;for(const i of t)void 0!==e[i]&&n++;return n}encodeMap(e,t){const n=Object.keys(e);this.sortKeys&&n.sort();const i=this.ignoreUndefined?this.countWithoutUndefined(e,n):n.length;if(i<16)this.writeU8(128+i);else if(i<65536)this.writeU8(222),this.writeU16(i);else{if(!(i<4294967296))throw new Error(`Too large map object: ${i}`);this.writeU8(223),this.writeU32(i)}for(const i of n){const n=e[i];this.ignoreUndefined&&void 0===n||(this.encodeString(i),this.doEncode(n,t+1))}}encodeExtension(e){if("function"==typeof e.data){const t=e.data(this.pos+6),n=t.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);return this.writeU8(201),this.writeU32(n),this.writeI8(e.type),void this.writeU8a(t)}const t=e.data.length;if(1===t)this.writeU8(212);else if(2===t)this.writeU8(213);else if(4===t)this.writeU8(214);else if(8===t)this.writeU8(215);else if(16===t)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else{if(!(t<4294967296))throw new Error(`Too large extension object: ${t}`);this.writeU8(201),this.writeU32(t)}this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){const t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),function(e,t,n){const i=n/4294967296,r=n;e.setUint32(t,i),e.setUint32(t+4,r)}(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),ht(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}}function gt(e,t){return new yt(t).encodeSharedRef(e)}function mt(e){return`${e<0?"-":""}0x${Math.abs(e).toString(16).padStart(2,"0")}`}const vt="array",_t="map_key",St="map_value",Ct=e=>{if("string"==typeof e||"number"==typeof e)return e;throw new ct("The type of key must be string or number but "+typeof e)};class wt{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){const t=this.getUninitializedStateFromPool();t.type=vt,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){const t=this.getUninitializedStateFromPool();t.type=_t,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){const e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===vt){const t=e;t.size=0,t.array=void 0,t.position=0,t.type=void 0}if(e.type===_t||e.type===St){const t=e;t.size=0,t.map=void 0,t.readCount=0,t.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}const Et=new DataView(new ArrayBuffer(0)),bt=new Uint8Array(Et.buffer);try{Et.getInt8(0)}catch(e){if(!(e instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}const At=new RangeError("Insufficient data"),Tt=new class{constructor(e=16,t=16){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let e=0;e<this.maxKeyLength;e++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,n){const i=this.caches[n-1];e:for(const r of i){const i=r.bytes;for(let r=0;r<n;r++)if(i[r]!==e[t+r])continue e;return r.str}return null}store(e,t){const n=this.caches[e.length-1],i={bytes:e,str:t};n.length>=this.maxLengthPerKey?n[Math.random()*n.length|0]=i:n.push(i)}decode(e,t,n){const i=this.find(e,t,n);if(null!=i)return this.hit++,i;this.miss++;const r=rt(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,r),r}};class Mt{constructor(e){this.totalPos=0,this.pos=0,this.view=Et,this.bytes=bt,this.headByte=-1,this.stack=new wt,this.entered=!1,this.extensionCodec=e?.extensionCodec??dt.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??ut,this.maxBinLength=e?.maxBinLength??ut,this.maxArrayLength=e?.maxArrayLength??ut,this.maxMapLength=e?.maxMapLength??ut,this.maxExtLength=e?.maxExtLength??ut,this.keyDecoder=void 0!==e?.keyDecoder?e.keyDecoder:Tt,this.mapKeyConverter=e?.mapKeyConverter??Ct}clone(){return new Mt({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=-1,this.stack.reset()}setBuffer(e){const t=pt(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(-1!==this.headByte||this.hasRemaining(1)){const t=this.bytes.subarray(this.pos),n=pt(e),i=new Uint8Array(t.length+n.length);i.set(t),i.set(n,t.length),this.setBuffer(i)}else this.setBuffer(e)}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){const{view:t,pos:n}=this;return new RangeError(`Extra ${t.byteLength-n} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered){return this.clone().decode(e)}try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);const t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){const t=this.clone();yield*t.decodeMulti(e)}else try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered){return this.clone().decodeAsync(e)}try{this.entered=!0;let t,n=!1;for await(const i of e){if(n)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(i);try{t=this.doDecodeSync(),n=!0}catch(e){if(!(e instanceof RangeError))throw e}this.totalPos+=this.pos}if(n){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return t}const{headByte:i,pos:r,totalPos:s}=this;throw new RangeError(`Insufficient data in parsing ${mt(i)} at ${s} (${r} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){const n=this.clone();yield*n.decodeMultiAsync(e,t)}else try{this.entered=!0;let n=t,i=-1;for await(const r of e){if(t&&0===i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(r),n&&(i=this.readArraySize(),n=!1,this.complete());try{for(;yield this.doDecodeSync(),0!==--i;);}catch(e){if(!(e instanceof RangeError))throw e}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){const e=this.readHeadByte();let t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){const n=e-128;if(0!==n){this.pushMapState(n),this.complete();continue e}t={}}else if(e<160){const n=e-144;if(0!==n){this.pushArrayState(n),this.complete();continue e}t=[]}else{const n=e-160;t=this.decodeString(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.useBigInt64?this.readU64AsBigInt():this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.useBigInt64?this.readI64AsBigInt():this.readI64();else if(217===e){const e=this.lookU8();t=this.decodeString(e,1)}else if(218===e){const e=this.lookU16();t=this.decodeString(e,2)}else if(219===e){const e=this.lookU32();t=this.decodeString(e,4)}else if(220===e){const e=this.readU16();if(0!==e){this.pushArrayState(e),this.complete();continue e}t=[]}else if(221===e){const e=this.readU32();if(0!==e){this.pushArrayState(e),this.complete();continue e}t=[]}else if(222===e){const e=this.readU16();if(0!==e){this.pushMapState(e),this.complete();continue e}t={}}else if(223===e){const e=this.readU32();if(0!==e){this.pushMapState(e),this.complete();continue e}t={}}else if(196===e){const e=this.lookU8();t=this.decodeBinary(e,1)}else if(197===e){const e=this.lookU16();t=this.decodeBinary(e,2)}else if(198===e){const e=this.lookU32();t=this.decodeBinary(e,4)}else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e){const e=this.lookU8();t=this.decodeExtension(e,1)}else if(200===e){const e=this.lookU16();t=this.decodeExtension(e,2)}else{if(201!==e)throw new ct(`Unrecognized type byte: ${mt(e)}`);{const e=this.lookU32();t=this.decodeExtension(e,4)}}this.complete();const n=this.stack;for(;n.length>0;){const e=n.top();if(e.type===vt){if(e.array[e.position]=t,e.position++,e.position!==e.size)continue e;t=e.array,n.release(e)}else{if(e.type===_t){if("__proto__"===t)throw new ct("The key __proto__ is not allowed");e.key=this.mapKeyConverter(t),e.type=St;continue e}if(e.map[e.key]=t,e.readCount++,e.readCount!==e.size){e.key=null,e.type=_t;continue e}t=e.map,n.release(e)}}return t}}readHeadByte(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=-1}readArraySize(){const e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new ct(`Unrecognized array type byte: ${mt(e)}`)}}pushMapState(e){if(e>this.maxMapLength)throw new ct(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new ct(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new ct(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw At;const n=this.pos+t;let i;return i=this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?this.keyDecoder.decode(this.bytes,n,e):ot(this.bytes,n,e),this.pos+=t+e,i}stateIsMapKey(){if(this.stack.length>0){return this.stack.top().type===_t}return!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new ct(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw At;const n=this.pos+t,i=this.bytes.subarray(n,n+e);return this.pos+=t+e,i}decodeExtension(e,t){if(e>this.maxExtLength)throw new ct(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);const n=this.view.getInt8(this.pos+t),i=this.decodeBinary(e,t+1);return this.extensionCodec.decode(i,n,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){const e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){const e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){const e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){const e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){const e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){const e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){const e=(t=this.view,n=this.pos,4294967296*t.getUint32(n)+t.getUint32(n+4));var t,n;return this.pos+=8,e}readI64(){const e=lt(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){const e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){const e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){const e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){const e=this.view.getFloat64(this.pos);return this.pos+=8,e}}function xt(e,t){return new Mt(t).decode(e)}var It,kt=function(){function e(){}return e.serialize=function(e,t){var n=a({systems:!1,format:"json",pretty:!0,includeMetadata:!0},t),i=this.filterEntities(e,n),r=tt.serializeEntities(i,!0),s=this.buildComponentTypeRegistry(i),o=this.serializeSceneData(e.sceneData),c={name:e.name,version:this.SERIALIZATION_VERSION,entities:r,componentTypeRegistry:s};return o&&Object.keys(o).length>0&&(c.sceneData=o),n.includeMetadata&&(c.timestamp=Date.now(),c.metadata={entityCount:r.length,componentTypeCount:s.length,serializationOptions:n}),"json"===n.format?n.pretty?JSON.stringify(c,null,2):JSON.stringify(c):gt(c)},e.deserialize=function(e,t,n){var i,r=a({strategy:"replace",preserveIds:!1},n);try{i="string"==typeof t?JSON.parse(t):xt(t)}catch(e){throw new Error("Failed to parse save data: "+e)}r.migration&&i.version!==this.SERIALIZATION_VERSION&&(i=r.migration(i.version,this.SERIALIZATION_VERSION,i));var s=r.componentRegistry||this.getGlobalComponentRegistry();"replace"===r.strategy&&e.destroyAllEntities();for(var c,u=o(tt.deserializeEntities(i.entities,s,(function(){return e.identifierPool.checkOut()}),r.preserveIds||!1,e));!(c=u()).done;){var h=c.value;e.addEntity(h,!0),this.addChildrenRecursively(h,e)}e.querySystem.clearCache(),e.clearSystemEntityCaches(),i.sceneData&&this.deserializeSceneData(i.sceneData,e.sceneData)},e.addChildrenRecursively=function(e,t){for(var n,i=o(e.children);!(n=i()).done;){var r=n.value;t.addEntity(r,!0),this.addChildrenRecursively(r,t)}},e.serializeSceneData=function(e){for(var t,n={},i=o(e);!(t=i()).done;){var r=t.value,s=r[0],a=r[1];n[s]=this.serializeValue(a)}return n},e.deserializeSceneData=function(e,t){t.clear();for(var n=0,i=Object.entries(e);n<i.length;n++){var r=i[n],s=r[0],o=r[1];t.set(s,this.deserializeValue(o))}},e.serializeValue=function(e){var t=this;if(null==e)return e;var n=typeof e;if("string"===n||"number"===n||"boolean"===n)return e;if(e instanceof Date)return{__type:"Date",value:e.toISOString()};if(e instanceof Map)return{__type:"Map",value:Array.from(e.entries())};if(e instanceof Set)return{__type:"Set",value:Array.from(e)};if(Array.isArray(e))return e.map((function(e){return t.serializeValue(e)}));if("object"===n){var i={};for(var r in e)e.hasOwnProperty(r)&&(i[r]=this.serializeValue(e[r]));return i}},e.deserializeValue=function(e){var t=this;if(null==e)return e;var n=typeof e;if("string"===n||"number"===n||"boolean"===n)return e;if("object"===n&&e.__type)switch(e.__type){case"Date":return new Date(e.value);case"Map":return new Map(e.value);case"Set":return new Set(e.value)}if(Array.isArray(e))return e.map((function(e){return t.deserializeValue(e)}));if("object"===n){var i={};for(var r in e)e.hasOwnProperty(r)&&(i[r]=this.deserializeValue(e[r]));return i}return e},e.filterEntities=function(e,t){var n=Array.from(e.entities.buffer);if(t.components&&t.components.length>0){var i=new Set(t.components);return n.filter((function(e){return Array.from(e.components).some((function(e){return i.has(e.constructor)}))}))}return n},e.buildComponentTypeRegistry=function(e){for(var t,n=new Map,i=o(e);!(t=i()).done;)for(var r,s=o(t.value.components);!(r=s()).done;){var a=r.value,c=W(a.constructor),u=Xe(a);u&&!n.has(c)&&n.set(c,u.options.version)}return Array.from(n.entries()).map((function(e){return{typeName:e[0],version:e[1]}}))},e.getGlobalComponentRegistry=function(){return me.getAllComponentNames()},e.validate=function(e){var t=[];try{var n=JSON.parse(e);return n.version||t.push("Missing version field"),n.entities&&Array.isArray(n.entities)||t.push("Missing or invalid entities field"),n.componentTypeRegistry&&Array.isArray(n.componentTypeRegistry)||t.push("Missing or invalid componentTypeRegistry field"),{valid:0===t.length,version:n.version,errors:t.length>0?t:void 0}}catch(e){return{valid:!1,errors:["JSON parse error: "+e]}}},e.getInfo=function(e){try{var t,n=JSON.parse(e);return{name:n.name,version:n.version,timestamp:n.timestamp,entityCount:(null===(t=n.metadata)||void 0===t?void 0:t.entityCount)||n.entities.length,componentTypeCount:n.componentTypeRegistry.length}}catch(e){return null}},e}();kt.SERIALIZATION_VERSION=1,exports.ChangeOperation=void 0,(It=exports.ChangeOperation||(exports.ChangeOperation={})).EntityAdded="entity_added",It.EntityRemoved="entity_removed",It.EntityUpdated="entity_updated",It.ComponentAdded="component_added",It.ComponentRemoved="component_removed",It.ComponentUpdated="component_updated",It.SceneDataUpdated="scene_data_updated";var Dt=function(){function e(){}return e.createSnapshot=function(e,t){for(var n,i=a({deepComponentComparison:!0,trackSceneData:!0,compressSnapshot:!1},t),r={version:++this.snapshotVersion,entityIds:new Set,entities:new Map,components:new Map,sceneData:new Map},s=o(e.entities.buffer);!(n=s()).done;){var c,u=n.value;if(r.entityIds.add(u.id),r.entities.set(u.id,{name:u.name,tag:u.tag,active:u.active,enabled:u.enabled,updateOrder:u.updateOrder,parentId:null===(c=u.parent)||void 0===c?void 0:c.id}),i.deepComponentComparison){for(var h,l=new Map,f=o(u.components);!(h=f()).done;){var d=h.value,p=et.serialize(d);p&&l.set(p.type,JSON.stringify(p.data))}l.size>0&&r.components.set(u.id,l)}}if(i.trackSceneData)for(var y,g=o(e.sceneData);!(y=g()).done;){var m=y.value,v=m[0],_=m[1];r.sceneData.set(v,JSON.stringify(_))}return r},e.computeIncremental=function(e,t,n){for(var i,r=a({deepComponentComparison:!0,trackSceneData:!0},n),s={version:++this.snapshotVersion,timestamp:Date.now(),sceneName:e.name,baseVersion:t.version,entityChanges:[],componentChanges:[],sceneDataChanges:[]},c=new Set,u=o(e.entities.buffer);!(i=u()).done;){var h=i.value;if(c.add(h.id),t.entityIds.has(h.id)){var l,f,d=t.entities.get(h.id);if(d.name!==h.name||d.tag!==h.tag||d.active!==h.active||d.enabled!==h.enabled||d.updateOrder!==h.updateOrder||d.parentId!==(null===(l=h.parent)||void 0===l?void 0:l.id))s.entityChanges.push({operation:exports.ChangeOperation.EntityUpdated,entityId:h.id,entityData:{name:h.name,tag:h.tag,active:h.active,enabled:h.enabled,updateOrder:h.updateOrder,parentId:null===(f=h.parent)||void 0===f?void 0:f.id}});r.deepComponentComparison&&this.detectComponentChanges(h,t,s.componentChanges)}else{var p;s.entityChanges.push({operation:exports.ChangeOperation.EntityAdded,entityId:h.id,entityName:h.name,entityData:{id:h.id,name:h.name,tag:h.tag,active:h.active,enabled:h.enabled,updateOrder:h.updateOrder,parentId:null===(p=h.parent)||void 0===p?void 0:p.id,components:[],children:[]}});for(var y,g=o(h.components);!(y=g()).done;){var m=y.value,v=et.serialize(m);v&&s.componentChanges.push({operation:exports.ChangeOperation.ComponentAdded,entityId:h.id,componentType:v.type,componentData:v})}}}for(var _,S=o(t.entityIds);!(_=S()).done;){var C=_.value;c.has(C)||s.entityChanges.push({operation:exports.ChangeOperation.EntityRemoved,entityId:C})}return r.trackSceneData&&this.detectSceneDataChanges(e,t,s.sceneDataChanges),s},e.detectComponentChanges=function(e,t,n){for(var i,r=t.components.get(e.id),s=new Map,a=o(e.components);!(i=a()).done;){var c=i.value,u=et.serialize(c);u&&s.set(u.type,u)}for(var h,l=o(s);!(h=l()).done;){var f=h.value,d=f[0],p=f[1],y=JSON.stringify(p.data);r&&r.has(d)?r.get(d)!==y&&n.push({operation:exports.ChangeOperation.ComponentUpdated,entityId:e.id,componentType:d,componentData:p}):n.push({operation:exports.ChangeOperation.ComponentAdded,entityId:e.id,componentType:d,componentData:p})}if(r)for(var g,m=o(r.keys());!(g=m()).done;){var v=g.value;s.has(v)||n.push({operation:exports.ChangeOperation.ComponentRemoved,entityId:e.id,componentType:v})}},e.detectSceneDataChanges=function(e,t,n){for(var i,r=new Set,s=o(e.sceneData);!(i=s()).done;){var a=i.value,c=a[0],u=a[1];r.add(c);var h=JSON.stringify(u),l=t.sceneData.get(c);l&&l===h||n.push({operation:exports.ChangeOperation.SceneDataUpdated,key:c,value:u})}for(var f,d=o(t.sceneData.keys());!(f=d()).done;){var p=f.value;r.has(p)||n.push({operation:exports.ChangeOperation.SceneDataUpdated,key:p,value:void 0,deleted:!0})}},e.applyIncremental=function(e,t,n){for(var i,r=o(t.entityChanges);!(i=r()).done;){var s=i.value;switch(s.operation){case exports.ChangeOperation.EntityAdded:this.applyEntityAdded(e,s);break;case exports.ChangeOperation.EntityRemoved:this.applyEntityRemoved(e,s);break;case exports.ChangeOperation.EntityUpdated:this.applyEntityUpdated(e,s)}}for(var a,c=o(t.componentChanges);!(a=c()).done;){var u=a.value;switch(u.operation){case exports.ChangeOperation.ComponentAdded:this.applyComponentAdded(e,u,n);break;case exports.ChangeOperation.ComponentRemoved:this.applyComponentRemoved(e,u,n);break;case exports.ChangeOperation.ComponentUpdated:this.applyComponentUpdated(e,u,n)}}for(var h,l=o(t.sceneDataChanges);!(h=l()).done;){var f=h.value;f.deleted?e.sceneData.delete(f.key):e.sceneData.set(f.key,f.value)}},e.applyEntityAdded=function(e,t){var n,i;if(t.entityData){var r=new Ce(t.entityName||"Entity",t.entityId);r.tag=t.entityData.tag||0,r.active=null===(n=t.entityData.active)||void 0===n||n,r.enabled=null===(i=t.entityData.enabled)||void 0===i||i,r.updateOrder=t.entityData.updateOrder||0,e.addEntity(r)}},e.applyEntityRemoved=function(e,t){var n=e.entities.findEntityById(t.entityId);n&&n.destroy()},e.applyEntityUpdated=function(e,t){if(t.entityData){var n=e.entities.findEntityById(t.entityId);if(n)if(void 0!==t.entityData.name&&(n.name=t.entityData.name),void 0!==t.entityData.tag&&(n.tag=t.entityData.tag),void 0!==t.entityData.active&&(n.active=t.entityData.active),void 0!==t.entityData.enabled&&(n.enabled=t.entityData.enabled),void 0!==t.entityData.updateOrder&&(n.updateOrder=t.entityData.updateOrder),void 0!==t.entityData.parentId){var i=e.entities.findEntityById(t.entityData.parentId);i&&n.parent!==i&&(n.parent&&n.parent.removeChild(n),i.addChild(n))}else n.parent&&n.parent.removeChild(n)}},e.applyComponentAdded=function(e,t,n){if(t.componentData){var i=e.entities.findEntityById(t.entityId);if(i){var r=et.deserialize(t.componentData,n);r&&i.addComponent(r)}}},e.applyComponentRemoved=function(e,t,n){var i=e.entities.findEntityById(t.entityId);if(i){var r=n.get(t.componentType);r&&i.removeComponentByType(r)}},e.applyComponentUpdated=function(e,t,n){if(t.componentData){var i=e.entities.findEntityById(t.entityId);if(i){var r=n.get(t.componentType);if(r){i.removeComponentByType(r);var s=et.deserialize(t.componentData,n);s&&i.addComponent(s)}}}},e.serializeIncremental=function(e,t){var n=a({format:"json",pretty:!1},t);return"binary"===n.format?gt(e):n.pretty?JSON.stringify(e,null,2):JSON.stringify(e)},e.deserializeIncremental=function(e){return"string"==typeof e?JSON.parse(e):xt(e)},e.getIncrementalStats=function(e){return{totalChanges:e.entityChanges.length+e.componentChanges.length+e.sceneDataChanges.length,entityChanges:e.entityChanges.length,componentChanges:e.componentChanges.length,sceneDataChanges:e.sceneDataChanges.length,addedEntities:e.entityChanges.filter((function(e){return e.operation===exports.ChangeOperation.EntityAdded})).length,removedEntities:e.entityChanges.filter((function(e){return e.operation===exports.ChangeOperation.EntityRemoved})).length,updatedEntities:e.entityChanges.filter((function(e){return e.operation===exports.ChangeOperation.EntityUpdated})).length,addedComponents:e.componentChanges.filter((function(e){return e.operation===exports.ChangeOperation.ComponentAdded})).length,removedComponents:e.componentChanges.filter((function(e){return e.operation===exports.ChangeOperation.ComponentRemoved})).length,updatedComponents:e.componentChanges.filter((function(e){return e.operation===exports.ChangeOperation.ComponentUpdated})).length}},e.resetVersion=function(){this.snapshotVersion=0},e}();Dt.snapshotVersion=0;var Rt,Ot=Y("ServiceContainer");exports.ServiceLifetime=void 0,(Rt=exports.ServiceLifetime||(exports.ServiceLifetime={})).Singleton="singleton",Rt.Transient="transient";var zt=function(){function e(){this._services=new Map,this._resolving=new Set,this._updatableServices=[]}var t=e.prototype;return t.registerSingleton=function(e,t){this._services.has(e)?Ot.warn("Service "+e.name+" is already registered"):(this._services.set(e,{type:e,factory:t,lifetime:exports.ServiceLifetime.Singleton}),Ot.debug("Registered singleton service: "+e.name))},t.registerTransient=function(e,t){this._services.has(e)?Ot.warn("Service "+e.name+" is already registered"):(this._services.set(e,{type:e,factory:t,lifetime:exports.ServiceLifetime.Transient}),Ot.debug("Registered transient service: "+e.name))},t.registerInstance=function(e,t){if(this._services.has(e))Ot.warn("Service "+e.name+" is already registered");else{if(this._services.set(e,{type:e,instance:t,lifetime:exports.ServiceLifetime.Singleton}),D(e)){var n,i=R(e),r=null!==(n=null==i?void 0:i.priority)&&void 0!==n?n:0;this._updatableServices.push({instance:t,priority:r}),this._updatableServices.sort((function(e,t){return e.priority-t.priority})),Ot.debug("Service "+e.name+" is updatable (priority: "+r+"), added to update list")}Ot.debug("Registered service instance: "+e.name)}},t.resolve=function(e){var t=this._services.get(e);if(!t)throw new Error("Service "+e.name+" is not registered");if(this._resolving.has(e)){var n=Array.from(this._resolving).map((function(e){return e.name})).join(" -> ");throw new Error("Circular dependency detected: "+n+" -> "+e.name)}if(t.lifetime===exports.ServiceLifetime.Singleton&&t.instance)return t.instance;this._resolving.add(e);try{var i;if(i=t.factory?t.factory(this):new t.type,t.lifetime===exports.ServiceLifetime.Singleton&&(t.instance=i,D(t.type))){var r,s=R(t.type),o=null!==(r=null==s?void 0:s.priority)&&void 0!==r?r:0;this._updatableServices.push({instance:i,priority:o}),this._updatableServices.sort((function(e,t){return e.priority-t.priority})),Ot.debug("Service "+e.name+" is updatable (priority: "+o+"), added to update list")}return i}finally{this._resolving.delete(e)}},t.tryResolve=function(e){try{return this.resolve(e)}catch(e){return null}},t.isRegistered=function(e){return this._services.has(e)},t.unregister=function(e){var t=this._services.get(e);if(!t)return!1;if(t.instance){var n=this._updatableServices.findIndex((function(e){return e.instance===t.instance}));-1!==n&&this._updatableServices.splice(n,1),t.instance.dispose()}return this._services.delete(e),Ot.debug("Unregistered service: "+e.name),!0},t.clear=function(){for(var e,t=o(this._services);!(e=t()).done;){var n=e.value[1];n.instance&&n.instance.dispose()}this._services.clear(),this._updatableServices=[],Ot.debug("Cleared all services")},t.getRegisteredServices=function(){return Array.from(this._services.keys())},t.updateAll=function(e){for(var t,n=o(this._updatableServices);!(t=n()).done;){t.value.instance.update(e)}},t.getUpdatableCount=function(){return this._updatableServices.length},t.getAll=function(){for(var e,t=[],n=o(this._services.values());!(e=n()).done;){var i=e.value;i.instance&&t.push(i.instance)}return t},e}(),Bt=function(){function e(e){var t=this;this.name="",this.sceneData=new Map,this._performanceMonitor=null,this._didSceneBegin=!1,this.entities=new Ee(this),this.identifierPool=new be,this.componentStorageManager=new _e,this.querySystem=new We,this.eventSystem=new He,this.referenceTracker=new X,this._services=new zt,this.logger=Y("Scene"),null!=e&&e.name&&(this.name=e.name),Ce.eventBus||(Ce.eventBus=new Ge(!1)),Ce.eventBus&&Ce.eventBus.onComponentAdded((function(e){t.eventSystem.emitSync("component:added",e)}))}var t=e.prototype;return t.getSystem=function(e){return this._services.tryResolve(e)},t.initialize=function(){},t.onStart=function(){},t.unload=function(){},t.begin=function(){this._didSceneBegin=!0,this.onStart()},t.end=function(){this._didSceneBegin=!1,this.entities.removeAllEntities(),this.querySystem.setEntities([]),this.componentStorageManager.clear(),this._services.clear(),this.unload()},t.update=function(){ue.getInstance().update(),this.entities.updateLists();for(var e,t=this.systems,n=o(t);!(e=n()).done;){var i=e.value;if(i.enabled)try{i.update()}catch(e){this.logger.error("Error in system "+i.constructor.name+".update():",e)}}for(var r,s=o(t);!(r=s()).done;){var a=r.value;if(a.enabled)try{a.lateUpdate()}catch(e){this.logger.error("Error in system "+a.constructor.name+".lateUpdate():",e)}}},t.createEntity=function(e){var t=new Ce(e,this.identifierPool.checkOut());return this.eventSystem.emitSync("entity:created",{entityName:e,entity:t,scene:this}),this.addEntity(t)},t.clearSystemEntityCaches=function(){for(var e,t=o(this.systems);!(e=t()).done;){e.value.clearEntityCache()}},t.addEntity=function(e,t){return void 0===t&&(t=!1),this.entities.add(e),e.scene=this,this.querySystem.addEntity(e,t),t||this.clearSystemEntityCaches(),this.eventSystem.emitSync("entity:added",{entity:e,scene:this}),e},t.createEntities=function(e,t){void 0===t&&(t="Entity");for(var n=[],i=0;i<e;i++){var r=new Ce(t+"_"+i,this.identifierPool.checkOut());r.scene=this,n.push(r)}for(var s=0,o=n;s<o.length;s++){var a=o[s];this.entities.add(a)}return this.querySystem.addEntitiesUnchecked(n),this.eventSystem.emitSync("entities:batch_added",{entities:n,scene:this,count:e}),n},t.destroyEntities=function(e){if(0!==e.length){for(var t,n=o(e);!(t=n()).done;){t.value._isDestroyed=!0}for(var i,r=o(e);!(i=r()).done;){i.value.removeAllComponents()}for(var s,a=o(e);!(s=a()).done;){var c=s.value;this.entities.remove(c),this.querySystem.removeEntity(c)}this.querySystem.clearCache(),this.clearSystemEntityCaches()}},t.destroyAllEntities=function(){this.entities.removeAllEntities(),this.querySystem.setEntities([])},t.findEntity=function(e){return this.entities.findEntity(e)},t.findEntityById=function(e){return this.entities.findEntityById(e)},t.findEntitiesByTag=function(e){for(var t,n=[],i=o(this.entities.buffer);!(t=i()).done;){var r=t.value;r.tag===e&&n.push(r)}return n},t.getEntityByName=function(e){return this.findEntity(e)},t.getEntitiesByTag=function(e){return this.findEntitiesByTag(e)},t.queryAll=function(){var e;return(e=this.querySystem).queryAll.apply(e,arguments)},t.queryAny=function(){var e;return(e=this.querySystem).queryAny.apply(e,arguments)},t.queryNone=function(){var e;return(e=this.querySystem).queryNone.apply(e,arguments)},t.query=function(){return new Ye},t.addEntityProcessor=function(e){var t,n;if("function"==typeof e){if(n=e,this._services.isRegistered(n)){var i=this._services.resolve(n);return this.logger.debug("System "+n.name+" already registered, returning existing instance"),i}t=x(n)?I(n,this._services):new n}else if(n=(t=e).constructor,this._services.isRegistered(n)){var r=this._services.resolve(n);return r===t?(this.logger.debug("System "+n.name+" instance already registered, returning it"),t):(this.logger.warn("Attempting to register a different instance of "+n.name+", but type is already registered. Returning existing instance."),r)}t.scene=this,t.setPerformanceMonitor(this.performanceMonitor);var s=U(n);return void 0!==(null==s?void 0:s.updateOrder)&&t.setUpdateOrder(s.updateOrder),void 0!==(null==s?void 0:s.enabled)&&(t.enabled=s.enabled),this._services.registerInstance(n,t),k(t,this._services),t.initialize(),this.logger.debug("System "+n.name+" registered and initialized"),t},t.registerSystems=function(e){for(var t,n=[],i=o(e);!(t=i()).done;){var r=t.value,s=this.addEntityProcessor(r);n.push(s)}return n},t.addSystem=function(e){return this.addEntityProcessor(e)},t.removeEntityProcessor=function(e){var t=e.constructor;this._services.unregister(t),e.reset()},t.removeSystem=function(e){this.removeEntityProcessor(e)},t.getEntityProcessor=function(e){return this._services.tryResolve(e)},t.getStats=function(){return{entityCount:this.entities.count,processorCount:this.systems.length,componentStorageStats:this.componentStorageManager.getAllStats()}},t.getDebugInfo=function(){var e=this.systems;return{name:this.name||this.constructor.name,entityCount:this.entities.count,processorCount:e.length,isRunning:this._didSceneBegin,entities:this.entities.buffer.map((function(e){return{name:e.name,id:e.id,componentCount:e.components.length,componentTypes:e.components.map((function(e){return H(e)}))}})),processors:e.map((function(e){var t;return{name:j(e),updateOrder:e.updateOrder,entityCount:(null===(t=e._entities)||void 0===t?void 0:t.length)||0}})),componentStats:this.componentStorageManager.getAllStats()}},t.serialize=function(e){return kt.serialize(this,e)},t.deserialize=function(e,t){kt.deserialize(this,e,t)},t.createIncrementalSnapshot=function(e){this._incrementalBaseSnapshot=Dt.createSnapshot(this,e)},t.serializeIncremental=function(e){if(!this._incrementalBaseSnapshot)throw new Error("必须先调用 createIncrementalSnapshot() 创建基础快照");return Dt.computeIncremental(this,this._incrementalBaseSnapshot,e)},t.applyIncremental=function(e,t){var n="string"==typeof e||e instanceof Uint8Array?Dt.deserializeIncremental(e):e,i=t||me.getAllComponentNames();Dt.applyIncremental(this,n,i)},t.updateIncrementalSnapshot=function(e){this.createIncrementalSnapshot(e)},t.clearIncrementalSnapshot=function(){this._incrementalBaseSnapshot=void 0},t.hasIncrementalSnapshot=function(){return void 0!==this._incrementalBaseSnapshot},s(e,[{key:"systems",get:function(){for(var e,t=[],n=o(this._services.getAll());!(e=n()).done;){var i=e.value;i instanceof Te&&t.push(i)}return t.sort((function(e,t){return e.updateOrder-t.updateOrder})),t}},{key:"services",get:function(){return this._services}},{key:"performanceMonitor",get:function(){var e;this._performanceMonitor||(this._performanceMonitor=null!==(e=this._services.tryResolve(O))&&void 0!==e?e:new O);return this._performanceMonitor}}])}(),Pt=function(){function e(){this.scene=new Bt}var t=e.prototype;return t.named=function(e){return this.scene.name=e,this},t.withEntity=function(e){return this.scene.addEntity(e),this},t.withEntityBuilder=function(e){var t=e(new we(this.scene,this.scene.componentStorageManager)).build();return this.scene.addEntity(t),this},t.withEntities=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var s=r[i];this.scene.addEntity(s)}return this},t.withSystem=function(e){return this.scene.addSystem(e),this},t.withSystems=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++){var s=r[i];this.scene.addSystem(s)}return this},t.build=function(){return this.scene},e}(),Lt=function(){function e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];this.component=i(e,n)}var t=e.prototype;return t.set=function(e,t){return this.component[e]=t,this},t.configure=function(e){return e(this.component),this},t.setIf=function(e,t,n){return e&&(this.component[t]=n),this},t.build=function(){return this.component},e}(),Nt=function(){function e(e){this.entities=e}var t=e.prototype;return t.addComponent=function(e){for(var t,n=o(this.entities);!(t=n()).done;){t.value.addComponent(e)}return this},t.removeComponent=function(e){for(var t,n=o(this.entities);!(t=n()).done;){t.value.removeComponentByType(e)}return this},t.setActive=function(e){for(var t,n=o(this.entities);!(t=n()).done;){t.value.active=e}return this},t.setTag=function(e){for(var t,n=o(this.entities);!(t=n()).done;){t.value.tag=e}return this},t.forEach=function(e){return this.entities.forEach(e),this},t.filter=function(t){return new e(this.entities.filter(t))},t.toArray=function(){return this.entities.slice()},t.count=function(){return this.entities.length},e}(),Ut=function(){function e(e,t,n){this.scene=e,this.querySystem=t,this.eventSystem=n}var t=e.prototype;return t.createEntity=function(){return new we(this.scene,this.scene.componentStorageManager)},t.createScene=function(){return new Pt},t.createComponent=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return i(Lt,[e].concat(n))},t.query=function(){return new Fe(this.querySystem)},t.find=function(){var e;return(e=this.querySystem).queryAll.apply(e,arguments).entities},t.findFirst=function(){var e,t=(e=this.querySystem).queryAll.apply(e,arguments);return t.entities.length>0?t.entities[0]:null},t.findByName=function(e){return this.scene.findEntity(e)},t.findByTag=function(e){return this.scene.findEntitiesByTag(e)},t.emit=function(e,t){this.eventSystem.emitSync(e,t)},t.emitAsync=function(){var e=n(l().m((function e(t,n){return l().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,this.eventSystem.emit(t,n);case 1:return e.a(2)}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.on=function(e,t){return this.eventSystem.on(e,t)},t.once=function(e,t){return this.eventSystem.once(e,t)},t.off=function(e,t){this.eventSystem.off(e,t)},t.batch=function(e){return new Nt(e)},t.getStats=function(){return{entityCount:this.scene.entities.count,systemCount:this.scene.systems.length,componentStats:this.scene.componentStorageManager.getAllStats(),queryStats:this.querySystem.getStats(),eventStats:this.eventSystem.getStats()}},e}();function Wt(e,t,n){return new Ut(e,t,n)}var Ft,Ht=Y("World"),jt=function(){function e(e){void 0===e&&(e={}),this._scenes=new Map,this._activeScenes=new Set,this._globalSystems=[],this._isActive=!1,this._config=a({name:"World",debug:!1,maxScenes:10,autoCleanup:!0},e),this.name=this._config.name,this._createdAt=Date.now()}var t=e.prototype;return t.createScene=function(e,t){if(this._scenes.has(e))throw new Error("Scene ID '"+e+"' 已存在于World '"+this.name+"' 中");if(this._scenes.size>=this._config.maxScenes)throw new Error("World '"+this.name+"' 已达到最大Scene数量限制: "+this._config.maxScenes);var n=t||new Bt;return"id"in n&&(n.id=e),"name"in n&&!n.name&&(n.name=e),this._scenes.set(e,n),n.initialize(),n},t.removeScene=function(e){var t=this._scenes.get(e);return!!t&&(this._activeScenes.has(e)&&this.setSceneActive(e,!1),t.end(),this._scenes.delete(e),Ht.info("从World '"+this.name+"' 中移除Scene: "+e),!0)},t.getScene=function(e){return this._scenes.get(e)||null},t.getSceneIds=function(){return Array.from(this._scenes.keys())},t.getAllScenes=function(){return Array.from(this._scenes.values())},t.removeAllScenes=function(){for(var e=0,t=Array.from(this._scenes.keys());e<t.length;e++){var n=t[e];this.removeScene(n)}Ht.info("从World '"+this.name+"' 中移除所有Scene")},t.setSceneActive=function(e,t){var n=this._scenes.get(e);n?t?(this._activeScenes.add(e),n.begin&&n.begin(),Ht.debug("在World '"+this.name+"' 中激活Scene: "+e)):(this._activeScenes.delete(e),Ht.debug("在World '"+this.name+"' 中停用Scene: "+e)):Ht.warn("Scene '"+e+"' 不存在于World '"+this.name+"' 中")},t.isSceneActive=function(e){return this._activeScenes.has(e)},t.getActiveSceneCount=function(){return this._activeScenes.size},t.addGlobalSystem=function(e){return this._globalSystems.includes(e)||(this._globalSystems.push(e),e.initialize&&e.initialize(),Ht.debug("在World '"+this.name+"' 中添加全局System: "+e.name)),e},t.removeGlobalSystem=function(e){var t=this._globalSystems.indexOf(e);return-1!==t&&(this._globalSystems.splice(t,1),e.reset&&e.reset(),Ht.debug("从World '"+this.name+"' 中移除全局System: "+e.name),!0)},t.getGlobalSystem=function(e){for(var t,n=o(this._globalSystems);!(t=n()).done;){var i=t.value;if(i instanceof e)return i}return null},t.start=function(){if(!this._isActive){this._isActive=!0;for(var e,t=o(this._globalSystems);!(e=t()).done;){var n=e.value;n.initialize&&n.initialize()}Ht.info("启动World: "+this.name)}},t.stop=function(){if(this._isActive){for(var e,t=o(this._activeScenes);!(e=t()).done;){var n=e.value;this.setSceneActive(n,!1)}for(var i,r=o(this._globalSystems);!(i=r()).done;){var s=i.value;s.reset&&s.reset()}this._isActive=!1,Ht.info("停止World: "+this.name)}},t.updateGlobalSystems=function(){if(this._isActive)for(var e,t=o(this._globalSystems);!(e=t()).done;){var n=e.value;n.update&&n.update()}},t.updateScenes=function(){if(this._isActive){for(var e,t=o(this._activeScenes);!(e=t()).done;){var n=e.value,i=this._scenes.get(n);i&&i.update&&i.update()}this._config.autoCleanup&&this.shouldAutoCleanup()&&this.cleanup()}},t.destroy=function(){Ht.info("销毁World: "+this.name),this.stop();for(var e=0,t=Array.from(this._scenes.keys());e<t.length;e++){var n=t[e];this.removeScene(n)}for(var i,r=o(this._globalSystems);!(i=r()).done;){var s=i.value;s.destroy?s.destroy():s.reset&&s.reset()}this._globalSystems.length=0,this._scenes.clear(),this._activeScenes.clear()},t.getStatus=function(){var e=this;return{name:this.name,isActive:this._isActive,sceneCount:this._scenes.size,activeSceneCount:this._activeScenes.size,globalSystemCount:this._globalSystems.length,createdAt:this._createdAt,config:a({},this._config),scenes:Array.from(this._scenes.keys()).map((function(t){var n;return{id:t,isActive:e._activeScenes.has(t),name:(null===(n=e._scenes.get(t))||void 0===n?void 0:n.name)||t}}))}},t.getStats=function(){for(var e,t={totalEntities:0,totalSystems:this._globalSystems.length,memoryUsage:0,performance:{averageUpdateTime:0,maxUpdateTime:0}},n=o(this._scenes.values());!(e=n()).done;){var i=e.value;i.entities&&(t.totalEntities+=i.entities.count),i.systems&&(t.totalSystems+=i.systems.length)}return t},t.shouldAutoCleanup=function(){for(var e,t=Date.now(),n=o(this._scenes);!(e=n()).done;){var i=e.value,r=i[0],s=i[1];if(!this._activeScenes.has(r)&&s.entities&&0===s.entities.count&&t-this._createdAt>3e5)return!0}return!1},t.cleanup=function(){for(var e=Array.from(this._scenes.keys()),t=Date.now(),n=0,i=e;n<i.length;n++){var r=i[n],s=this._scenes.get(r);s&&!this._activeScenes.has(r)&&s.entities&&0===s.entities.count&&t-this._createdAt>3e5&&(this.removeScene(r),Ht.debug("自动清理空Scene: "+r+" from World "+this.name))}},s(e,[{key:"isActive",get:function(){return this._isActive}},{key:"sceneCount",get:function(){return this._scenes.size}},{key:"createdAt",get:function(){return this._createdAt}}])}(),qt=function(){function e(e){this._nextScene=null,this._ecsAPI=null,this._logger=Y("SceneManager"),this._performanceMonitor=null,this._defaultWorld=new jt({name:"__default__"}),this._defaultWorld.start(),this._performanceMonitor=e||null}var t=e.prototype;return t.setSceneChangedCallback=function(e){this._onSceneChangedCallback=e},t.setScene=function(t){return this._defaultWorld.removeAllScenes(),this._performanceMonitor&&t.services.registerInstance(O,this._performanceMonitor),this._defaultWorld.createScene(e.DEFAULT_SCENE_ID,t),this._defaultWorld.setSceneActive(e.DEFAULT_SCENE_ID,!0),t.querySystem&&t.eventSystem?this._ecsAPI=Wt(t,t.querySystem,t.eventSystem):this._ecsAPI=null,_.sceneChanged(),this._onSceneChangedCallback&&this._onSceneChangedCallback(),this._logger.info("Scene changed to: "+t.name),t},t.loadScene=function(e){this._nextScene=e,this._logger.info("Scheduled scene load: "+e.name)},t.update=function(){this._nextScene&&(this.setScene(this._nextScene),this._nextScene=null),this._defaultWorld.updateGlobalSystems(),this._defaultWorld.updateScenes()},t.destroy=function(){this._logger.info("SceneManager destroying"),this._defaultWorld.destroy(),this._nextScene=null,this._ecsAPI=null,this._logger.info("SceneManager destroyed")},t.dispose=function(){this.destroy()},s(e,[{key:"currentScene",get:function(){return this._defaultWorld.getScene(e.DEFAULT_SCENE_ID)}},{key:"api",get:function(){return this._ecsAPI}},{key:"hasScene",get:function(){return null!==this._defaultWorld.getScene(e.DEFAULT_SCENE_ID)}},{key:"hasPendingScene",get:function(){return null!==this._nextScene}}])}();qt.DEFAULT_SCENE_ID="__main__",exports.DebugConfigService=function(){function e(){this._config={enabled:!1,websocketUrl:"",debugFrameRate:30,autoReconnect:!0,channels:{entities:!0,systems:!0,performance:!0,components:!0,scenes:!0}}}var t=e.prototype;return t.setConfig=function(e){this._config=e},t.getConfig=function(){return this._config},t.isEnabled=function(){return this._config.enabled},t.dispose=function(){},e}(),exports.DebugConfigService=g([A(),v("design:paramtypes",[])],exports.DebugConfigService),exports.DebugManager=function(){function e(e,t,n){this.frameCounter=0,this.lastSendTime=0,this.isRunning=!1,this.originalConsole={log:console.log.bind(console),debug:console.debug.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)},this.config=n.getConfig(),this.sceneManager=e,this.performanceMonitor=t,this.entityCollector=new se,this.systemCollector=new oe,this.performanceCollector=new ae,this.componentCollector=new he,this.sceneCollector=new fe,this.webSocketManager=new de(this.config.websocketUrl,!1!==this.config.autoReconnect),this.webSocketManager.setMessageHandler(this.handleMessage.bind(this));var i=this.config.debugFrameRate||30;this.sendInterval=1e3/i,this.interceptConsole(),this.start()}var t=e.prototype;return t.start=function(){this.isRunning||(this.isRunning=!0,this.connectWebSocket())},t.stop=function(){this.isRunning&&(this.isRunning=!1,this.webSocketManager.disconnect())},t.interceptConsole=function(){var e=this;console.log=function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];e.sendLog("info",e.formatLogMessage(i)),(t=e.originalConsole).log.apply(t,i)},console.debug=function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];e.sendLog("debug",e.formatLogMessage(i)),(t=e.originalConsole).debug.apply(t,i)},console.info=function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];e.sendLog("info",e.formatLogMessage(i)),(t=e.originalConsole).info.apply(t,i)},console.warn=function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];e.sendLog("warn",e.formatLogMessage(i)),(t=e.originalConsole).warn.apply(t,i)},console.error=function(){for(var t,n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];e.sendLog("error",e.formatLogMessage(i)),(t=e.originalConsole).error.apply(t,i)}},t.formatLogMessage=function(e){var t=this;return e.map((function(e){if("string"==typeof e)return e;if(e instanceof Error)return e.name+": "+e.message;if(null===e)return"null";if(void 0===e)return"undefined";if("object"==typeof e)try{return t.safeStringify(e,6)}catch(t){return Object.prototype.toString.call(e)}return String(e)})).join(" ")},t.safeStringify=function(e,t){void 0===t&&(t=6);var n=new WeakSet,i=function(e,r){if(null===e)return null;if(void 0!==e){if("object"!=typeof e)return e;if(r>=t)return"[Max Depth Reached]";if(n.has(e))return"[Circular]";if(n.add(e),Array.isArray(e)){var s=e.map((function(e){return i(e,r+1)}));return n.delete(e),s}var o={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(o[a]=i(e[a],r+1));return n.delete(e),o}};return JSON.stringify(i(e,0))},t.sendLog=function(e,t){if(this.webSocketManager.getConnectionStatus())try{this.webSocketManager.send({type:"log",data:{level:e,message:t,timestamp:(new Date).toISOString()}})}catch(e){}},t.updateConfig=function(e){this.config=e;var t=e.debugFrameRate||30;this.sendInterval=1e3/t,this.webSocketManager&&e.websocketUrl&&(this.webSocketManager.disconnect(),this.webSocketManager=new de(e.websocketUrl,!1!==e.autoReconnect),this.webSocketManager.setMessageHandler(this.handleMessage.bind(this)),this.connectWebSocket())},t.update=function(e){if(this.isRunning&&this.config.enabled){this.frameCounter++;var t=Date.now();t-this.lastSendTime>=this.sendInterval&&(this.sendDebugData(),this.lastSendTime=t)}},t.onSceneChanged=function(){this.isRunning&&this.config.enabled&&this.sendDebugData()},t.handleMessage=function(e){try{switch(e.type){case"capture_memory_snapshot":this.handleMemorySnapshotRequest();break;case"config_update":e.config&&this.updateConfig(a({},this.config,e.config));break;case"expand_lazy_object":this.handleExpandLazyObjectRequest(e);break;case"get_component_properties":this.handleGetComponentPropertiesRequest(e);break;case"get_raw_entity_list":this.handleGetRawEntityListRequest(e);break;case"get_entity_details":this.handleGetEntityDetailsRequest(e);break;case"ping":this.webSocketManager.send({type:"pong",timestamp:Date.now()})}}catch(t){e.requestId&&this.webSocketManager.send({type:"error_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}},t.handleExpandLazyObjectRequest=function(e){try{var t=e.entityId,n=e.componentIndex,i=e.propertyPath,r=e.requestId;if(void 0===t||void 0===n||!i)return void this.webSocketManager.send({type:"expand_lazy_object_response",requestId:r,error:"缺少必要参数"});var s=this.sceneManager.currentScene,o=this.entityCollector.expandLazyObject(t,n,i,s);this.webSocketManager.send({type:"expand_lazy_object_response",requestId:r,data:o})}catch(t){this.webSocketManager.send({type:"expand_lazy_object_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}},t.handleGetComponentPropertiesRequest=function(e){try{var t=e.entityId,n=e.componentIndex,i=e.requestId;if(void 0===t||void 0===n)return void this.webSocketManager.send({type:"get_component_properties_response",requestId:i,error:"缺少必要参数"});var r=this.sceneManager.currentScene,s=this.entityCollector.getComponentProperties(t,n,r);this.webSocketManager.send({type:"get_component_properties_response",requestId:i,data:s})}catch(t){this.webSocketManager.send({type:"get_component_properties_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}},t.handleGetRawEntityListRequest=function(e){try{var t=e.requestId,n=this.sceneManager.currentScene,i=this.entityCollector.getRawEntityList(n);this.webSocketManager.send({type:"get_raw_entity_list_response",requestId:t,data:i})}catch(t){this.webSocketManager.send({type:"get_raw_entity_list_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}},t.handleGetEntityDetailsRequest=function(e){try{var t=e.entityId,n=e.requestId;if(void 0===t)return void this.webSocketManager.send({type:"get_entity_details_response",requestId:n,error:"缺少实体ID参数"});var i=this.sceneManager.currentScene,r=this.entityCollector.getEntityDetails(t,i);this.webSocketManager.send({type:"get_entity_details_response",requestId:n,data:r})}catch(t){this.webSocketManager.send({type:"get_entity_details_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}},t.handleMemorySnapshotRequest=function(){try{var e=this.captureMemorySnapshot();this.webSocketManager.send({type:"memory_snapshot_response",data:e})}catch(e){this.webSocketManager.send({type:"memory_snapshot_error",error:e instanceof Error?e.message:"内存快照捕获失败"})}},t.captureMemorySnapshot=function(){var e=Date.now(),t=this.collectBaseMemoryInfo(),n=this.sceneManager.currentScene,i=this.entityCollector.collectEntityDataWithMemory(n),r=null!=n&&n.entities?this.collectComponentMemoryStats(n.entities):{totalMemory:0,componentTypes:0,totalInstances:0,breakdown:[]},s=this.collectSystemMemoryStats(),o=this.collectPoolMemoryStats(),a=this.collectPerformanceStats(),c=i.entitiesPerArchetype.reduce((function(e,t){return e+t.memory}),0);return{timestamp:e,version:"2.0",summary:{totalEntities:i.totalEntities,totalMemoryUsage:t.usedMemory,totalMemoryLimit:t.totalMemory,memoryUtilization:t.usedMemory/t.totalMemory*100,gcCollections:t.gcCollections,entityMemory:c,componentMemory:r.totalMemory,systemMemory:s.totalMemory,poolMemory:o.totalMemory},baseMemory:t,entities:{totalMemory:c,entityCount:i.totalEntities,archetypes:i.entitiesPerArchetype,largestEntities:i.topEntitiesByComponents},components:r,systems:s,pools:o,performance:a}},t.collectBaseMemoryInfo=function(){var e={totalMemory:0,usedMemory:0,freeMemory:0,gcCollections:0,heapInfo:null,detailedMemory:void 0};try{var t=performance;if(t.memory){var n=t.memory;e.totalMemory=n.jsHeapSizeLimit||536870912,e.usedMemory=n.usedJSHeapSize||0,e.freeMemory=e.totalMemory-e.usedMemory,e.heapInfo={totalJSHeapSize:n.totalJSHeapSize||0,usedJSHeapSize:n.usedJSHeapSize||0,jsHeapSizeLimit:n.jsHeapSizeLimit||0}}else e.totalMemory=536870912,e.freeMemory=536870912;t.measureUserAgentSpecificMemory&&t.measureUserAgentSpecificMemory().then((function(t){e.detailedMemory=t})).catch((function(){}))}catch(e){}return e},t.collectComponentMemoryStats=function(e){for(var t,n=new Map,i=0,r=new Map,s=o(e.buffer);!(t=s()).done;){var a=t.value;if(a&&!a.destroyed&&a.components)for(var c,u=o(a.components);!(c=u()).done;){var h=H(c.value);r.set(h,(r.get(h)||0)+1)}}for(var l,f=o(r.entries());!(l=f()).done;){var d=l.value,p=d[0],y=d[1],g=this.componentCollector.calculateDetailedComponentMemory(p),m=g*y;i+=m;for(var v,_=[],S=0,C=o(e.buffer);!(v=C()).done;){var w=v.value;if(w&&!w.destroyed&&w.components){for(var E,b=o(w.components);!(E=b()).done;){if(H(E.value)===p&&(_.push({entityId:w.id,entityName:w.name||"Entity_"+w.id,memory:g}),++S>=100))break}if(S>=100)break}}n.set(p,{count:y,totalMemory:m,instances:_.slice(0,10)})}var A=Array.from(n.entries()).map((function(e){var t=e[0],n=e[1];return{typeName:t,instanceCount:n.count,totalMemory:n.totalMemory,averageMemory:n.totalMemory/n.count,percentage:i>0?n.totalMemory/i*100:0,largestInstances:n.instances.sort((function(e,t){return t.memory-e.memory})).slice(0,3)}})).sort((function(e,t){return t.totalMemory-e.totalMemory}));return{totalMemory:i,componentTypes:n.size,totalInstances:Array.from(n.values()).reduce((function(e,t){return e+t.count}),0),breakdown:A}},t.collectSystemMemoryStats=function(){var e=this.sceneManager.currentScene,t=0,n=[];try{var i=null==e?void 0:e.systems;if(i)for(var r,s=new Map,a=o(i);!(r=a()).done;){var c=r.value,u=j(c),h=void 0;s.has(u)?h=s.get(u):(h=this.calculateQuickSystemSize(c),s.set(u,h)),t+=h,n.push({name:u,memory:h,enabled:!1!==c.enabled,updateOrder:c.updateOrder||0})}}catch(e){}return{totalMemory:t,systemCount:n.length,breakdown:n.sort((function(e,t){return t.memory-e.memory}))}},t.calculateQuickSystemSize=function(e){if(!e||"object"!=typeof e)return 64;var t=128;try{for(var n=Object.keys(e),i=0;i<Math.min(n.length,15);i++){var r=n[i];if("entities"!==r&&"scene"!==r&&"constructor"!==r){var s=e[r];t+=2*r.length,"string"==typeof s?t+=Math.min(2*s.length,100):"number"==typeof s?t+=8:"boolean"==typeof s?t+=4:Array.isArray(s)?t+=40+Math.min(8*s.length,200):"object"==typeof s&&null!==s&&(t+=64)}}}catch(e){return 128}return Math.max(t,64)},t.collectPoolMemoryStats=function(){var e=0,t=[];try{for(var n,i=o(ue.getInstance().getPoolStats().entries());!(n=i()).done;){var r=n.value,s=r[0],a=r[1],c=32*a.maxSize;e+=c,t.push({typeName:s,maxSize:a.maxSize,currentSize:a.currentSize||0,estimatedMemory:c,utilization:a.currentSize?a.currentSize/a.maxSize*100:0})}}catch(e){}try{for(var u=z.getAllPoolStats(),h=0,l=Object.entries(u);h<l.length;h++){var f=l[h],d=f[0],p=f[1];e+=p.estimatedMemoryUsage,t.push({typeName:"Pool_"+d,maxSize:p.maxSize,currentSize:p.size,estimatedMemory:p.estimatedMemoryUsage,utilization:p.size/p.maxSize*100,hitRate:100*p.hitRate})}}catch(e){}return{totalMemory:e,poolCount:t.length,breakdown:t.sort((function(e,t){return t.estimatedMemory-e.estimatedMemory}))}},t.collectPerformanceStats=function(){try{var e;if(!this.performanceMonitor)return{enabled:!1};var t=this.performanceMonitor.getAllSystemStats(),n=this.performanceMonitor.getPerformanceWarnings();return{enabled:null!==(e=this.performanceMonitor.enabled)&&void 0!==e&&e,systemCount:t.size,warnings:n.slice(0,10),topSystems:Array.from(t.entries()).map((function(e){var t=e[0],n=e[1];return{name:t,averageTime:n.averageTime,maxTime:n.maxTime,samples:n.executionCount}})).sort((function(e,t){return t.averageTime-e.averageTime})).slice(0,5)}}catch(e){return{enabled:!1,error:e instanceof Error?e.message:String(e)}}},t.getDebugData=function(){var e=Date.now(),t=this.sceneManager.currentScene,n={timestamp:e,frameworkVersion:"1.0.0",isRunning:this.isRunning,frameworkLoaded:!0,currentScene:(null==t?void 0:t.name)||"Unknown"};return this.config.channels.entities&&(n.entities=this.entityCollector.collectEntityData(t)),this.config.channels.systems&&(n.systems=this.systemCollector.collectSystemData(this.performanceMonitor,t)),this.config.channels.performance&&(n.performance=this.performanceCollector.collectPerformanceData(this.performanceMonitor)),this.config.channels.components&&(n.components=this.componentCollector.collectComponentData(t)),this.config.channels.scenes&&(n.scenes=this.sceneCollector.collectSceneData(t)),n},t.connectWebSocket=function(){var e=n(l().m((function e(){return l().w((function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this.webSocketManager.connect();case 1:e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}}),e,this,[[0,2]])})));return function(){return e.apply(this,arguments)}}(),t.sendDebugData=function(){if(this.webSocketManager.getConnectionStatus())try{var e={type:"debug_data",data:this.getDebugData()};this.webSocketManager.send(e)}catch(e){}},t.dispose=function(){this.stop(),console.log=this.originalConsole.log,console.debug=this.originalConsole.debug,console.info=this.originalConsole.info,console.warn=this.originalConsole.warn,console.error=this.originalConsole.error},e}(),exports.DebugManager=g([A(),T(),m(0,M(qt)),m(1,M(O)),m(2,M(exports.DebugConfigService)),v("design:paramtypes",[qt,O,exports.DebugConfigService])],exports.DebugManager),exports.PluginState=void 0,(Ft=exports.PluginState||(exports.PluginState={})).NotInstalled="not_installed",Ft.Installed="installed",Ft.Failed="failed";var Gt=Y("PluginManager"),Qt=function(){function e(){this._plugins=new Map,this._metadata=new Map,this._core=null,this._services=null}var t=e.prototype;return t.initialize=function(e,t){this._core=e,this._services=t,Gt.info("PluginManager initialized")},t.install=function(){var e=n(l().m((function e(t){var n,i;return l().w((function(e){for(;;)switch(e.p=e.n){case 0:if(this._core&&this._services){e.n=1;break}throw new Error("PluginManager not initialized. Call initialize() first.");case 1:if(!this._plugins.has(t.name)){e.n=2;break}return Gt.warn("Plugin "+t.name+" is already installed"),e.a(2);case 2:return t.dependencies&&t.dependencies.length>0&&this._checkDependencies(t),n={name:t.name,version:t.version,state:exports.PluginState.NotInstalled,installedAt:Date.now()},this._metadata.set(t.name,n),e.p=3,Gt.info("Installing plugin: "+t.name+" v"+t.version),e.n=4,t.install(this._core,this._services);case 4:this._plugins.set(t.name,t),n.state=exports.PluginState.Installed,Gt.info("Plugin "+t.name+" installed successfully"),e.n=6;break;case 5:throw e.p=5,i=e.v,n.state=exports.PluginState.Failed,n.error=i instanceof Error?i.message:String(i),Gt.error("Failed to install plugin "+t.name+":",i),i;case 6:return e.a(2)}}),e,this,[[3,5]])})));return function(t){return e.apply(this,arguments)}}(),t.uninstall=function(){var e=n(l().m((function e(t){var n,i;return l().w((function(e){for(;;)switch(e.p=e.n){case 0:if(n=this._plugins.get(t)){e.n=1;break}throw new Error("Plugin "+t+" is not installed");case 1:return this._checkDependents(t),e.p=2,Gt.info("Uninstalling plugin: "+t),e.n=3,n.uninstall();case 3:this._plugins.delete(t),this._metadata.delete(t),Gt.info("Plugin "+t+" uninstalled successfully"),e.n=5;break;case 4:throw e.p=4,i=e.v,Gt.error("Failed to uninstall plugin "+t+":",i),i;case 5:return e.a(2)}}),e,this,[[2,4]])})));return function(t){return e.apply(this,arguments)}}(),t.getPlugin=function(e){return this._plugins.get(e)},t.getMetadata=function(e){return this._metadata.get(e)},t.getAllPlugins=function(){return Array.from(this._plugins.values())},t.getAllMetadata=function(){return Array.from(this._metadata.values())},t.isInstalled=function(e){return this._plugins.has(e)},t._checkDependencies=function(e){if(e.dependencies){for(var t,n=[],i=o(e.dependencies);!(t=i()).done;){var r=t.value;this._plugins.has(r)||n.push(r)}if(n.length>0)throw new Error("Plugin "+e.name+" has unmet dependencies: "+n.join(", "))}},t._checkDependents=function(e){for(var t,n=[],i=o(this._plugins.values());!(t=i()).done;){var r=t.value;r.dependencies&&r.dependencies.includes(e)&&n.push(r.name)}if(n.length>0)throw new Error("Cannot uninstall plugin "+e+": it is required by "+n.join(", "))},t.dispose=function(){for(var e,t=o(Array.from(this._plugins.values()).reverse());!(e=t()).done;){var n=e.value;try{Gt.info("Disposing plugin: "+n.name),n.uninstall()}catch(e){Gt.error("Error disposing plugin "+n.name+":",e)}}this._plugins.clear(),this._metadata.clear(),this._core=null,this._services=null,Gt.info("PluginManager disposed")},e}(),Vt=Y("WorldManager"),Yt=function(){function e(e){void 0===e&&(e={}),this._worlds=new Map,this._activeWorlds=new Set,this._cleanupTimer=null,this._isRunning=!1,this._config=a({maxWorlds:50,autoCleanup:!0,cleanupInterval:3e4,debug:!1},e),this._isRunning=!0,Vt.info("WorldManager已初始化",{maxWorlds:this._config.maxWorlds,autoCleanup:this._config.autoCleanup,cleanupInterval:this._config.cleanupInterval}),this.startCleanupTimer()}var t=e.prototype;return t.createWorld=function(e,t){if(!e||"string"!=typeof e||""===e.trim())throw new Error("World ID不能为空");if(this._worlds.has(e))throw new Error("World ID '"+e+"' 已存在");if(this._worlds.size>=this._config.maxWorlds)throw new Error("已达到最大World数量限制: "+this._config.maxWorlds);var n=a({name:e,debug:this._config.debug},t),i=new jt(n);return this._worlds.set(e,i),i},t.removeWorld=function(e){var t=this._worlds.get(e);return!!t&&(this._activeWorlds.has(e)&&this.setWorldActive(e,!1),t.destroy(),this._worlds.delete(e),Vt.info("移除World: "+e),!0)},t.getWorld=function(e){return this._worlds.get(e)||null},t.getWorldIds=function(){return Array.from(this._worlds.keys())},t.getAllWorlds=function(){return Array.from(this._worlds.values())},t.setWorldActive=function(e,t){var n=this._worlds.get(e);n?t?(this._activeWorlds.add(e),n.start(),Vt.debug("激活World: "+e)):(this._activeWorlds.delete(e),n.stop(),Vt.debug("停用World: "+e)):Vt.warn("World '"+e+"' 不存在")},t.isWorldActive=function(e){return this._activeWorlds.has(e)},t.updateAll=function(){if(this._isRunning)for(var e,t=o(this._activeWorlds);!(e=t()).done;){var n=e.value,i=this._worlds.get(n);i&&i.isActive&&(i.updateGlobalSystems(),i.updateScenes())}},t.getActiveWorlds=function(){for(var e,t=[],n=o(this._activeWorlds);!(e=n()).done;){var i=e.value,r=this._worlds.get(i);r&&t.push(r)}return t},t.startAll=function(){this._isRunning=!0;for(var e,t=o(this._worlds.keys());!(e=t()).done;){var n=e.value;this.setWorldActive(n,!0)}Vt.info("启动所有World")},t.stopAll=function(){this._isRunning=!1;for(var e,t=o(this._activeWorlds);!(e=t()).done;){var n=e.value;this.setWorldActive(n,!1)}Vt.info("停止所有World")},t.findWorlds=function(e){for(var t,n=[],i=o(this._worlds.values());!(t=i()).done;){var r=t.value;e(r)&&n.push(r)}return n},t.findWorldByName=function(e){for(var t,n=o(this._worlds.values());!(t=n()).done;){var i=t.value;if(i.name===e)return i}return null},t.getStats=function(){for(var e,t={totalWorlds:this._worlds.size,activeWorlds:this._activeWorlds.size,totalScenes:0,totalEntities:0,totalSystems:0,memoryUsage:0,isRunning:this._isRunning,config:a({},this._config),worlds:[]},n=o(this._worlds);!(e=n()).done;){var i=e.value,r=i[0],s=i[1],c=s.getStats();t.totalScenes+=c.totalSystems,t.totalEntities+=c.totalEntities,t.totalSystems+=c.totalSystems,t.worlds.push(a({id:r,name:s.name,isActive:this._activeWorlds.has(r),sceneCount:s.sceneCount},c))}return t},t.getDetailedStatus=function(){var e=this;return a({},this.getStats(),{worlds:Array.from(this._worlds.entries()).map((function(t){var n=t[0],i=t[1];return{id:n,isActive:e._activeWorlds.has(n),status:i.getStatus()}}))})},t.cleanup=function(){for(var e,t=[],n=o(this._worlds);!(e=n()).done;){var i=e.value,r=i[0],s=i[1];this.shouldCleanupWorld(s)&&t.push(r)}for(var a=0,c=t;a<c.length;a++){var u=c[a];this.removeWorld(u)}return t.length>0&&Vt.debug("清理了 "+t.length+" 个World"),t.length},t.destroy=function(){Vt.info("正在销毁WorldManager..."),this.stopCleanupTimer(),this.stopAll();for(var e=0,t=Array.from(this._worlds.keys());e<t.length;e++){var n=t[e];this.removeWorld(n)}this._worlds.clear(),this._activeWorlds.clear(),this._isRunning=!1,Vt.info("WorldManager已销毁")},t.dispose=function(){this.destroy()},t.startCleanupTimer=function(){var e=this;this._config.autoCleanup&&!this._cleanupTimer&&(this._cleanupTimer=setInterval((function(){e.cleanup()}),this._config.cleanupInterval),Vt.debug("启动World清理定时器,间隔: "+this._config.cleanupInterval+"ms"))},t.stopCleanupTimer=function(){this._cleanupTimer&&(clearInterval(this._cleanupTimer),this._cleanupTimer=null,Vt.debug("停止World清理定时器"))},t.shouldCleanupWorld=function(e){return!e.isActive&&((0===e.sceneCount||!e.getAllScenes().some((function(e){return e.entities&&e.entities.count>0})))&&Date.now()-e.createdAt>6e5)},s(e,[{key:"worldCount",get:function(){return this._worlds.size}},{key:"activeWorldCount",get:function(){return this._activeWorlds.size}},{key:"isRunning",get:function(){return this._isRunning}},{key:"config",get:function(){return a({},this._config)}}])}(),Kt=function(){function e(t){var n,i,r,s=this;if(void 0===t&&(t={}),e._instance=this,this._config=a({debug:!0,enableEntitySystems:!0},t),this._serviceContainer=new zt,this._timerManager=new exports.TimerManager,this._serviceContainer.registerInstance(exports.TimerManager,this._timerManager),this._performanceMonitor=new O,this._serviceContainer.registerInstance(O,this._performanceMonitor),this._config.debug&&this._performanceMonitor.enable(),this._poolManager=new P,this._serviceContainer.registerInstance(P,this._poolManager),this._sceneManager=new qt(this._performanceMonitor),this._serviceContainer.registerInstance(qt,this._sceneManager),this._sceneManager.setSceneChangedCallback((function(){s._debugManager&&s._debugManager.onSceneChanged()})),this._worldManager=new Yt(this._config.worldManagerConfig),this._serviceContainer.registerInstance(Yt,this._worldManager),this._pluginManager=new Qt,this._pluginManager.initialize(this,this._serviceContainer),this._serviceContainer.registerInstance(Qt,this._pluginManager),e.entitySystemsEnabled=null===(n=this._config.enableEntitySystems)||void 0===n||n,this.debug=null===(i=this._config.debug)||void 0===i||i,null!==(r=this._config.debugConfig)&&void 0!==r&&r.enabled){var o=new exports.DebugConfigService;o.setConfig(this._config.debugConfig),this._serviceContainer.registerInstance(exports.DebugConfigService,o),this._serviceContainer.registerSingleton(exports.DebugManager,(function(e){return I(exports.DebugManager,e)})),this._debugManager=this._serviceContainer.resolve(exports.DebugManager)}this.initialize()}e.create=function(t){if(void 0===t&&(t=!0),null==this._instance){var n="boolean"==typeof t?{debug:t,enableEntitySystems:!0}:t;this._instance=new e(n)}else this._logger.warn("Core实例已创建,返回现有实例");return this._instance},e.setScene=function(t){if(!this._instance)throw e._logger.warn("Core实例未创建,请先调用Core.create()"),new Error("Core实例未创建");return this._instance._sceneManager.setScene(t)},e.loadScene=function(t){this._instance?this._instance._sceneManager.loadScene(t):e._logger.warn("Core实例未创建,请先调用Core.create()")},e.update=function(t){this._instance?this._instance.updateInternal(t):e._logger.warn("Core实例未创建,请先调用Core.create()")},e.schedule=function(e,t,n,i){if(void 0===t&&(t=!1),!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");if(!i)throw new Error("onTime callback is required");return this._instance._timerManager.schedule(e,t,n,i)},e.enableDebug=function(t){if(this._instance){if(this._instance._debugManager)this._instance._debugManager.updateConfig(t);else{var n=new exports.DebugConfigService;n.setConfig(t),this._instance._serviceContainer.registerInstance(exports.DebugConfigService,n),this._instance._serviceContainer.registerSingleton(exports.DebugManager,(function(e){return I(exports.DebugManager,e)})),this._instance._debugManager=this._instance._serviceContainer.resolve(exports.DebugManager)}this._instance._config.debugConfig=t}else e._logger.warn("Core实例未创建,请先调用Core.create()")},e.disableDebug=function(){this._instance&&(this._instance._debugManager&&(this._instance._debugManager.stop(),this._instance._debugManager=void 0),this._instance._config.debugConfig&&(this._instance._config.debugConfig.enabled=!1))},e.getDebugData=function(){var e;return null!==(e=this._instance)&&void 0!==e&&e._debugManager?this._instance._debugManager.getDebugData():null},e.installPlugin=function(){var e=n(l().m((function e(t){return l().w((function(e){for(;;)switch(e.n){case 0:if(this._instance){e.n=1;break}throw new Error("Core实例未创建,请先调用Core.create()");case 1:return e.n=2,this._instance._pluginManager.install(t);case 2:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e.uninstallPlugin=function(){var e=n(l().m((function e(t){return l().w((function(e){for(;;)switch(e.n){case 0:if(this._instance){e.n=1;break}throw new Error("Core实例未创建,请先调用Core.create()");case 1:return e.n=2,this._instance._pluginManager.uninstall(t);case 2:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e.getPlugin=function(e){if(this._instance)return this._instance._pluginManager.getPlugin(e)},e.isPluginInstalled=function(e){return!!this._instance&&this._instance._pluginManager.isInstalled(e)};var t=e.prototype;return t.initialize=function(){var t;e._logger.info("Core initialized",{debug:this.debug,entitySystemsEnabled:e.entitySystemsEnabled,debugEnabled:(null===(t=this._config.debugConfig)||void 0===t?void 0:t.enabled)||!1})},t.updateInternal=function(t){if(!e.paused){var n=this._performanceMonitor.startMonitoring("Core.update");_.update(t),"updateFPS"in this._performanceMonitor&&"function"==typeof this._performanceMonitor.updateFPS&&this._performanceMonitor.updateFPS(_.deltaTime);var i=this._performanceMonitor.startMonitoring("Services.update");this._serviceContainer.updateAll(t),this._performanceMonitor.endMonitoring("Services.update",i,this._serviceContainer.getUpdatableCount()),this._poolManager.update(),this._sceneManager.update(),this._worldManager.updateAll(),this._performanceMonitor.endMonitoring("Core.update",n)}},e.destroy=function(){this._instance&&(this._instance._debugManager&&this._instance._debugManager.stop(),this._instance._serviceContainer.clear(),e._logger.info("Core destroyed"),this._instance=null)},s(e,null,[{key:"Instance",get:function(){return this._instance}},{key:"services",get:function(){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");return this._instance._serviceContainer}},{key:"worldManager",get:function(){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");return this._instance._worldManager}},{key:"scene",get:function(){return this._instance?this._instance._sceneManager.currentScene:null}},{key:"ecsAPI",get:function(){return this._instance?this._instance._sceneManager.api:null}},{key:"isDebugEnabled",get:function(){var e;return(null===(e=this._instance)||void 0===e||null===(e=e._config.debugConfig)||void 0===e?void 0:e.enabled)||!1}}])}();Kt.paused=!1,Kt._instance=null,Kt._logger=Y("Core");var Jt=Y("DebugPlugin");exports.DebugPlugin=function(){function e(e){var t,n;this.name="@esengine/debug-plugin",this.version="1.0.0",this.worldManager=null,this.updateTimer=null,this.autoStart=null!==(t=null==e?void 0:e.autoStart)&&void 0!==t&&t,this.updateInterval=null!==(n=null==e?void 0:e.updateInterval)&&void 0!==n?n:1e3}var t=e.prototype;return t.install=function(){var e=n(l().m((function e(t,n){return l().w((function(e){for(;;)switch(e.n){case 0:this.worldManager=n.resolve(Yt),Jt.info("ECS Debug Plugin installed"),this.autoStart&&this.start();case 1:return e.a(2)}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.uninstall=function(){var e=n(l().m((function e(){return l().w((function(e){for(;;)switch(e.n){case 0:this.stop(),this.worldManager=null,Jt.info("ECS Debug Plugin uninstalled");case 1:return e.a(2)}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.dispose=function(){this.stop(),this.worldManager=null},t.start=function(){var e=this;this.updateTimer?Jt.warn("Debug monitoring already started"):(Jt.info("Starting debug monitoring"),this.updateTimer=setInterval((function(){e.logStats()}),this.updateInterval))},t.stop=function(){this.updateTimer&&(clearInterval(this.updateTimer),this.updateTimer=null,Jt.info("Debug monitoring stopped"))},t.getStats=function(){if(!this.worldManager)throw new Error("Plugin not installed");for(var e,t=[],n=0,i=0,r=o(this.worldManager.getAllWorlds());!(e=r()).done;)for(var s,a=o(e.value.getAllScenes());!(s=a()).done;){var c=s.value,u=this.getSceneInfo(c);t.push(u),n+=u.entityCount,i+=u.systems.length}return{scenes:t,totalEntities:n,totalSystems:i,timestamp:Date.now()}},t.getSceneInfo=function(e){var t=this,n=e.entities.buffer,i=e.systems;return{name:e.name,entityCount:n.length,systems:i.map((function(e){return t.getSystemInfo(e)})),entities:n.map((function(e){return t.getEntityInfo(e)}))}},t.getSystemInfo=function(e){var t=e.getPerformanceStats();return{name:e.constructor.name,enabled:e.enabled,updateOrder:e.updateOrder,entityCount:e.entities.length,performance:t?{avgExecutionTime:t.averageTime,maxExecutionTime:t.maxTime,totalCalls:t.executionCount}:void 0}},t.getEntityInfo=function(e){var t=this,n=e.components;return{id:e.id,name:e.name,enabled:e.enabled,tag:e.tag,componentCount:n.length,components:n.map((function(e){return t.getComponentInfo(e)}))}},t.getComponentInfo=function(e){for(var t=e.constructor.name,n={},i=0,r=Object.keys(e);i<r.length;i++){var s=r[i];if(!s.startsWith("_")){var o=e[s];"function"!=typeof o&&(n[s]=o)}}return{type:t,data:n}},t.queryEntities=function(e){if(!this.worldManager)throw new Error("Plugin not installed");for(var t,n=[],i=o(this.worldManager.getAllWorlds());!(t=i()).done;)for(var r,s=o(t.value.getAllScenes());!(r=s()).done;){var a=r.value;if(!e.sceneId||a.name===e.sceneId)for(var c,u=o(a.entities.buffer);!(c=u()).done;){var h=c.value;if((void 0===e.tag||h.tag===e.tag)&&(!e.name||h.name.includes(e.name))){if(e.hasComponent)if(!h.components.some((function(t){return t.constructor.name===e.hasComponent})))continue;n.push(this.getEntityInfo(h))}}}return n},t.logStats=function(){var e=this.getStats();Jt.info("=== ECS Debug Stats ==="),Jt.info("Total Entities: "+e.totalEntities),Jt.info("Total Systems: "+e.totalSystems),Jt.info("Scenes: "+e.scenes.length);for(var t,n=o(e.scenes);!(t=n()).done;){var i=t.value;Jt.info("\n[Scene: "+i.name+"]"),Jt.info(" Entities: "+i.entityCount),Jt.info(" Systems: "+i.systems.length);for(var r,s=o(i.systems);!(r=s()).done;){var a=r.value,c=a.performance?" | Avg: "+a.performance.avgExecutionTime.toFixed(2)+"ms, Max: "+a.performance.maxExecutionTime.toFixed(2)+"ms":"";Jt.info(" - "+a.name+" ("+(a.enabled?"enabled":"disabled")+") | Entities: "+a.entityCount+c)}}Jt.info("========================\n")},t.exportJSON=function(){var e=this.getStats();return JSON.stringify(e,null,2)},e}(),exports.DebugPlugin=g([A(),v("design:paramtypes",[Object])],exports.DebugPlugin);var $t=function(e,t){this.func=e,this.context=t},Zt=function(){function e(){this._messageTable=new Map}var t=e.prototype;return t.addObserver=function(e,t,n){var i=this._messageTable.get(e);i||(i=[],this._messageTable.set(e,i)),this.hasObserver(e,t)||i.push(new $t(t,n))},t.removeObserver=function(e,t){var n=this._messageTable.get(e);if(n){var i=n.findIndex((function(e){return e.func==t}));-1!=i&&n.splice(i,1)}},t.emit=function(e){var t=this._messageTable.get(e);if(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];for(var s,a=o(t);!(s=a()).done;){var c,u=s.value;(c=u.func).call.apply(c,[u.context].concat(i))}}},t.hasObserver=function(e,t){var n=this._messageTable.get(e);return!!n&&n.some((function(e){return e.func===t}))},t.removeAllObservers=function(e){void 0!==e?this._messageTable.delete(e):this._messageTable.clear()},t.dispose=function(){this._messageTable.clear()},t.getEventTypeCount=function(){return this._messageTable.size},t.getObserverCount=function(e){var t=this._messageTable.get(e);return t?t.length:0},e}(),Xt=function(){function e(){this._enabled=!1}var t=e.prototype;return t.setEnabled=function(e){this._enabled!=e&&(this._enabled=e,this._enabled?this.onEnabled():this.onDisabled())},t.onEnabled=function(){},t.onDisabled=function(){},t.update=function(){},s(e,[{key:"enabled",get:function(){return this._enabled},set:function(e){this.setEnabled(e)}}])}(),en=function(){function e(){this.entityId=null,this.id=e._idGenerator++}var t=e.prototype;return t.onAddedToEntity=function(){},t.onRemovedFromEntity=function(){},e}();en._idGenerator=0;var tn=function(e){function t(t){return e.call(this,t)||this}return u(t,e),t.prototype.process=function(e){this.processSystem()},t}(Te),nn=function(e){function t(t){return e.call(this,t)||this}return u(t,e),t.prototype.process=function(e){},t}(Te),rn=function(e){function t(t,n){var i;return(i=e.call(this,n)||this).acc=0,i.intervalRemainder=0,i.interval=t,i}u(t,e);var n=t.prototype;return n.onCheckProcessing=function(){return this.acc+=_.deltaTime,this.acc>=this.interval&&(this.intervalRemainder=this.acc-this.interval,this.acc=0,!0)},n.getIntervalDelta=function(){return this.interval+this.intervalRemainder},t}(Te),sn=function(){function e(){this.adapter=null,this.logger=Y("PlatformManager")}e.getInstance=function(){return e.instance||(e.instance=new e),e.instance};var t=e.prototype;return t.getAdapter=function(){if(!this.adapter)throw new Error("平台适配器未注册,请调用 registerAdapter() 注册适配器");return this.adapter},t.registerAdapter=function(e){this.adapter=e,this.logger.info("平台适配器已注册: "+e.name,{name:e.name,version:e.version,supportsWorker:e.isWorkerSupported(),supportsSharedArrayBuffer:e.isSharedArrayBufferSupported(),hardwareConcurrency:e.getHardwareConcurrency()})},t.hasAdapter=function(){return null!==this.adapter},t.getAdapterInfo=function(){return this.adapter?{name:this.adapter.name,version:this.adapter.version,config:this.adapter.getPlatformConfig()}:null},t.supportsFeature=function(e){if(!this.adapter)return!1;var t=this.adapter.getPlatformConfig();switch(e){case"worker":return this.adapter.isWorkerSupported();case"shared-array-buffer":return this.adapter.isSharedArrayBufferSupported();case"transferable-objects":return t.supportsTransferableObjects;case"module-worker":return t.supportsModuleWorker;default:return!1}},t.getBasicWorkerConfig=function(){if(!this.adapter)return{platformSupportsWorker:!1,platformSupportsSharedArrayBuffer:!1,platformMaxWorkerCount:1,platformLimitations:{}};var e=this.adapter.getPlatformConfig();return{platformSupportsWorker:this.adapter.isWorkerSupported(),platformSupportsSharedArrayBuffer:this.adapter.isSharedArrayBufferSupported(),platformMaxWorkerCount:e.maxWorkerCount,platformLimitations:e.limitations||{}}},t.getFullPlatformConfig=function(){var e=n(l().m((function e(){return l().w((function(e){for(;;)switch(e.n){case 0:if(this.adapter){e.n=1;break}throw new Error("平台适配器未注册");case 1:if("function"!=typeof this.adapter.getPlatformConfigAsync){e.n=3;break}return e.n=2,this.adapter.getPlatformConfigAsync();case 2:return e.a(2,e.v);case 3:return e.a(2,this.adapter.getPlatformConfig())}}),e,this)})));return function(){return e.apply(this,arguments)}}(),e}(),on=function(e){function t(t,n){var i,r,s,o,a,c;void 0===n&&(n={}),(c=e.call(this,t)||this).workerPool=null,c.isProcessing=!1,c.sharedBuffer=null,c.sharedFloatArray=null,c.hasLoggedSyncMode=!1,c.platformAdapter=sn.getInstance().getAdapter();var u=null!==(i=n.workerCount)&&void 0!==i?i:c.getMaxSystemWorkerCount(),h=c.getMaxSystemWorkerCount(),l=Math.min(u,h);return u>h&&c.logger.warn("请求 "+u+" 个Worker,但系统最多支持 "+h+" 个。实际使用 "+l+" 个Worker。"),c.config={enableWorker:null===(r=n.enableWorker)||void 0===r||r,workerCount:l,systemConfig:n.systemConfig,entitiesPerWorker:n.entitiesPerWorker,useSharedArrayBuffer:null!==(s=n.useSharedArrayBuffer)&&void 0!==s?s:c.isSharedArrayBufferSupported(),entityDataSize:null!==(o=n.entityDataSize)&&void 0!==o?o:c.getDefaultEntityDataSize(),maxEntities:null!==(a=n.maxEntities)&&void 0!==a?a:1e4},c.config.enableWorker&&c.isWorkerSupported()&&(c.config.useSharedArrayBuffer&&c.initializeSharedArrayBuffer(),c.initializeWorkerPool()),c}u(t,e);var i=t.prototype;return i.isWorkerSupported=function(){return this.platformAdapter.isWorkerSupported()},i.isSharedArrayBufferSupported=function(){return this.platformAdapter.isSharedArrayBufferSupported()},i.getMaxSystemWorkerCount=function(){return this.platformAdapter.getPlatformConfig().maxWorkerCount},i.initializeSharedArrayBuffer=function(){try{if(!this.isSharedArrayBufferSupported())return this.logger.warn(this.systemName+": 平台不支持SharedArrayBuffer,降级到单Worker模式以保证数据处理完整性"),this.config.useSharedArrayBuffer=!1,void(this.config.workerCount=1);var e=this.config.maxEntities*this.config.entityDataSize*4;this.sharedBuffer=this.platformAdapter.createSharedArrayBuffer(e),this.sharedBuffer&&(this.sharedFloatArray=new Float32Array(this.sharedBuffer)),this.logger.info(this.systemName+": SharedArrayBuffer初始化成功 ("+e+" 字节)")}catch(e){this.logger.warn(this.systemName+": SharedArrayBuffer初始化失败,降级到单Worker模式以保证数据处理完整性",e),this.config.useSharedArrayBuffer=!1,this.sharedBuffer=null,this.sharedFloatArray=null,this.config.workerCount=1}},i.initializeWorkerPool=function(){try{for(var e=this.createWorkerScript(),t=[],n=(this.platformAdapter.getPlatformConfig().workerScriptPrefix||"")+e,i=0;i<this.config.workerCount;i++)try{var r=this.platformAdapter.createWorker(n,{name:"WorkerEntitySystem-"+i});t.push(r)}catch(e){throw this.logger.error("创建Worker "+i+" 失败:",e),e}this.workerPool=new an(t,this.sharedBuffer)}catch(e){this.logger.error(this.systemName+": Worker池初始化失败",e),this.config.enableWorker=!1}},i.createWorkerScript=function(){var e,t=this.workerProcess.toString().match(/\{([\s\S]*)\}/);if(!t)throw new Error("无法解析workerProcess方法");var n=t[1],i=this.config.entityDataSize,r=(null===(e=this.getSharedArrayBufferProcessFunction)||void 0===e?void 0:e.call(this))||null,s="";if(r){var o=r.toString().match(/\{([\s\S]*)\}/);o&&(s=o[1])}return"\n // Worker脚本 - 支持SharedArrayBuffer\n let sharedFloatArray = null;\n const ENTITY_DATA_SIZE = "+i+";\n\n self.onmessage = function(e) {\n const { type, id, entities, deltaTime, systemConfig, startIndex, endIndex, sharedBuffer } = e.data;\n\n\n try {\n // 处理SharedArrayBuffer初始化\n if (type === 'init' && sharedBuffer) {\n sharedFloatArray = new Float32Array(sharedBuffer);\n self.postMessage({ type: 'init', success: true });\n return;\n }\n\n // 处理SharedArrayBuffer数据\n if (type === 'shared' && sharedFloatArray) {\n processSharedArrayBuffer(startIndex, endIndex, deltaTime, systemConfig);\n self.postMessage({ id, result: null }); // SharedArrayBuffer不需要返回数据\n return;\n }\n\n // 传统处理方式\n if (entities) {\n // 定义处理函数\n function workerProcess(entities, deltaTime, systemConfig) {\n "+n+"\n }\n\n // 执行处理\n const result = workerProcess(entities, deltaTime, systemConfig);\n\n // 处理Promise返回值\n if (result && typeof result.then === 'function') {\n result.then(finalResult => {\n self.postMessage({ id, result: finalResult });\n }).catch(error => {\n self.postMessage({ id, error: error.message });\n });\n } else {\n self.postMessage({ id, result });\n }\n }\n } catch (error) {\n self.postMessage({ id, error: error.message });\n }\n };\n\n // SharedArrayBuffer处理函数 - 由子类定义\n function processSharedArrayBuffer(startIndex, endIndex, deltaTime, systemConfig) {\n if (!sharedFloatArray) return;\n\n "+(s?"\n // 用户定义的处理函数\n const userProcessFunction = function(sharedFloatArray, startIndex, endIndex, deltaTime, systemConfig) {\n "+s+"\n };\n userProcessFunction(sharedFloatArray, startIndex, endIndex, deltaTime, systemConfig);\n ":"")+"\n }\n "},i.process=function(e){var t=this;if(!this.isProcessing){this.isProcessing=!0;try{this.config.enableWorker&&this.workerPool?this.config.useSharedArrayBuffer&&this.sharedFloatArray&&this.isSharedArrayBufferSupported()?this.processWithSharedArrayBuffer(e).finally((function(){t.isProcessing=!1})):(this.config.useSharedArrayBuffer&&this.logger.info(this.systemName+": 本帧降级到传统Worker模式"),this.processWithWorker(e).finally((function(){t.isProcessing=!1}))):(this.hasLoggedSyncMode||(this.logger.info(this.systemName+": Worker不可用,使用同步处理"),this.hasLoggedSyncMode=!0),this.processSynchronously(e),this.isProcessing=!1)}catch(e){throw this.isProcessing=!1,this.logger.error(this.systemName+": 处理失败",e),e}}},i.processWithSharedArrayBuffer=function(){var e=n(l().m((function e(t){var n;return l().w((function(e){for(;;)switch(e.n){case 0:if(this.sharedFloatArray){e.n=1;break}throw new Error("SharedArrayBuffer not initialized");case 1:return this.writeEntitiesToSharedBuffer(t),n=this.createSharedArrayBufferTasks(t.length),e.n=2,Promise.all(n);case 2:this.readResultsFromSharedBuffer(t);case 3:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.processWithWorker=function(){var e=n(l().m((function e(t){var n,i,r,s,a,c,u,h,f,d,p,y,g,m,v=this;return l().w((function(e){for(;;)switch(e.n){case 0:for(n=[],i=0;i<t.length;i++)n[i]=this.extractEntityData(t[i]);return r=this.createBatches(n),s=_.deltaTime,a=r.map((function(e){return v.workerPool.execute({entities:e,deltaTime:s,systemConfig:v.config.systemConfig})})),e.n=1,Promise.all(a);case 1:for(c=e.v,u=0,h=o(c);!(f=h()).done;)for(d=f.value,p=o(d);!(y=p()).done;)g=y.value,u<t.length&&(m=t[u])&&g&&this.applyResult(m,g),u++;case 2:return e.a(2)}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.processSynchronously=function(e){var t=this,n=e.map((function(e){return t.extractEntityData(e)})),i=_.deltaTime,r=this.workerProcess(n,i,this.config.systemConfig);r&&"function"==typeof r.then?r.then((function(n){e.forEach((function(e,i){t.applyResult(e,n[i])}))})):e.forEach((function(e,n){t.applyResult(e,r[n])}))},i.createBatches=function(e){var t=this.config.workerCount,n=[];if(this.config.entitiesPerWorker){for(var i=this.config.entitiesPerWorker,r=0;r<e.length;r+=i){var s=Math.min(r+i,e.length);n.push(e.slice(r,s))}n.length>t&&this.logger.warn(this.systemName+": 创建了 "+n.length+" 个批次,但只有 "+t+" 个Worker。某些Worker将依次处理多个批次。")}else for(var o=Math.ceil(e.length/t),a=0;a<t;a++){var c=a*o,u=Math.min(c+o,e.length);c<e.length&&n.push(e.slice(c,u))}return n},i.writeEntitiesToSharedBuffer=function(e){if(this.sharedFloatArray)for(var t=0;t<e.length&&t<this.config.maxEntities;t++){var n=e[t],i=this.extractEntityData(n),r=t*this.config.entityDataSize;this.writeEntityToBuffer(i,r)}},i.createSharedArrayBufferTasks=function(e){var t=[];if(this.config.entitiesPerWorker){var n=this.config.entitiesPerWorker,i=Math.ceil(e/n),r=this.config.workerCount;i>r&&this.logger.warn(this.systemName+": 需要 "+i+" 个任务处理 "+e+" 个实体(每任务 "+n+" 个),但只有 "+r+" 个Worker。某些Worker将依次处理多个任务。");for(var s=0;s<e;s+=n){var o=s,a=Math.min(s+n,e),c=this.workerPool.executeSharedBuffer({startIndex:o,endIndex:a,deltaTime:_.deltaTime,systemConfig:this.config.systemConfig});t.push(c)}}else for(var u=Math.ceil(e/this.config.workerCount),h=0;h<this.config.workerCount;h++){var l=h*u,f=Math.min(l+u,e);if(l<e){var d=this.workerPool.executeSharedBuffer({startIndex:l,endIndex:f,deltaTime:_.deltaTime,systemConfig:this.config.systemConfig});t.push(d)}}return t},i.readResultsFromSharedBuffer=function(e){if(this.sharedFloatArray)for(var t=0;t<e.length&&t<this.config.maxEntities;t++){var n=e[t],i=t*this.config.entityDataSize,r=this.readEntityFromBuffer(i);r&&this.applyResult(n,r)}},i.updateConfig=function(e){var t=a({},this.config);if(void 0!==e.workerCount){var n=this.getMaxSystemWorkerCount(),i=Math.min(e.workerCount,n);e.workerCount>n&&this.logger.warn("请求 "+e.workerCount+" 个Worker,但系统最多支持 "+n+" 个。实际使用 "+i+" 个Worker。"),e.workerCount=i}Object.assign(this.config,e),t.useSharedArrayBuffer===this.config.useSharedArrayBuffer?t.workerCount===this.config.workerCount?(!this.config.enableWorker&&this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.config.enableWorker&&!this.workerPool&&this.isWorkerSupported()&&this.initializeWorkerPool()):this.reinitializeWorkerPool():this.reinitializeWorkerSystem()},i.reinitializeWorkerSystem=function(){this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.sharedBuffer=null,this.sharedFloatArray=null,this.config.useSharedArrayBuffer||(this.config.workerCount=1),this.config.enableWorker&&this.isWorkerSupported()&&(this.config.useSharedArrayBuffer&&this.initializeSharedArrayBuffer(),this.initializeWorkerPool())},i.reinitializeWorkerPool=function(){this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.config.enableWorker&&this.isWorkerSupported()&&this.initializeWorkerPool()},i.getWorkerInfo=function(){var e="sync";return this.config.enableWorker&&this.workerPool&&(e=this.config.useSharedArrayBuffer&&this.sharedFloatArray&&this.isSharedArrayBufferSupported()?"shared-buffer":"worker"),{enabled:this.config.enableWorker,workerCount:this.config.workerCount,entitiesPerWorker:this.config.entitiesPerWorker,maxSystemWorkerCount:this.getMaxSystemWorkerCount(),isProcessing:this.isProcessing,sharedArrayBufferSupported:this.isSharedArrayBufferSupported(),sharedArrayBufferEnabled:this.config.useSharedArrayBuffer,currentMode:e}},i.onDestroy=function(){e.prototype.onDestroy.call(this),this.workerPool&&(this.workerPool.destroy(),this.workerPool=null)},i.getLoggerName=function(){return j(this)},t}(Te),an=function(){function e(e,t){var n=this;void 0===t&&(t=null),this.workers=[],this.taskQueue=[],this.busyWorkers=new Set,this.taskCounter=0,this.sharedBuffer=null,this.logger=Y("PlatformWorkerPool"),this.sharedBuffer=t,this.workers=e;for(var i=function(i){var r=e[i];r.onMessage((function(e){return n.handleWorkerMessage(i,e.data)})),r.onError((function(e){return n.handleWorkerError(i,e)})),t&&r.postMessage({type:"init",sharedBuffer:t})},r=0;r<e.length;r++)i(r)}var t=e.prototype;return t.executeSharedBuffer=function(e){var t=this;return new Promise((function(n,i){var r={id:"shared-task-"+ ++t.taskCounter,data:a({},e,{type:"shared"}),resolve:function(){return n()},reject:i};t.taskQueue.push(r),t.processQueue()}))},t.execute=function(e){var t=this;return new Promise((function(n,i){var r={id:"task-"+ ++t.taskCounter,data:e,resolve:function(e){n(e)},reject:i};t.taskQueue.push(r),t.processQueue()}))},t.processQueue=function(){if(0!==this.taskQueue.length)for(var e=0;e<this.workers.length;e++)if(!this.busyWorkers.has(e)&&this.taskQueue.length>0){var t=this.taskQueue.shift();this.busyWorkers.add(e),this.workers[e].postMessage(a({id:t.id},t.data)),this.workers[e]._currentTask=t}},t.handleWorkerMessage=function(e,t){var n=this.workers[e],i=n._currentTask;i&&(this.busyWorkers.delete(e),n._currentTask=null,t.error?i.reject(new Error(t.error)):i.resolve(t.result),this.processQueue())},t.handleWorkerError=function(e,t){var n=this.workers[e],i=n._currentTask;i&&(this.busyWorkers.delete(e),n._currentTask=null,i.reject(new Error(t.message))),this.processQueue()},t.destroy=function(){for(var e,t=o(this.workers);!(e=t()).done;){e.value.terminate()}this.workers.length=0,this.taskQueue.length=0,this.busyWorkers.clear()},e}(),cn=function(){function e(){}return e.registerComponentMigration=function(e,t,n,i){this.componentMigrations.has(e)||this.componentMigrations.set(e,new Map),this.componentMigrations.get(e).set(t,i)},e.registerSceneMigration=function(e,t,n){this.sceneMigrations.set(e,n)},e.migrateComponent=function(e,t){var n=e.version;if(n===t)return e;var i=this.componentMigrations.get(e.type);if(!i)return console.warn("No migration path found for component "+e.type),e;for(var r=a({},e),s=n;s<t;){var o=i.get(s);if(!o){console.warn("Missing migration from version "+s+" to "+(s+1)+" for "+e.type);break}r.data=o(r.data,s,s+1),s++}return r.version=s,r},e.migrateScene=function(e,t){var n=e.version;if(n===t)return e;for(var i=a({},e),r=n;r<t;){var s=this.sceneMigrations.get(r);if(!s){console.warn("Missing scene migration from version "+r+" to "+(r+1));break}i=s(i,r,r+1),r++}return i.version=r,i=this.migrateSceneComponents(i)},e.migrateSceneComponents=function(e){var t=this,n=a({},e);return n.entities=e.entities.map((function(n){return a({},n,{components:n.components.map((function(n){var i=e.componentTypeRegistry.find((function(e){return e.typeName===n.type}));return i&&i.version!==n.version?t.migrateComponent(n,i.version):n})),children:t.migrateEntitiesComponents(n.children,e.componentTypeRegistry)})})),n},e.migrateEntitiesComponents=function(e,t){var n=this;return e.map((function(e){return a({},e,{components:e.components.map((function(e){var i=t.find((function(t){return t.typeName===e.type}));return i&&i.version!==e.version?n.migrateComponent(e,i.version):e})),children:n.migrateEntitiesComponents(e.children,t)})}))},e.clearMigrations=function(){this.componentMigrations.clear(),this.sceneMigrations.clear()},e.getComponentMigrationPath=function(e){var t=this.componentMigrations.get(e);return t?Array.from(t.keys()).sort((function(e,t){return e-t})):[]},e.getSceneMigrationPath=function(){return Array.from(this.sceneMigrations.keys()).sort((function(e,t){return e-t}))},e.canMigrateComponent=function(e,t,n){if(t===n)return!0;var i=this.componentMigrations.get(e);if(!i)return!1;for(var r=t;r<n;r++)if(!i.has(r))return!1;return!0},e.canMigrateScene=function(e,t){if(e===t)return!0;for(var n=e;n<t;n++)if(!this.sceneMigrations.has(n))return!1;return!0},e}();cn.componentMigrations=new Map,cn.sceneMigrations=new Map;var un=function(){function e(){this.fromVersion=1,this.toVersion=2}var t=e.prototype;return t.forComponent=function(e){return this.componentType=e,this},t.fromVersionToVersion=function(e,t){return this.fromVersion=e,this.toVersion=t,this},t.migrate=function(e){this.componentType?cn.registerComponentMigration(this.componentType,this.fromVersion,this.toVersion,e):cn.registerSceneMigration(this.fromVersion,this.toVersion,e)},e}();var hn=function(){function e(e){this._entity=e}var t=e.prototype;return t.with=function(e){return this._entity.addComponent(e),this},t.withConfigured=function(e,t){return this._entity.addComponent(e),t(e),this},t.withTag=function(e){return this._entity.tag=e,this},t.withName=function(e){return this._entity.name=e,this},t.withActive=function(e){return this._entity.active=e,this},t.withEnabled=function(e){return this._entity.enabled=e,this},t.withUpdateOrder=function(e){return this._entity.updateOrder=e,this},t.withChild=function(e){return this._entity.addChild(e),this},t.build=function(){return this._entity},s(e,[{key:"entity",get:function(){return this._entity}}])}();var ln=function(){function e(){}return e.getType=function(e){return e.constructor},e}(),fn=function(){function e(){}return e.toNumber=function(e){return null==e?0:Number(e)},e}();function dn(e){return"function"==typeof e&&e.prototype instanceof en}var pn=function(){function e(){}return e.detect=function(){var e,t=[],n="unknown",i=!1;return"undefined"!=typeof globalThis&&t.push("globalThis"),"undefined"!=typeof window&&t.push("window"),"undefined"!=typeof self&&t.push("self"),this.isNodeJS()?(n="nodejs",i=!0,e="NodeAdapter",t.push("nodejs","process","require")):this.isWeChatMiniGame()?(n="wechat-minigame",i=!0,e="WeChatMiniGameAdapter",t.push("wx","wechat-minigame")):this.isByteDanceMiniGame()?(n="bytedance-minigame",i=!0,e="ByteDanceMiniGameAdapter",t.push("tt","bytedance-minigame")):this.isAlipayMiniGame()?(n="alipay-minigame",i=!0,e="AlipayMiniGameAdapter",t.push("my","alipay-minigame")):this.isBaiduMiniGame()?(n="baidu-minigame",i=!0,e="BaiduMiniGameAdapter",t.push("swan","baidu-minigame")):this.isBrowser()&&(n="browser",i=!0,e="BrowserAdapter",t.push("browser")),"undefined"!=typeof Worker&&t.push("Worker"),"undefined"!=typeof SharedArrayBuffer&&t.push("SharedArrayBuffer"),"undefined"!=typeof navigator&&navigator.hardwareConcurrency&&t.push("hardwareConcurrency"),"undefined"!=typeof performance&&"function"==typeof performance.now&&t.push("performance.now"),"undefined"!=typeof Blob&&t.push("Blob"),"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL&&t.push("URL.createObjectURL"),{platform:n,confident:i,features:t,adapterClass:e}},e.isWeChatMiniGame=function(){if(void 0!==globalThis.wx){var e=globalThis.wx;return!!(e.getSystemInfo&&e.createCanvas&&e.createImage)}return!1},e.isByteDanceMiniGame=function(){if(void 0!==globalThis.tt){var e=globalThis.tt;return!!(e.getSystemInfo&&e.createCanvas&&e.createImage)}return!1},e.isNodeJS=function(){try{return!("undefined"==typeof process||!process.versions||!process.versions.node||"undefined"==typeof require||"undefined"==typeof module||"undefined"==typeof exports||"undefined"!=typeof window||"undefined"!=typeof document)}catch(e){return!1}},e.isAlipayMiniGame=function(){if(void 0!==globalThis.my){var e=globalThis.my;return!(!e.getSystemInfo||!e.createCanvas)}return!1},e.isBaiduMiniGame=function(){if(void 0!==globalThis.swan){var e=globalThis.swan;return!(!e.getSystemInfo||!e.createCanvas)}return!1},e.isBrowser=function(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator&&void 0!==window.location},e.getDetailedInfo=function(){var e={};return e.userAgent="undefined"!=typeof navigator?navigator.userAgent:"unknown",e.platform="undefined"!=typeof navigator?navigator.platform:"unknown",e.globalObjects={window:"undefined"!=typeof window,document:"undefined"!=typeof document,navigator:"undefined"!=typeof navigator,wx:void 0!==globalThis.wx,tt:void 0!==globalThis.tt,my:void 0!==globalThis.my,swan:void 0!==globalThis.swan},e.workerSupport={Worker:"undefined"!=typeof Worker,SharedWorker:"undefined"!=typeof SharedWorker,ServiceWorker:"undefined"!=typeof navigator&&"serviceWorker"in navigator,SharedArrayBuffer:"undefined"!=typeof SharedArrayBuffer,crossOriginIsolated:"undefined"!=typeof self&&self.crossOriginIsolated},e.performance={performanceNow:"undefined"!=typeof performance&&"function"==typeof performance.now,hardwareConcurrency:"undefined"!=typeof navigator?navigator.hardwareConcurrency:void 0},e.apiSupport={Blob:"undefined"!=typeof Blob,URL:"undefined"!=typeof URL,createObjectURL:"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL,ArrayBuffer:"undefined"!=typeof ArrayBuffer,TypedArrays:"undefined"!=typeof Float32Array},e},e}();exports.AutoTyped=function(e){return function(t,n){var i=String(n);t.constructor.__autoTypedFields||(t.constructor.__autoTypedFields=new Map),t.constructor.__autoTypedFields.set(i,e||{})}},exports.BitMask64Utils=pe,exports.Bits=xe,exports.COMPONENT_TYPE_NAME=L,exports.Colors=q,exports.Component=en,exports.ComponentDataCollector=he,exports.ComponentPool=ce,exports.ComponentPoolManager=ue,exports.ComponentRegistry=me,exports.ComponentSerializer=et,exports.ComponentSparseSet=De,exports.ComponentStorage=ve,exports.ConsoleLogger=G,exports.Core=Kt,exports.DeepCopy=function(e,t){var n=String(t);e.constructor.__deepCopyFields||(e.constructor.__deepCopyFields=new Set),e.constructor.__deepCopyFields.add(n)},exports.ECSComponent=function(e){return function(t){if(!e||"string"!=typeof e)throw new Error("ECSComponent装饰器必须提供有效的类型名称");return t[L]=e,t}},exports.ECSFluentAPI=Ut,exports.ECSSystem=function(e,t){return function(n){if(!e||"string"!=typeof e)throw new Error("ECSSystem装饰器必须提供有效的类型名称");return n[N]=e,t&&(n.__systemMetadata__=t),n}},exports.ENTITY_REF_METADATA=te,exports.EVENT_TYPES=je,exports.Emitter=Zt,exports.EnableSoA=function(e){return e.__enableSoA=!0,e},exports.Entity=Ce,exports.EntityDataCollector=se,exports.EntityList=Ee,exports.EntityProcessorList=Me,exports.EntityRef=function(){return function(e,t){var n=e.constructor,i=n[te];i||(i={properties:new Set},n[te]=i);var r="symbol"==typeof t?t.toString():t;i.properties.add(r),Object.defineProperty(e,t,{get:function(){return ie(this).get(r)||null},set:function(e){var t=ie(this),n=t.get(r)||null;if(n!==e){var i=null!==this.entityId?Z(this.entityId):null;if(i&&i.referenceTracker){var s=i.referenceTracker;if(n&&s.unregisterReference(n,this,r),e){var o;if(e.scene!==i)return void ee.error("Cannot reference Entity from different Scene. Entity: "+e.name+", Scene: "+((null===(o=e.scene)||void 0===o?void 0:o.name)||"null"));if(e.isDestroyed)return ee.warn("Cannot reference destroyed Entity: "+e.name),void t.set(r,null);s.registerReference(e,this,r)}t.set(r,e)}else t.set(r,e)}},enumerable:!0,configurable:!0})}},exports.EntitySerializer=tt,exports.EntitySystem=Te,exports.EventBus=Ge,exports.EventTypeValidator=qe,exports.Float32=function(e,t){var n=String(t);e.constructor.__float32Fields||(e.constructor.__float32Fields=new Set),e.constructor.__float32Fields.add(n)},exports.Float64=function(e,t){var n=String(t);e.constructor.__float64Fields||(e.constructor.__float64Fields=new Set),e.constructor.__float64Fields.add(n)},exports.FuncPack=$t,exports.GlobalEventBus=Qe,exports.GlobalManager=Xt,exports.HighPrecision=function(e,t){var n=String(t);e.constructor.__highPrecisionFields||(e.constructor.__highPrecisionFields=new Set),e.constructor.__highPrecisionFields.add(n)},exports.IdentifierPool=be,exports.IgnoreSerialization=function(){return function(e,t){var n=e.constructor,i=n[Ke];i||(i={options:{version:1},fields:new Map,ignoredFields:new Set},n[Ke]=i),i.ignoredFields.add(t)}},exports.IncrementalSerializer=Dt,exports.Inject=M,exports.Injectable=A,exports.Int16=function(e,t){var n=String(t);e.constructor.__int16Fields||(e.constructor.__int16Fields=new Set),e.constructor.__int16Fields.add(n)},exports.Int32=function(e,t){var n=String(t);e.constructor.__int32Fields||(e.constructor.__int32Fields=new Set),e.constructor.__int32Fields.add(n)},exports.Int8=function(e,t){var n=String(t);e.constructor.__int8Fields||(e.constructor.__int8Fields=new Set),e.constructor.__int8Fields.add(n)},exports.IntervalSystem=rn,exports.Logger=V,exports.LoggerManager=Q,exports.Matcher=Ae,exports.MigrationBuilder=un,exports.NumberExtension=fn,exports.PassiveSystem=nn,exports.PerformanceDataCollector=ae,exports.PerformanceMonitor=O,exports.PlatformDetector=pn,exports.PlatformManager=sn,exports.PluginManager=Qt,exports.Pool=z,exports.PoolManager=P,exports.ProcessingSystem=tn,exports.QuerySystem=We,exports.ReactiveQuery=Ue,exports.ReferenceTracker=X,exports.SERIALIZABLE_METADATA=Ke,exports.SERIALIZE_FIELD=Je,exports.SERIALIZE_OPTIONS=$e,exports.SYSTEM_TYPE_NAME=N,exports.Scene=Bt,exports.SceneDataCollector=fe,exports.SceneManager=qt,exports.SceneSerializer=kt,exports.Serializable=function(e){return function(t){if(!e||"number"!=typeof e.version)throw new Error("Serializable装饰器必须提供有效的版本号");var n=t[Ke];return n?n.options=e:(n={options:e,fields:new Map,ignoredFields:new Set},t[Ke]=n),t}},exports.Serialize=Ze,exports.SerializeArray=function(e,t){var n=String(t);e.constructor.__serializeArrayFields||(e.constructor.__serializeArrayFields=new Set),e.constructor.__serializeArrayFields.add(n)},exports.SerializeAsMap=function(){return function(e,t){Ze({serializer:function(e){return e instanceof Map?Array.from(e.entries()):null},deserializer:function(e){return Array.isArray(e)?new Map(e):new Map}})(e,t)}},exports.SerializeAsSet=function(){return function(e,t){Ze({serializer:function(e){return e instanceof Set?Array.from(e):null},deserializer:function(e){return Array.isArray(e)?new Set(e):new Set}})(e,t)}},exports.SerializeMap=function(e,t){var n=String(t);e.constructor.__serializeMapFields||(e.constructor.__serializeMapFields=new Set),e.constructor.__serializeMapFields.add(n)},exports.SerializeSet=function(e,t){var n=String(t);e.constructor.__serializeSetFields||(e.constructor.__serializeSetFields=new Set),e.constructor.__serializeSetFields.add(n)},exports.ServiceContainer=zt,exports.SoAStorage=ge,exports.SparseSet=Ie,exports.SystemDataCollector=oe,exports.Time=_,exports.Timer=C,exports.TypeInference=ye,exports.TypeSafeEventSystem=He,exports.TypeUtils=ln,exports.TypedEntityBuilder=hn,exports.TypedQueryBuilder=Ye,exports.TypedQueryResult=Ve,exports.Uint16=function(e,t){var n=String(t);e.constructor.__uint16Fields||(e.constructor.__uint16Fields=new Set),e.constructor.__uint16Fields.add(n)},exports.Uint32=function(e,t){var n=String(t);e.constructor.__uint32Fields||(e.constructor.__uint32Fields=new Set),e.constructor.__uint32Fields.add(n)},exports.Uint8=function(e,t){var n=String(t);e.constructor.__uint8Fields||(e.constructor.__uint8Fields=new Set),e.constructor.__uint8Fields.add(n)},exports.Uint8Clamped=function(e,t){var n=String(t);e.constructor.__uint8ClampedFields||(e.constructor.__uint8ClampedFields=new Set),e.constructor.__uint8ClampedFields.add(n)},exports.Updatable=T,exports.VersionMigrationManager=cn,exports.WebSocketManager=de,exports.WorkerEntitySystem=on,exports.World=jt,exports.WorldManager=Yt,exports.addAndConfigure=function(e,t,n){return e.addComponent(t),n(t),e},exports.buildEntity=function(e){return new hn(e)},exports.createECSAPI=Wt,exports.createInstance=I,exports.createLogger=Y,exports.createQuery=function(){return new Ye},exports.getBasicWorkerConfig=function(){return sn.getInstance().getBasicWorkerConfig()},exports.getComponentInstanceTypeName=H,exports.getComponentTypeName=W,exports.getComponents=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return n.map((function(t){return e.getComponent(t)}))},exports.getCurrentAdapter=function(){return sn.getInstance().getAdapter()},exports.getEntityRefMetadata=re,exports.getFullPlatformConfig=function(){return sn.getInstance().getFullPlatformConfig()},exports.getOrAddComponent=function(e,t,n){var i=e.getComponent(t);return i||(i=n(),e.addComponent(i)),i},exports.getSceneByEntityId=Z,exports.getSerializationMetadata=Xe,exports.getSystemInstanceTypeName=j,exports.getSystemMetadata=U,exports.getSystemTypeName=F,exports.getUpdatableMetadata=R,exports.hasAdapter=function(){return sn.getInstance().hasAdapter()},exports.hasAnyComponent=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return n.some((function(t){return e.hasComponent(t)}))},exports.hasComponents=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return n.every((function(t){return e.hasComponent(t)}))},exports.hasEntityRef=function(e){return null!==re(e)},exports.isComponentArray=function(e){return e.every(dn)},exports.isComponentType=dn,exports.isSerializable=function(e){return null!==Xe(e)},exports.isUpdatable=D,exports.queryFor=function(e){return new Ye([e])},exports.queryForAll=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return new Ye(t)},exports.registerInjectable=function(e,t,n){if(void 0===n&&(n=!0),!x(t))throw new Error(t.name+" is not marked as @Injectable(). Please add @Injectable() decorator to the class.");var i=function(e){return I(t,e)};n?e.registerSingleton(t,i):e.registerTransient(t,i)},exports.registerPlatformAdapter=function(e){return sn.getInstance().registerAdapter(e)},exports.requireComponent=function(e,t){var n=e.getComponent(t);if(!n)throw new Error("Component "+t.name+" not found on entity "+e.name+" (id: "+e.id+")");return n},exports.resetLoggerColors=function(){Q.getInstance().resetColors()},exports.setGlobalLogLevel=function(e){Q.getInstance().setGlobalLevel(e)},exports.setLoggerColors=function(e){Q.getInstance().setGlobalColors(e)},exports.setLoggerFactory=function(e){Q.getInstance().setLoggerFactory(e)},exports.supportsFeature=function(e){return sn.getInstance().supportsFeature(e)},exports.tryGetComponent=function(e,t){var n=e.getComponent(t);return null!==n?n:void 0},exports.updateComponent=function(e,t,n){var i=e.getComponent(t);return!!i&&(Object.assign(i,n),!0)};
1
+ "use strict";function e(e,t,n,s){var i,r=arguments.length,o=r<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,n):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(r<3?i(o):r>3?i(t,n,o):i(t,n))||o);return r>3&&o&&Object.defineProperty(t,n,o),o}function t(e,t){return function(n,s){t(n,s,e)}}function n(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}"function"==typeof SuppressedError&&SuppressedError;class s{static update(e){this.unscaledDeltaTime=e,this.deltaTime=e*this.timeScale,this.unscaledTotalTime+=this.unscaledDeltaTime,this.totalTime+=this.deltaTime,this.frameCount++}static sceneChanged(){this.frameCount=0,this.totalTime=0,this.unscaledTotalTime=0,this.deltaTime=0,this.unscaledDeltaTime=0}static checkEvery(e,t){return this.totalTime-t>=e}}s.deltaTime=0,s.unscaledDeltaTime=0,s.totalTime=0,s.unscaledTotalTime=0,s.timeScale=1,s.frameCount=0;class i{constructor(){this._timeInSeconds=0,this._repeats=!1,this._isDone=!1,this._elapsedTime=0}getContext(){return this.context}get isDone(){return this._isDone}get elapsedTime(){return this._elapsedTime}reset(){this._elapsedTime=0}stop(){this._isDone=!0}tick(){return!this._isDone&&this._elapsedTime>this._timeInSeconds&&(this._elapsedTime-=this._timeInSeconds,this._onTime(this),this._isDone||this._repeats||(this._isDone=!0)),this._elapsedTime+=s.deltaTime,this._isDone}initialize(e,t,n,s){this._timeInSeconds=e,this._repeats=t,this.context=n,this._onTime=s.bind(n)}unload(){this.context=null,this._onTime=null}}const r=new WeakMap,o=new WeakMap,a=new WeakMap;function c(){return function(e){const t=r.get(e);r.set(e,{injectable:!0,dependencies:[],...t?.properties&&{properties:t.properties}})}}function h(e=0){return function(t){const n=t.prototype;if(!n||"function"!=typeof n.update)throw new Error(`@Updatable() decorator requires class ${t.name} to implement IUpdatable interface with update() method. Please add 'implements IUpdatable' and define update(deltaTime?: number): void method.`);a.set(t,{updatable:!0,priority:e})}}function l(e){return function(t,n,s){let i=o.get(t);i||(i=new Map,o.set(t,i)),i.set(s,e)}}function u(e){const t=r.get(e);return t?.injectable??!1}function d(e,t){const n=(s=e,o.get(s)||new Map);var s;const i=[],r=e.length;for(let s=0;s<r;s++){const r=n.get(s);if(r){if("string"==typeof r||"symbol"==typeof r)throw new Error(`String and Symbol service identifiers are not yet supported in constructor injection. Please use class types for ${e.name} parameter ${s}`);i.push(t.resolve(r))}else i.push(void 0)}return new e(...i)}function p(e,t){const n=e.constructor,s=(i=n,r.get(i));var i;if(s?.properties&&0!==s.properties.size)for(const[n,i]of s.properties){const s=t.resolve(i);null!==s&&(e[n]=s)}}function m(e){const t=a.get(e);return t?.updatable??!1}function g(e){return a.get(e)}var y;exports.TimerManager=class{constructor(){this._timers=[]}update(){for(let e=this._timers.length-1;e>=0;e--)this._timers[e].tick()&&(this._timers[e].unload(),this._timers.splice(e,1))}schedule(e,t,n,s){const r=new i;return r.initialize(e,t,n,s),this._timers.push(r),r}dispose(){for(const e of this._timers)e.unload();this._timers=[]}},exports.TimerManager=e([h()],exports.TimerManager),exports.PerformanceWarningType=void 0,(y=exports.PerformanceWarningType||(exports.PerformanceWarningType={})).HIGH_EXECUTION_TIME="high_execution_time",y.HIGH_MEMORY_USAGE="high_memory_usage",y.HIGH_CPU_USAGE="high_cpu_usage",y.FREQUENT_GC="frequent_gc",y.LOW_FPS="low_fps",y.HIGH_ENTITY_COUNT="high_entity_count";class f{constructor(){this._systemData=new Map,this._systemStats=new Map,this._isEnabled=!1,this._maxRecentSamples=60}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}get isEnabled(){return this._isEnabled}startMonitoring(e){return this._isEnabled?performance.now():0}endMonitoring(e,t,n=0){if(!this._isEnabled||0===t)return;const s=performance.now(),i=s-t,r={name:e,executionTime:i,entityCount:n,averageTimePerEntity:n>0?i/n:0,lastUpdateTime:s};this._systemData.set(e,r),this.updateStats(e,i)}updateStats(e,t){let n=this._systemStats.get(e);n||(n={totalTime:0,averageTime:0,minTime:Number.MAX_VALUE,maxTime:0,executionCount:0,recentTimes:[],standardDeviation:0,percentile95:0,percentile99:0},this._systemStats.set(e,n)),n.totalTime+=t,n.executionCount++,n.averageTime=n.totalTime/n.executionCount,n.minTime=Math.min(n.minTime,t),n.maxTime=Math.max(n.maxTime,t),n.recentTimes.push(t),n.recentTimes.length>this._maxRecentSamples&&n.recentTimes.shift(),this.calculateAdvancedStats(n)}calculateAdvancedStats(e){if(0===e.recentTimes.length)return;const t=e.recentTimes.reduce(((e,t)=>e+t),0)/e.recentTimes.length,n=e.recentTimes.reduce(((e,n)=>e+Math.pow(n-t,2)),0)/e.recentTimes.length;e.standardDeviation=Math.sqrt(n);const s=[...e.recentTimes].sort(((e,t)=>e-t)),i=s.length;e.percentile95=s[Math.floor(.95*i)]||0,e.percentile99=s[Math.floor(.99*i)]||0}getSystemData(e){return this._systemData.get(e)}getSystemStats(e){return this._systemStats.get(e)}getAllSystemData(){return new Map(this._systemData)}getAllSystemStats(){return new Map(this._systemStats)}getPerformanceReport(){if(!this._isEnabled)return"Performance monitoring is disabled.";const e=[];e.push("=== ECS Performance Report ==="),e.push("");const t=Array.from(this._systemStats.entries()).sort(((e,t)=>t[1].averageTime-e[1].averageTime));for(const[n,s]of t){const t=this._systemData.get(n);e.push(`System: ${n}`),e.push(` Current: ${t?.executionTime.toFixed(2)}ms (${t?.entityCount} entities)`),e.push(` Average: ${s.averageTime.toFixed(2)}ms`),e.push(` Min/Max: ${s.minTime.toFixed(2)}ms / ${s.maxTime.toFixed(2)}ms`),e.push(` Total: ${s.totalTime.toFixed(2)}ms (${s.executionCount} calls)`),t?.averageTimePerEntity&&t.averageTimePerEntity>0&&e.push(` Per Entity: ${t.averageTimePerEntity.toFixed(4)}ms`),e.push("")}const n=Array.from(this._systemData.values()).reduce(((e,t)=>e+t.executionTime),0);return e.push(`Total Frame Time: ${n.toFixed(2)}ms`),e.push(`Systems Count: ${this._systemData.size}`),e.join("\n")}reset(){this._systemData.clear(),this._systemStats.clear()}resetSystem(e){this._systemData.delete(e),this._systemStats.delete(e)}getPerformanceWarnings(e=16.67){const t=[];for(const[n,s]of this._systemData.entries())s.executionTime>e&&t.push(`${n}: ${s.executionTime.toFixed(2)}ms (>${e}ms)`);return t}setMaxRecentSamples(e){this._maxRecentSamples=e;for(const t of this._systemStats.values())for(;t.recentTimes.length>e;)t.recentTimes.shift()}dispose(){this._systemData.clear(),this._systemStats.clear(),this._isEnabled=!1}}class _{constructor(e,t=100,n=1024){this._objects=[],this._createFn=e,this._maxSize=t,this._objectSize=n,this._stats={size:0,maxSize:t,totalCreated:0,totalObtained:0,totalReleased:0,hitRate:0,estimatedMemoryUsage:0}}static getPool(e,t=100,n=1024){let s=this._pools.get(e);return s||(s=new _((()=>new e),t,n),this._pools.set(e,s)),s}obtain(){if(this._stats.totalObtained++,this._objects.length>0){const e=this._objects.pop();return this._stats.size--,this._updateHitRate(),this._updateMemoryUsage(),e}return this._stats.totalCreated++,this._updateHitRate(),this._createFn()}release(e){e&&(this._stats.totalReleased++,this._stats.size<this._maxSize&&(e.reset(),this._objects.push(e),this._stats.size++,this._updateMemoryUsage()))}getStats(){return{...this._stats}}clear(){for(const e of this._objects)e.reset();this._objects.length=0,this._stats.size=0,this._updateMemoryUsage()}compact(e){const t=e??Math.floor(this._objects.length/2);for(;this._objects.length>t;){const e=this._objects.pop();e&&(e.reset(),this._stats.size--)}this._updateMemoryUsage()}prewarm(e){const t=Math.min(e,this._maxSize-this._objects.length);for(let e=0;e<t;e++){const e=this._createFn();e.reset(),this._objects.push(e),this._stats.totalCreated++,this._stats.size++}this._updateMemoryUsage()}setMaxSize(e){this._maxSize=e,this._stats.maxSize=e,this._objects.length>e&&this.compact(e)}getAvailableCount(){return this._objects.length}isEmpty(){return 0===this._objects.length}isFull(){return this._objects.length>=this._maxSize}static getAllPoolTypes(){return Array.from(this._pools.keys())}static getAllPoolStats(){const e={};for(const[t,n]of this._pools){e[t.name||t.toString()]=n.getStats()}return e}static compactAllPools(){for(const e of this._pools.values())e.compact()}static clearAllPools(){for(const e of this._pools.values())e.clear();this._pools.clear()}static getGlobalStatsString(){const e=this.getAllPoolStats(),t=["=== Object Pool Global Statistics ===",""];if(0===Object.keys(e).length)return t.push("No pools registered"),t.join("\n");for(const[n,s]of Object.entries(e))t.push(`${n}:`),t.push(` Size: ${s.size}/${s.maxSize}`),t.push(` Hit Rate: ${(100*s.hitRate).toFixed(1)}%`),t.push(` Total Created: ${s.totalCreated}`),t.push(` Total Obtained: ${s.totalObtained}`),t.push(` Memory: ${(s.estimatedMemoryUsage/1024).toFixed(1)} KB`),t.push("");return t.join("\n")}_updateHitRate(){if(0===this._stats.totalObtained)this._stats.hitRate=0;else{const e=this._stats.totalObtained-this._stats.totalCreated;this._stats.hitRate=e/this._stats.totalObtained}}_updateMemoryUsage(){this._stats.estimatedMemoryUsage=this._stats.size*this._objectSize}}_._pools=new Map;class S{constructor(){this.pools=new Map,this.autoCompactInterval=6e4,this.lastCompactTime=0}registerPool(e,t){this.pools.set(e,t)}getPool(e){return this.pools.get(e)||null}update(){const e=Date.now();e-this.lastCompactTime>this.autoCompactInterval&&(this.compactAllPools(),this.lastCompactTime=e)}createPool(e,t,n=100,s=1024){let i=this.pools.get(e);return i||(i=new _(t,n,s),this.pools.set(e,i)),i}removePool(e){const t=this.pools.get(e);return!!t&&(t.clear(),this.pools.delete(e),!0)}getPoolNames(){return Array.from(this.pools.keys())}getPoolCount(){return this.pools.size}compactAllPools(){for(const e of this.pools.values())e.compact()}clearAllPools(){for(const e of this.pools.values())e.clear()}getAllStats(){const e=new Map;for(const[t,n]of this.pools)e.set(t,n.getStats());return e}getGlobalStats(){let e=0,t=0,n=0,s=0,i=0,r=0;for(const o of this.pools.values()){const a=o.getStats();e+=a.size,t+=a.maxSize,n+=a.totalCreated,s+=a.totalObtained,i+=a.totalReleased,r+=a.estimatedMemoryUsage}return{size:e,maxSize:t,totalCreated:n,totalObtained:s,totalReleased:i,hitRate:0===s?0:(s-n)/s,estimatedMemoryUsage:r}}getStatsString(){const e=["=== Pool Manager Statistics ===",""];if(0===this.pools.size)return e.push("No pools registered"),e.join("\n");const t=this.getGlobalStats();e.push(`Total Pools: ${this.pools.size}`),e.push(`Global Hit Rate: ${(100*t.hitRate).toFixed(1)}%`),e.push(`Global Memory Usage: ${(t.estimatedMemoryUsage/1024).toFixed(1)} KB`),e.push("");for(const[t,n]of this.pools){const s=n.getStats();e.push(`${t}:`),e.push(` Size: ${s.size}/${s.maxSize}`),e.push(` Hit Rate: ${(100*s.hitRate).toFixed(1)}%`),e.push(` Memory: ${(s.estimatedMemoryUsage/1024).toFixed(1)} KB`),e.push("")}return e.join("\n")}setAutoCompactInterval(e){this.autoCompactInterval=e}prewarmAllPools(){for(const e of this.pools.values()){const t=e.getStats(),n=Math.floor(.2*t.maxSize);e.prewarm(n)}}reset(){this.clearAllPools(),this.pools.clear(),this.lastCompactTime=0}dispose(){this.reset()}}const C=Symbol("ComponentTypeName"),v=Symbol("SystemTypeName");function E(e){return e.__systemMetadata__}function b(e){const t=e[C];return t||(e.name||"UnknownComponent")}function T(e){const t=e[v];return t||(e.name||"UnknownSystem")}function w(e){return b(e.constructor)}function A(e){return T(e.constructor)}const M="undefined"!=typeof globalThis&&globalThis.WeakRef||"undefined"!=typeof global&&global.WeakRef||"undefined"!=typeof window&&window.WeakRef||class{constructor(e){this._target=e}deref(){return this._target}},I=new Map;function x(e){const t=I.get(e);return t?.deref()||null}class D{constructor(){this._references=new Map}registerReference(e,t,n){const s=e.id;let i=this._references.get(s);i||(i=new Set,this._references.set(s,i));this._findRecord(i,t,n)||i.add({component:new M(t),propertyKey:n})}unregisterReference(e,t,n){const s=e.id,i=this._references.get(s);if(!i)return;const r=this._findRecord(i,t,n);r&&(i.delete(r),0===i.size&&this._references.delete(s))}clearReferencesTo(e){const t=this._references.get(e);if(!t)return;const n=[];for(const e of t){e.component.deref()&&n.push(e)}for(const e of n){const t=e.component.deref();t&&(t[e.propertyKey]=null)}this._references.delete(e)}clearComponentReferences(e){for(const[t,n]of this._references.entries()){const s=[];for(const t of n){const n=t.component.deref();n&&n!==e||s.push(t)}for(const e of s)n.delete(e);0===n.size&&this._references.delete(t)}}getReferencesTo(e){const t=this._references.get(e);if(!t)return[];const n=[];for(const e of t){e.component.deref()&&n.push(e)}return n}cleanup(){const e=[];for(const[t,n]of this._references.entries()){const s=[];for(const e of n)e.component.deref()||s.push(e);for(const e of s)n.delete(e);0===n.size&&e.push(t)}for(const t of e)this._references.delete(t)}registerEntityScene(e,t){I.set(e,new M(t))}unregisterEntityScene(e){I.delete(e)}getDebugInfo(){const e={};for(const[t,n]of this._references.entries()){const s=[];for(const e of n){const t=e.component.deref();t&&s.push({componentId:t.id,propertyKey:e.propertyKey})}s.length>0&&(e[`entity_${t}`]=s)}return e}_findRecord(e,t,n){for(const s of e){if(s.component.deref()===t&&s.propertyKey===n)return s}}}var k;exports.LogLevel=void 0,(k=exports.LogLevel||(exports.LogLevel={}))[k.Debug=0]="Debug",k[k.Info=1]="Info",k[k.Warn=2]="Warn",k[k.Error=3]="Error",k[k.Fatal=4]="Fatal",k[k.None=5]="None";const R={BLACK:"",RED:"",GREEN:"",YELLOW:"",BLUE:"",MAGENTA:"",CYAN:"",WHITE:"",BRIGHT_BLACK:"",BRIGHT_RED:"",BRIGHT_GREEN:"",BRIGHT_YELLOW:"",BRIGHT_BLUE:"",BRIGHT_MAGENTA:"",BRIGHT_CYAN:"",BRIGHT_WHITE:"",RESET:"",BOLD:"",UNDERLINE:""};class O{constructor(e={}){this._config={level:exports.LogLevel.Info,enableTimestamp:!0,enableColors:"undefined"==typeof window,...e}}debug(e,...t){this.log(exports.LogLevel.Debug,e,...t)}info(e,...t){this.log(exports.LogLevel.Info,e,...t)}warn(e,...t){this.log(exports.LogLevel.Warn,e,...t)}error(e,...t){this.log(exports.LogLevel.Error,e,...t)}fatal(e,...t){this.log(exports.LogLevel.Fatal,e,...t)}setLevel(e){this._config.level=e}setColors(e){0===Object.keys(e).length?delete this._config.colors:this._config.colors={...this._config.colors,...e}}setPrefix(e){this._config.prefix=e}log(e,t,...n){if(e<this._config.level)return;let s=t;if(this._config.enableTimestamp){s=`[${(new Date).toISOString()}] ${s}`}this._config.prefix&&(s=`[${this._config.prefix}] ${s}`);s=`[${exports.LogLevel[e].toUpperCase()}] ${s}`,this._config.output?this._config.output(e,s):this.outputToConsole(e,s,...n)}outputToConsole(e,t,...n){const s=this._config.enableColors?this.getColors():null;switch(e){case exports.LogLevel.Debug:s?console.debug(`${s.debug}${t}${s.reset}`,...n):console.debug(t,...n);break;case exports.LogLevel.Info:s?console.info(`${s.info}${t}${s.reset}`,...n):console.info(t,...n);break;case exports.LogLevel.Warn:s?console.warn(`${s.warn}${t}${s.reset}`,...n):console.warn(t,...n);break;case exports.LogLevel.Error:s?console.error(`${s.error}${t}${s.reset}`,...n):console.error(t,...n);break;case exports.LogLevel.Fatal:s?console.error(`${s.fatal}${t}${s.reset}`,...n):console.error(t,...n)}}getColors(){return{...{debug:R.BRIGHT_BLACK,info:R.GREEN,warn:R.YELLOW,error:R.RED,fatal:R.BRIGHT_RED,reset:R.RESET},...this._config.colors}}}class z{constructor(){this._loggers=new Map,this._defaultLevel=exports.LogLevel.Info}get defaultLogger(){return this._defaultLogger||(this._defaultLogger=this.createDefaultLogger()),this._defaultLogger}createDefaultLogger(){return this._loggerFactory?this._loggerFactory():new O({level:this._defaultLevel})}static getInstance(){return z._instance||(z._instance=new z),z._instance}getLogger(e){if(!e)return this.defaultLogger;if(!this._loggers.has(e)){const t=this._loggerFactory?this._loggerFactory(e):new O({prefix:e,level:this._defaultLevel});this._loggers.set(e,t)}return this._loggers.get(e)}setLogger(e,t){this._loggers.set(e,t)}setGlobalLevel(e){this._defaultLevel=e,this._defaultLogger instanceof O&&this._defaultLogger.setLevel(e);for(const t of this._loggers.values())t instanceof O&&t.setLevel(e)}createChildLogger(e,t){const n=`${e}.${t}`;return this.getLogger(n)}setGlobalColors(e){this._defaultLogger instanceof O&&this._defaultLogger.setColors(e);for(const t of this._loggers.values())t instanceof O&&t.setColors(e)}resetColors(){this._defaultLogger instanceof O&&this._defaultLogger.setColors({});for(const e of this._loggers.values())e instanceof O&&e.setColors({})}setLoggerFactory(e){(this._defaultLogger||this._loggers.size>0)&&console.warn("[LoggerManager] setLoggerFactory 应该在导入 ECS 模块之前调用。已创建的 logger 引用不会被更新。"),this._loggerFactory=e,delete this._defaultLogger,this._loggers.clear()}}const P=z.getInstance().getLogger();function N(e){return z.getInstance().getLogger(e)}const L=N("EntityRefDecorator"),B=Symbol("EntityRefMetadata"),$=Symbol("EntityRefValues");function W(e){let t=e[$];return t||(t=new Map,e[$]=t),t}function F(e){if(!e)return null;return("function"==typeof e?e:e.constructor)[B]||null}class H{collectEntityData(e){if(!e)return this.getEmptyEntityDebugData();const t=e.entities;if(!t)return this.getEmptyEntityDebugData();let n;try{n=t.getStats?t.getStats():this.calculateFallbackEntityStats(t)}catch(e){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}}const s=this.collectArchetypeData(e);return{totalEntities:n.totalEntities,activeEntities:n.activeEntities,pendingAdd:n.pendingAdd||0,pendingRemove:n.pendingRemove||0,entitiesPerArchetype:s.distribution,topEntitiesByComponents:s.topEntities,entityHierarchy:[],entityDetailsMap:{}}}getRawEntityList(e){if(!e)return[];const t=e.entities;return t?.buffer?t.buffer.map((e=>({id:e.id,name:e.name||`Entity_${e.id}`,active:!1!==e.active,enabled:!1!==e.enabled,activeInHierarchy:!1!==e.activeInHierarchy,componentCount:e.components.length,componentTypes:e.components.map((e=>w(e))),parentId:e.parent?.id||null,childIds:e.children?.map((e=>e.id))||[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0}))):[]}getEntityDetails(e,t){try{if(!t)return null;const n=t.entities;if(!n?.buffer)return null;const s=n.buffer.find((t=>t.id===e));if(!s)return null;const i=s.getDebugInfo?s.getDebugInfo():this.buildFallbackEntityInfo(s,t),r=this.extractComponentDetails(s.components),o=this.getSceneInfo(t);return{...i,scene:o.name,sceneName:o.name,sceneType:o.type,parentName:s.parent?.name||null,components:r||[],componentCount:s.components?.length||0,componentTypes:s.components?.map((e=>w(e)))||[]}}catch(e){return{error:`获取实体详情失败: ${e instanceof Error?e.message:String(e)}`,scene:"获取失败",components:[],componentCount:0,componentTypes:[]}}}getSceneInfo(e){let t="当前场景",n="Scene";try{if(e.name&&"string"==typeof e.name&&e.name.trim())t=e.name.trim();else if(e.constructor&&e.constructor.name)t=e.constructor.name,n=e.constructor.name;else if(e._name&&"string"==typeof e._name&&e._name.trim())t=e._name.trim();else{const s=Object.getPrototypeOf(e)?.constructor?.name;s&&"Object"!==s&&(t=s,n=s)}}catch(e){t="场景名获取失败"}return{name:t,type:n}}collectEntityDataWithMemory(e){if(!e)return this.getEmptyEntityDebugData();const t=e.entities;if(!t)return this.getEmptyEntityDebugData();let n;try{n=t.getStats?t.getStats():this.calculateFallbackEntityStats(t)}catch(e){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}}const s=this.collectArchetypeDataWithMemory(e);return{totalEntities:n.totalEntities,activeEntities:n.activeEntities,pendingAdd:n.pendingAdd||0,pendingRemove:n.pendingRemove||0,entitiesPerArchetype:s.distribution,topEntitiesByComponents:s.topEntities,entityHierarchy:this.buildEntityHierarchyTree(t),entityDetailsMap:this.buildEntityDetailsMap(t,e)}}collectArchetypeData(e){if(e&&e.archetypeSystem&&"function"==typeof e.archetypeSystem.getAllArchetypes)return this.extractArchetypeStatistics(e.archetypeSystem);const t={entities:e.entities?.buffer||[]};return{distribution:this.getArchetypeDistributionFast(t),topEntities:this.getTopEntitiesByComponentsFast(t)}}getArchetypeDistributionFast(e){const t=new Map;return e&&e.entities&&e.entities.forEach((e=>{const n=e.components?.map((e=>w(e)))||[],s=n.length>0?n.sort().join(", "):"无组件",i=t.get(s);i?i.count++:t.set(s,{count:1,componentTypes:n})})),Array.from(t.entries()).map((([e,t])=>({signature:e,count:t.count,memory:0}))).sort(((e,t)=>t.count-e.count)).slice(0,20)}getTopEntitiesByComponentsFast(e){return e&&e.entities?e.entities.map((e=>({id:e.id.toString(),name:e.name||`Entity_${e.id}`,componentCount:e.components?.length||0,memory:0}))).sort(((e,t)=>t.componentCount-e.componentCount)):[]}collectArchetypeDataWithMemory(e){if(e&&e.archetypeSystem&&"function"==typeof e.archetypeSystem.getAllArchetypes)return this.extractArchetypeStatisticsWithMemory(e.archetypeSystem);const t={entities:e.entities?.buffer||[]};return{distribution:this.getArchetypeDistributionWithMemory(t),topEntities:this.getTopEntitiesByComponentsWithMemory(t)}}extractArchetypeStatistics(e){const t=e.getAllArchetypes(),n=[],s=[];return t.forEach((e=>{const t=e.componentTypes?.map((e=>e.name)).join(",")||"Unknown",i=e.entities?.length||0;n.push({signature:t,count:i,memory:0}),e.entities&&e.entities.forEach((e=>{s.push({id:e.id.toString(),name:e.name||`Entity_${e.id}`,componentCount:e.components?.length||0,memory:0})}))})),n.sort(((e,t)=>t.count-e.count)),s.sort(((e,t)=>t.componentCount-e.componentCount)),{distribution:n,topEntities:s}}extractArchetypeStatisticsWithMemory(e){const t=e.getAllArchetypes(),n=[],s=[];return t.forEach((e=>{const t=e.componentTypes?.map((e=>e.name)).join(",")||"Unknown",i=e.entities?.length||0;let r=0;if(e.entities&&e.entities.length>0){const t=Math.min(5,e.entities.length);let n=0;for(let s=0;s<t;s++)n+=this.estimateEntityMemoryUsage(e.entities[s]);r=n/t*i}n.push({signature:t,count:i,memory:r}),e.entities&&e.entities.forEach((e=>{s.push({id:e.id.toString(),name:e.name||`Entity_${e.id}`,componentCount:e.components?.length||0,memory:this.estimateEntityMemoryUsage(e)})}))})),n.sort(((e,t)=>t.count-e.count)),s.sort(((e,t)=>t.componentCount-e.componentCount)),{distribution:n,topEntities:s}}getArchetypeDistributionWithMemory(e){const t=new Map;return e&&e.entities&&e.entities.forEach((e=>{const n=e.components?.map((e=>w(e)))||[],s=n.length>0?n.sort().join(", "):"无组件",i=t.get(s);let r=this.estimateEntityMemoryUsage(e);(isNaN(r)||r<0)&&(r=0),i?(i.count++,i.memory+=r):t.set(s,{count:1,memory:r,componentTypes:n})})),Array.from(t.entries()).map((([e,t])=>({signature:e,count:t.count,memory:isNaN(t.memory)?0:t.memory}))).sort(((e,t)=>t.count-e.count))}getTopEntitiesByComponentsWithMemory(e){return e&&e.entities?e.entities.map((e=>({id:e.id.toString(),name:e.name||`Entity_${e.id}`,componentCount:e.components?.length||0,memory:this.estimateEntityMemoryUsage(e)}))).sort(((e,t)=>t.componentCount-e.componentCount)):[]}getEmptyEntityDebugData(){return{totalEntities:0,activeEntities:0,pendingAdd:0,pendingRemove:0,entitiesPerArchetype:[],topEntitiesByComponents:[],entityHierarchy:[],entityDetailsMap:{}}}calculateFallbackEntityStats(e){const t=e.buffer||[],n=t.filter((e=>e.enabled&&!e.isDestroyed));return{totalEntities:t.length,activeEntities:n.length,pendingAdd:0,pendingRemove:0,averageComponentsPerEntity:n.length>0?t.reduce(((e,t)=>e+(t.components?.length||0)),0)/n.length:0}}estimateEntityMemoryUsage(e){try{let t=0;const n=this.calculateObjectSize(e,["components","children","parent"]);return!isNaN(n)&&n>0&&(t+=n),e.components&&Array.isArray(e.components)&&e.components.forEach((e=>{const n=this.calculateObjectSize(e,["entity"]);!isNaN(n)&&n>0&&(t+=n)})),isNaN(t)||t<0?0:t}catch(e){return 0}}calculateObjectSize(e,t=[]){if(!e||"object"!=typeof e)return 0;const n=new WeakSet,s=(e,i=0)=>{if(!e||"object"!=typeof e||i>=2)return 0;if(n.has(e))return 0;n.add(e);let r=32;try{const n=Object.keys(e),o=Math.min(n.length,20);for(let a=0;a<o;a++){const o=n[a];if(!o||t.includes(o)||"constructor"===o||"__proto__"===o||o.startsWith("_cc_")||o.startsWith("__"))continue;const c=e[o];r+=2*o.length,"string"==typeof c?r+=Math.min(2*c.length,200):"number"==typeof c?r+=8:"boolean"==typeof c?r+=4:Array.isArray(c)?r+=40+Math.min(8*c.length,160):"object"==typeof c&&null!==c&&(r+=s(c,i+1))}}catch(e){return 64}return r};try{const t=s(e);return Math.max(t,32)}catch(e){return 64}}buildEntityHierarchyTree(e){if(!e?.buffer)return[];const t=[];return e.buffer.forEach((e=>{if(!e.parent){const n=this.buildEntityHierarchyNode(e);t.push(n)}})),t.sort(((e,t)=>e.name<t.name?-1:e.name>t.name?1:e.id-t.id)),t}buildEntityHierarchyNode(e){let t={id:e.id,name:e.name||`Entity_${e.id}`,active:!1!==e.active,enabled:!1!==e.enabled,activeInHierarchy:!1!==e.activeInHierarchy,componentCount:e.components.length,componentTypes:e.components.map((e=>w(e))),parentId:e.parent?.id||null,children:[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0};if(e.children&&e.children.length>0&&(t.children=e.children.map((e=>this.buildEntityHierarchyNode(e)))),"function"==typeof e.getDebugInfo){const n=e.getDebugInfo();t={...t,...n}}return e.components&&e.components.length>0&&(t.componentDetails=this.extractComponentDetails(e.components)),t}buildEntityDetailsMap(e,t){if(!e?.buffer)return{};const n={},s=e.buffer;for(let e=0;e<s.length;e+=100){s.slice(e,e+100).forEach((e=>{const s=e.getDebugInfo?e.getDebugInfo():this.buildFallbackEntityInfo(e,t),i=e.getComponentCacheStats?e.getComponentCacheStats():null,r=this.extractComponentDetails(e.components);n[e.id]={...s,parentName:e.parent?.name||null,components:r,componentTypes:s.componentTypes||r.map((e=>e.typeName)),cachePerformance:i?{hitRate:i.cacheStats.hitRate,size:i.cacheStats.size,maxSize:i.cacheStats.maxSize}:null}}))}return n}buildFallbackEntityInfo(e,t){const n=this.getSceneInfo(t);return{name:e.name||`Entity_${e.id}`,id:e.id,enabled:!1!==e.enabled,active:!1!==e.active,activeInHierarchy:!1!==e.activeInHierarchy,destroyed:e.isDestroyed||!1,scene:n.name,sceneName:n.name,sceneType:n.type,componentCount:e.components.length,componentTypes:e.components.map((e=>w(e))),componentMask:e.componentMask?.toString()||"0",parentId:e.parent?.id||null,childCount:e.children?.length||0,childIds:e.children.map((e=>e.id))||[],depth:e.getDepth?e.getDepth():0,tag:e.tag||0,updateOrder:e.updateOrder||0}}extractComponentDetails(e){return e.map((e=>{const t=w(e),n={};try{Object.keys(e).forEach((t=>{if(!t.startsWith("_")&&"entity"!==t&&"constructor"!==t){const s=e[t];null!=s&&(n[t]=this.formatPropertyValue(s))}})),0===Object.keys(n).length&&(n._info="该组件没有公开属性",n._componentId=w(e))}catch(t){n._error="属性提取失败",n._componentId=w(e)}return{typeName:t,properties:n}}))}getComponentProperties(e,t,n){try{if(!n)return{};const s=n.entities;if(!s?.buffer)return{};const i=s.buffer.find((t=>t.id===e));if(!i||t>=i.components.length)return{};const r=i.components[t],o={};return Object.keys(r).forEach((e=>{if(!e.startsWith("_")&&"entity"!==e){const t=r[e];null!=t&&(o[e]=this.formatPropertyValue(t))}})),o}catch(e){return{_error:"属性提取失败"}}}formatPropertyValue(e,t=0){return null==e?e:"object"!=typeof e?"string"==typeof e&&e.length>200?`[长字符串: ${e.length}字符] ${e.substring(0,100)}...`:e:0===t?this.formatObjectFirstLevel(e):this.createLazyLoadPlaceholder(e)}formatObjectFirstLevel(e){try{if(Array.isArray(e)){if(0===e.length)return[];if(e.length>10){const t=e.slice(0,3).map((e=>this.formatPropertyValue(e,1)));return{_isLazyArray:!0,_arrayLength:e.length,_sample:t,_summary:`数组[${e.length}个元素]`}}return e.map((e=>this.formatPropertyValue(e,1)))}const t=Object.keys(e);if(0===t.length)return{};const n={};let s=0;const i=15;for(const r of t){if(s>=i){n._hasMoreProperties=!0,n._totalProperties=t.length,n._hiddenCount=t.length-s;break}if(!r.startsWith("_")&&!r.startsWith("$")&&"function"!=typeof e[r])try{const t=e[r];null!=t&&(n[r]=this.formatPropertyValue(t,1),s++)}catch(e){n[r]=`[访问失败: ${e instanceof Error?e.message:String(e)}]`,s++}}return n}catch(e){return`[对象解析失败: ${e instanceof Error?e.message:String(e)}]`}}createLazyLoadPlaceholder(e){try{const t=e.constructor?.name||"Object";return{_isLazyObject:!0,_typeName:t,_summary:this.getObjectSummary(e,t),_objectId:this.generateObjectId(e)}}catch(e){return{_isLazyObject:!0,_typeName:"Unknown",_summary:`无法分析的对象: ${e instanceof Error?e.message:String(e)}`,_objectId:Math.random().toString(36).substr(2,9)}}}getObjectSummary(e,t){try{if((t.toLowerCase().includes("vec")||t.toLowerCase().includes("vector"))&&void 0!==e.x&&void 0!==e.y){const n=void 0!==e.z?e.z:"";return`${t}(${e.x}, ${e.y}${n?", "+n:""})`}if(t.toLowerCase().includes("color")&&void 0!==e.r&&void 0!==e.g&&void 0!==e.b){const n=void 0!==e.a?e.a:1;return`${t}(${e.r}, ${e.g}, ${e.b}, ${n})`}if(t.toLowerCase().includes("node")){return`${t}: ${e.name||e._name||"未命名"}`}if(t.toLowerCase().includes("component")){const n=e.node?.name||e.node?._name||"";return`${t}${n?` on ${n}`:""}`}const n=Object.keys(e);return 0===n.length?`${t} (空对象)`:`${t} (${n.length}个属性)`}catch(e){return`${t} (无法分析)`}}generateObjectId(e){try{return void 0!==e.id?`obj_${e.id}`:void 0!==e._id?`obj_${e._id}`:void 0!==e.uuid?`obj_${e.uuid}`:void 0!==e._uuid?`obj_${e._uuid}`:`obj_${Math.random().toString(36).substr(2,9)}`}catch{return`obj_${Math.random().toString(36).substr(2,9)}`}}expandLazyObject(e,t,n,s){try{if(!s)return null;const i=s.entities;if(!i?.buffer)return null;const r=i.buffer.find((t=>t.id===e));if(!r)return null;if(t>=r.components.length)return null;const o=r.components[t],a=this.getObjectByPath(o,n);return a?this.formatObjectFirstLevel(a):null}catch(e){return{error:`展开失败: ${e instanceof Error?e.message:String(e)}`}}}getObjectByPath(e,t){if(!t)return e;const n=t.split(".");let s=e;for(const e of n){if(null==s)return null;if(e.includes("[")&&e.includes("]")){const t=e.substring(0,e.indexOf("[")),n=parseInt(e.substring(e.indexOf("[")+1,e.indexOf("]")));if(t&&(s=s[t]),!(Array.isArray(s)&&n>=0&&n<s.length))return null;s=s[n]}else s=s[e]}return s}}class U{collectSystemData(e,t){if(!t)return{totalSystems:0,systemsInfo:[]};const n=t.entityProcessors;if(!n)return{totalSystems:0,systemsInfo:[]};const s=n.processors||[];let i=new Map,r=new Map;if(e)try{i=e.getAllSystemStats(),r=e.getAllSystemData()}catch(e){}return{totalSystems:s.length,systemsInfo:s.map((e=>{const t=e.systemName||A(e),n=i.get(t),s=r.get(t);return{name:t,type:A(e),entityCount:e.entities?.length||0,executionTime:n?.averageTime||s?.executionTime||0,minExecutionTime:n?.minTime===Number.MAX_VALUE?0:n?.minTime||0,maxExecutionTime:n?.maxTime||0,executionTimeHistory:n?.recentTimes||[],updateOrder:e.updateOrder||0,enabled:!1!==e.enabled,lastUpdateTime:s?.lastUpdateTime||0}}))}}}class q{constructor(){this.frameTimeHistory=[],this.maxHistoryLength=60,this.gcCollections=0,this.lastMemoryCheck=0}collectPerformanceData(e){const t=s.deltaTime,n=1e3*t,i=t>0?Math.round(1/t):0,r=this.getECSPerformanceData(e),o=r.totalExecutionTime,a=n>0?o/n*100:0;let c=0;performance.memory&&(c=performance.memory.usedJSHeapSize/1024/1024),this.frameTimeHistory.push(o),this.frameTimeHistory.length>this.maxHistoryLength&&this.frameTimeHistory.shift();const h=this.frameTimeHistory.filter((e=>e>=0));return{frameTime:o,engineFrameTime:n,ecsPercentage:a,memoryUsage:c,fps:i,averageFrameTime:h.length>0?h.reduce(((e,t)=>e+t),0)/h.length:o,minFrameTime:h.length>0?Math.min(...h):o,maxFrameTime:h.length>0?Math.max(...h):o,frameTimeHistory:[...this.frameTimeHistory],systemPerformance:this.getSystemPerformance(e),systemBreakdown:r.systemBreakdown,memoryDetails:this.getMemoryDetails()}}getECSPerformanceData(e){if(!e)return{totalExecutionTime:0,systemBreakdown:[]};if(!e.enabled){try{e.enabled=!0}catch(e){}return{totalExecutionTime:0,systemBreakdown:[]}}try{let t=0;const n=[],s=e.getAllSystemStats();if(0===s.size)return{totalExecutionTime:0,systemBreakdown:[]};for(const[e,i]of s.entries()){const s=i.recentTimes&&i.recentTimes.length>0?i.recentTimes[i.recentTimes.length-1]:i.averageTime||0;t+=s,n.push({systemName:e,executionTime:s,percentage:0})}return n.forEach((e=>{e.percentage=t>0?e.executionTime/t*100:0})),n.sort(((e,t)=>t.executionTime-e.executionTime)),{totalExecutionTime:t,systemBreakdown:n}}catch(e){return{totalExecutionTime:0,systemBreakdown:[]}}}getSystemPerformance(e){if(!e)return[];try{const t=e.getAllSystemStats(),n=e.getAllSystemData();return Array.from(t.entries()).map((([e,t])=>{const s=n.get(e);return{systemName:e,averageTime:t.averageTime||0,maxTime:t.maxTime||0,minTime:t.minTime===Number.MAX_VALUE?0:t.minTime||0,samples:t.executionCount||0,percentage:0,entityCount:s?.entityCount||0,lastExecutionTime:s?.executionTime||0}}))}catch(e){return[]}}getMemoryDetails(){const e={entities:0,components:0,systems:0,pooled:0,totalMemory:0,usedMemory:0,freeMemory:0,gcCollections:this.updateGCCount()};try{if(performance.memory){const t=performance.memory;if(e.totalMemory=t.jsHeapSizeLimit||536870912,e.usedMemory=t.usedJSHeapSize||0,e.freeMemory=e.totalMemory-e.usedMemory,this.lastMemoryCheck>0){this.lastMemoryCheck-e.usedMemory>1048576&&this.gcCollections++}this.lastMemoryCheck=e.usedMemory}else e.totalMemory=536870912,e.freeMemory=536870912}catch(e){return{totalMemory:0,usedMemory:0,freeMemory:0,entityMemory:0,componentMemory:0,systemMemory:0,pooledMemory:0,gcCollections:this.gcCollections}}return e}updateGCCount(){try{return"undefined"!=typeof PerformanceObserver||performance.measureUserAgentSpecificMemory,this.gcCollections}catch(e){return this.gcCollections}}}class G{constructor(e,t,n=1e3,s=10){this.pool=[],this.stats={totalCreated:0,totalAcquired:0,totalReleased:0},this.createFn=e,t&&(this.resetFn=t),this.maxSize=n,this.minSize=Math.max(1,s)}acquire(){return this.stats.totalAcquired++,this.pool.length>0?this.pool.pop():(this.stats.totalCreated++,this.createFn())}release(e){this.stats.totalReleased++,this.pool.length>=this.maxSize||(this.resetFn&&this.resetFn(e),this.pool.push(e))}prewarm(e){const t=Math.min(e,this.maxSize);for(let e=this.pool.length;e<t;e++){const e=this.createFn();this.resetFn&&this.resetFn(e),this.pool.push(e),this.stats.totalCreated++}}shrink(){for(;this.pool.length>this.minSize;)this.pool.pop()}clear(){this.pool.length=0}getAvailableCount(){return this.pool.length}getMaxSize(){return this.maxSize}getStats(){const e=0===this.stats.totalAcquired?0:(this.stats.totalAcquired-this.stats.totalCreated)/this.stats.totalAcquired;return{totalCreated:this.stats.totalCreated,totalAcquired:this.stats.totalAcquired,totalReleased:this.stats.totalReleased,hitRate:e,currentSize:this.pool.length,maxSize:this.maxSize,minSize:this.minSize,utilizationRate:this.pool.length/this.maxSize}}}class j{constructor(){this.pools=new Map,this.usageTracker=new Map,this.autoCleanupInterval=6e4,this.lastCleanupTime=0}static getInstance(){return j.instance||(j.instance=new j),j.instance}registerPool(e,t,n,s,i){this.pools.set(e,new G(t,n,s,i)),this.usageTracker.set(e,{createCount:0,releaseCount:0,lastAccessTime:Date.now()})}acquireComponent(e){const t=this.pools.get(e);return this.trackUsage(e,"create"),t?t.acquire():null}releaseComponent(e,t){const n=this.pools.get(e);this.trackUsage(e,"release"),n&&n.release(t)}trackUsage(e,t){let n=this.usageTracker.get(e);n||(n={createCount:0,releaseCount:0,lastAccessTime:Date.now()},this.usageTracker.set(e,n)),"create"===t?n.createCount++:n.releaseCount++,n.lastAccessTime=Date.now()}update(){const e=Date.now();if(!(e-this.lastCleanupTime<this.autoCleanupInterval)){for(const[t,n]of this.usageTracker.entries()){if(e-n.lastAccessTime>12e4){const e=this.pools.get(t);e&&e.shrink()}}this.lastCleanupTime=e}}getHotComponents(e=100){return Array.from(this.usageTracker.entries()).filter((([t,n])=>n.createCount>e)).map((([e])=>e))}prewarmAll(e=100){for(const t of this.pools.values())t.prewarm(e)}clearAll(){for(const e of this.pools.values())e.clear()}reset(){this.pools.clear(),this.usageTracker.clear()}getGlobalStats(){const e=[];for(const[t,n]of this.pools.entries())e.push({componentName:t,poolStats:n.getStats(),usage:this.usageTracker.get(t)});return e}getPoolStats(){const e=new Map;for(const[t,n]of this.pools)e.set(t,{available:n.getAvailableCount(),maxSize:n.getMaxSize()});return e}getPoolUtilization(){const e=new Map;for(const[t,n]of this.pools){const s=n.getAvailableCount(),i=n.getMaxSize(),r=i-s,o=i>0?r/i*100:0;e.set(t,{used:r,total:i,utilization:o})}return e}getComponentUtilization(e){const t=this.pools.get(e);if(!t)return 0;const n=t.getAvailableCount(),s=t.getMaxSize();return s>0?(s-n)/s*100:0}}class Q{collectComponentData(e){if(!e)return{componentTypes:0,componentInstances:0,componentStats:[]};const t=e.entities;if(!t?.buffer)return{componentTypes:0,componentInstances:0,componentStats:[]};const n=new Map;let s=0;t.buffer.forEach((e=>{e.components&&e.components.forEach((e=>{const t=w(e),i=n.get(t)||{count:0,entities:0};i.count++,s++,n.set(t,i)}))}));const i=new Map,r=new Map;try{const e=j.getInstance(),t=e.getPoolStats(),n=e.getPoolUtilization();for(const[e,n]of t.entries())r.set(e,n.maxSize);for(const[e,t]of n.entries())i.set(e,t.utilization)}catch(e){}return{componentTypes:n.size,componentInstances:s,componentStats:Array.from(n.entries()).map((([n,s])=>{const o=r.get(n)||0,a=i.get(n)||0,c=this.getEstimatedComponentSize(n,e);return{typeName:n,instanceCount:s.count,memoryPerInstance:c,totalMemory:s.count*c,poolSize:o,poolUtilization:a,averagePerEntity:s.count/t.buffer.length}}))}}getEstimatedComponentSize(e,t){if(Q.componentSizeCache.has(e))return Q.componentSizeCache.get(e);if(!t)return 64;const n=t.entities;if(!n?.buffer)return 64;let s=64;try{for(const t of n.buffer)if(t.components){const n=t.components.find((t=>w(t)===e));if(n){s=this.calculateQuickObjectSize(n);break}}}catch(e){s=64}return Q.componentSizeCache.set(e,s),s}calculateQuickObjectSize(e){if(!e||"object"!=typeof e)return 8;let t=32;const n=new WeakSet,s=(e,t=0)=>{if(!e||"object"!=typeof e||n.has(e)||t>3)return 0;n.add(e);let i=0;try{const n=Object.keys(e);for(let r=0;r<Math.min(n.length,20);r++){const o=n[r];if(!o||"entity"===o||"_entity"===o||"constructor"===o)continue;const a=e[o];i+=2*o.length,"string"==typeof a?i+=Math.min(2*a.length,200):"number"==typeof a?i+=8:"boolean"==typeof a?i+=4:"object"==typeof a&&null!==a&&(i+=s(a,t+1))}}catch(e){return 32}return i};return t+=s(e),Math.max(t,32)}calculateDetailedComponentMemory(e,t){if(!t)return this.getEstimatedComponentSize(e,t);const n=t.entities;if(!n?.buffer)return this.getEstimatedComponentSize(e,t);try{for(const t of n.buffer)if(t.components){const n=t.components.find((t=>w(t)===e));if(n)return this.estimateObjectSize(n)}}catch(e){}return this.getEstimatedComponentSize(e,t)}estimateObjectSize(e,t=new WeakSet,n=0){if(null==e||n>10)return 0;if(t.has(e))return 0;let s=0;switch(typeof e){case"boolean":s=4;break;case"number":default:s=8;break;case"string":s=24+Math.min(2*e.length,1e3);break;case"object":if(t.add(e),Array.isArray(e)){s=40+8*e.length;const i=Math.min(e.length,50);for(let r=0;r<i;r++)s+=this.estimateObjectSize(e[r],t,n+1)}else{s=32;try{const i=Object.getOwnPropertyNames(e),r=Math.min(i.length,30);for(let o=0;o<r;o++){const r=i[o];if(r&&("constructor"!==r&&"__proto__"!==r&&"entity"!==r&&"_entity"!==r&&!r.startsWith("_cc_")&&!r.startsWith("__")))try{s+=16+2*r.length;const i=e[r];null!=i&&(s+=this.estimateObjectSize(i,t,n+1))}catch(e){continue}}}catch(e){s=128}}}return 8*Math.ceil(s/8)}static clearCache(){Q.componentSizeCache.clear()}}Q.componentSizeCache=new Map;class V{constructor(){this.sceneStartTime=Date.now()}collectSceneData(e){if(!e)return{currentSceneName:"No Scene",isInitialized:!1,sceneRunTime:0,sceneEntityCount:0,sceneSystemCount:0,sceneMemory:0,sceneUptime:0};const t=(Date.now()-this.sceneStartTime)/1e3,n=e.entities,s=e.entityProcessors;return{currentSceneName:e.name||"Unnamed Scene",isInitialized:e._didSceneBegin||!1,sceneRunTime:t,sceneEntityCount:n?.buffer?.length||0,sceneSystemCount:s?.processors?.length||0,sceneMemory:0,sceneUptime:t}}setSceneStartTime(e){this.sceneStartTime=e}}class Y{constructor(e,t=!0){this.isConnected=!1,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.url=e,this.autoReconnect=t}setMessageHandler(e){this.messageHandler=e}connect(){return new Promise(((e,t)=>{try{this.ws=new WebSocket(this.url),this.ws.onopen=t=>{this.handleOpen(t),e()},this.ws.onclose=e=>{this.handleClose(e)},this.ws.onerror=e=>{this.handleError(e),t(e)},this.ws.onmessage=e=>{this.handleMessage(e)}}catch(e){this.handleConnectionFailure(e),t(e)}}))}disconnect(){this.ws&&(this.autoReconnect=!1,this.ws.close(),delete this.ws),this.isConnected=!1}send(e){if(this.isConnected&&this.ws)try{const t="string"==typeof e?e:JSON.stringify(e);this.ws.send(t)}catch(e){}}getConnectionStatus(){return this.isConnected}setMaxReconnectAttempts(e){this.maxReconnectAttempts=e}scheduleReconnect(){this.reconnectTimer&&clearTimeout(this.reconnectTimer);const e=Math.min(1e3*Math.pow(2,this.reconnectAttempts),3e4);this.reconnectAttempts++,this.reconnectTimer=setTimeout((()=>{this.connect().catch((e=>{this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect()}))}),e)}handleMessage(e){try{const t=JSON.parse(e.data);this.messageHandler&&this.messageHandler(t)}catch(e){}}handleOpen(e){this.isConnected=!0,this.reconnectAttempts=0,this.onOpen&&this.onOpen(e)}handleClose(e){this.isConnected=!1,this.onClose&&this.onClose(e),this.autoReconnect&&this.reconnectAttempts<this.maxReconnectAttempts&&this.scheduleReconnect()}handleError(e){this.onError&&this.onError(e)}handleConnectionFailure(e){this.onError&&this.onError(e)}}var J,Z;!function(e){e[e.LOW=0]="LOW",e[e.HIGH=1]="HIGH"}(J||(J={}));class X{static create(e){if(e<0)throw new Error(`Bit index ${e} out of range [0, ∞)`);const t={base:[0,0]};return X.setBit(t,e),t}static fromNumber(e){return{base:[e>>>0,0]}}static hasAny(e,t){const n=t.base,s=e.base,i=t.segments,r=e.segments,o=0!==(s[J.LOW]&n[J.LOW])||0!==(s[J.HIGH]&n[J.HIGH]);return!o&&i&&r?r.some(((e,t)=>{const n=i[t];return n&&(0!==(e[J.LOW]&n[J.LOW])||0!==(e[J.HIGH]&n[J.HIGH]))})):o}static hasAll(e,t){const n=e.base,s=t.base,i=e.segments,r=t.segments,o=(n[J.LOW]&s[J.LOW])===s[J.LOW]&&(n[J.HIGH]&s[J.HIGH])===s[J.HIGH];if(!o||!r)return o;const a=i?.length??0;if(i)for(let e=0;e<Math.min(a,r.length);e++){const t=i[e],n=r[e];if((t[J.LOW]&n[J.LOW])!==n[J.LOW]||(t[J.HIGH]&n[J.HIGH])!==n[J.HIGH])return!1}for(let e=a;e<r.length;e++){const t=r[e];if(0!==t[J.LOW]||0!==t[J.HIGH])return!1}return!0}static hasNone(e,t){const n=e.base,s=t.base,i=e.segments,r=t.segments,o=0===(n[J.LOW]&s[J.LOW])&&0===(n[J.HIGH]&s[J.HIGH]);return i&&o&&r?i.every(((e,t)=>{const n=r[t];return!n||0===(e[J.LOW]&n[J.LOW])&&0===(e[J.HIGH]&n[J.HIGH])})):o}static isZero(e){const t=0===e.base[J.LOW]&&0===e.base[J.HIGH];return e.segments&&t?e.segments.every((e=>0===e[J.LOW]&&0===e[J.HIGH])):t}static equals(e,t){const n=e.base[J.LOW]===t.base[J.LOW]&&e.base[J.HIGH]===t.base[J.HIGH];if(!n||!e.segments&&!t.segments)return n;const s=e.segments??[],i=t.segments??[];for(let e=0;e<Math.max(s.length,i.length);e++){const t=s[e],n=i[e];if(t&&!n){if(0!==t[J.LOW]||0!==t[J.HIGH])return!1}else if(!t&&n){if(0!==n[J.LOW]||0!==n[J.HIGH])return!1}else if(t&&n&&(t[J.LOW]!==n[J.LOW]||t[J.HIGH]!==n[J.HIGH]))return!1}return!0}static setBit(e,t){if(t<0)throw new Error(`Bit index ${t} out of range [0, 63]`);const n=X.getSegmentByBitIndex(e,t),s=63&t;s<32?n[J.LOW]|=1<<s:n[J.HIGH]|=1<<s-32}static getBit(e,t){if(t<0)return!1;const n=X.getSegmentByBitIndex(e,t,!1);if(!n)return!1;const s=63&t;return s<32?!!(n[J.LOW]&1<<s):!!(n[J.HIGH]&1<<s-32)}static clearBit(e,t){if(t<0)throw new Error(`Bit index ${t} out of range [0, 63]`);const n=X.getSegmentByBitIndex(e,t,!1);if(!n)return;const s=63&t;s<32?n[J.LOW]&=~(1<<s):n[J.HIGH]&=~(1<<s-32)}static orInPlace(e,t){e.base[J.LOW]|=t.base[J.LOW],e.base[J.HIGH]|=t.base[J.HIGH];const n=t.segments;if(n&&n.length>0){e.segments||(e.segments=[]);const t=e.segments;for(;t.length<n.length;)t.push([0,0]);for(let e=0;e<n.length;e++){const s=t[e],i=n[e];s[J.LOW]|=i[J.LOW],s[J.HIGH]|=i[J.HIGH]}}}static andInPlace(e,t){e.base[J.LOW]&=t.base[J.LOW],e.base[J.HIGH]&=t.base[J.HIGH];const n=t.segments;if(n&&n.length>0){e.segments||(e.segments=[]);const t=e.segments;for(;t.length<n.length;)t.push([0,0]);for(let e=0;e<n.length;e++){const s=t[e],i=n[e];s[J.LOW]&=i[J.LOW],s[J.HIGH]&=i[J.HIGH]}}}static xorInPlace(e,t){e.base[J.LOW]^=t.base[J.LOW],e.base[J.HIGH]^=t.base[J.HIGH];const n=t.segments;if(!n||0==n.length)return;e.segments||(e.segments=[]);const s=e.segments;for(;s.length<n.length;)s.push([0,0]);for(let e=0;e<n.length;e++){const t=s[e],i=n[e];t[J.LOW]^=i[J.LOW],t[J.HIGH]^=i[J.HIGH]}}static clear(e){if(e.base[J.LOW]=0,e.base[J.HIGH]=0,e.segments)for(let t=0;t<e.segments.length;t++){const n=e.segments[t];n[J.LOW]=0,n[J.HIGH]=0}}static copy(e,t){if(X.clear(t),t.base[J.LOW]=e.base[J.LOW],t.base[J.HIGH]=e.base[J.HIGH],!e.segments||0==e.segments.length)return;if(!t.segments)return void(t.segments=e.segments.map((e=>[...e])));const n=e.segments.length-t.segments.length;for(let e=0;e<n;e++)t.segments.push([0,0]);const s=t.segments,i=e.segments;for(let e=0;e<i.length;e++){const t=s[e],n=i[e];t[J.LOW]=n[J.LOW],t[J.HIGH]=n[J.HIGH]}}static clone(e){return{base:e.base.slice(),...e.segments&&{segments:e.segments.map((e=>[...e]))}}}static toString(e,t=2,n=!1){2!=t&&16!=t&&(t=2);const s=e.segments?.length??0;let i="";if(n){let e=0;e=2===t?66:19;for(let t=0;t<=s;t++){i+=(0===t?"0 (Base):":`${t} (${64*t}):`).toString().padEnd(e)}i+="\n"}for(let r=-1;r<s;r++){let s="";const o=-1==r?e.base:e.segments[r],a=o[J.HIGH],c=o[J.LOW];if(2==t){s=a.toString(2).padStart(32,"0")+"_"+c.toString(2).padStart(32,"0")}else{let e=a?a.toString(16).toUpperCase():"";n&&(e=e.padStart(8,"0"));let t=c.toString(16).toUpperCase();e&&(t=t.padStart(8,"0")),s="0x"+e+t}i+=-1===r?s:" "+s}return i}static popCount(e){let t=0;for(let n=-1;n<(e.segments?.length??0);n++){const s=-1==n?e.base:e.segments[n];let i=s[J.LOW],r=s[J.HIGH];for(;i;)i&=i-1,t++;for(;r;)r&=r-1,t++}return t}static getSegmentByBitIndex(e,t,n=!0){if(t<=63)return e.base;{let s=e.segments;if(!s){if(!n)return null;s=e.segments=[]}const i=(t>>6)-1;if(s.length<=i){if(!n)return null;const e=i-s.length+1;for(let t=0;t<e;t++)s.push([0,0])}return s[i]??null}}}X.ZERO={base:[0,0]};class K{static inferOptimalType(e,t={}){const n=typeof e;if("boolean"===n)return"uint8";if("number"!==n)return"float32";const{minValue:s,maxValue:i,precision:r,signed:o}=t;if(!0===r)return Math.abs(e)>34028235e31||void 0!==s&&Math.abs(s)>34028235e31||void 0!==i&&Math.abs(i)>34028235e31?"float64":"float32";if(!1===r||Number.isInteger(e)){const t=void 0!==s?s:e,n=void 0!==i?i:e;return!1!==o&&(t<0||e<0)?t>=-128&&n<=127?"int8":t>=-32768&&n<=32767?"int16":t>=-2147483648&&n<=2147483647?"int32":"float64":n<=255?"uint8":n<=65535?"uint16":n<=4294967295?"uint32":"float64"}return Number.isInteger(e)?e>=0&&e<=255?"uint8":e>=-128&&e<=127?"int8":e>=0&&e<=65535?"uint16":e>=-32768&&e<=32767?"int16":e>=0&&e<=4294967295?"uint32":e>=-2147483648&&e<=2147483647?"int32":"float64":"float32"}static getTypedArrayConstructor(e){switch(e){case"float32":default:return Float32Array;case"float64":return Float64Array;case"int32":return Int32Array;case"uint32":return Uint32Array;case"int16":return Int16Array;case"uint16":return Uint16Array;case"int8":return Int8Array;case"uint8":return Uint8Array;case"uint8clamped":return Uint8ClampedArray}}}class ee{constructor(e){this.fields=new Map,this.stringFields=new Map,this.serializedFields=new Map,this.complexFields=new Map,this.entityToIndex=new Map,this.indexToEntity=[],this.freeIndices=[],this._size=0,this._capacity=1e3,this.type=e,this.initializeFields(e)}initializeFields(e){const t=new e,n=e.__highPrecisionFields||new Set,s=e.__float64Fields||new Set,i=e.__float32Fields||new Set,r=e.__int32Fields||new Set,o=e.__uint32Fields||new Set,a=e.__int16Fields||new Set,c=e.__uint16Fields||new Set,h=e.__int8Fields||new Set,l=e.__uint8Fields||new Set,u=e.__uint8ClampedFields||new Set,d=e.__autoTypedFields||new Map,p=e.__serializeMapFields||new Set,m=e.__serializeSetFields||new Set,g=e.__serializeArrayFields||new Set;for(const e in t)if(t.hasOwnProperty(e)&&"id"!==e){const y=t[e],f=typeof y;if("number"===f)if(n.has(e));else if(d.has(e)){const t=d.get(e),n=K.inferOptimalType(y,t),s=K.getTypedArrayConstructor(n);this.fields.set(e,new s(this._capacity)),ee._logger.info(`字段 ${e} 自动推断为 ${n} 类型,值: ${y}, 选项:`,t)}else s.has(e)?this.fields.set(e,new Float64Array(this._capacity)):r.has(e)?this.fields.set(e,new Int32Array(this._capacity)):o.has(e)?this.fields.set(e,new Uint32Array(this._capacity)):a.has(e)?this.fields.set(e,new Int16Array(this._capacity)):c.has(e)?this.fields.set(e,new Uint16Array(this._capacity)):h.has(e)?this.fields.set(e,new Int8Array(this._capacity)):l.has(e)?this.fields.set(e,new Uint8Array(this._capacity)):u.has(e)?this.fields.set(e,new Uint8ClampedArray(this._capacity)):(i.has(e),this.fields.set(e,new Float32Array(this._capacity)));else"boolean"===f?l.has(e)||!i.has(e)&&!s.has(e)?this.fields.set(e,new Uint8Array(this._capacity)):this.fields.set(e,new Float32Array(this._capacity)):"string"===f?this.stringFields.set(e,new Array(this._capacity)):"object"===f&&null!==y&&(p.has(e)||m.has(e)||g.has(e))&&this.serializedFields.set(e,new Array(this._capacity))}}addComponent(e,t){if(this.entityToIndex.has(e)){const n=this.entityToIndex.get(e);return void this.updateComponentAtIndex(n,t)}let n;this.freeIndices.length>0?n=this.freeIndices.pop():(n=this._size,n>=this._capacity&&this.resize(2*this._capacity)),this.entityToIndex.set(e,n),this.indexToEntity[n]=e,this.updateComponentAtIndex(n,t),this._size++}updateComponentAtIndex(e,t){const n=this.indexToEntity[e],s=new Map,i=this.type.__highPrecisionFields||new Set,r=this.type.__serializeMapFields||new Set,o=this.type.__serializeSetFields||new Set,a=this.type.__serializeArrayFields||new Set,c=this.type.__deepCopyFields||new Set;for(const n in t)if(t.hasOwnProperty(n)&&"id"!==n){const h=t[n],l=typeof h;if("number"===l)if(i.has(n)||!this.fields.has(n))s.set(n,h);else{this.fields.get(n)[e]=h}else if("boolean"===l&&this.fields.has(n)){this.fields.get(n)[e]=h?1:0}else if(this.stringFields.has(n)){this.stringFields.get(n)[e]=String(h)}else if(this.serializedFields.has(n)){this.serializedFields.get(n)[e]=this.serializeValue(h,n,r,o,a)}else c.has(n)?s.set(n,this.deepClone(h)):s.set(n,h)}s.size>0&&this.complexFields.set(n,s)}serializeValue(e,t,n,s,i){try{return n.has(t)&&e instanceof Map?JSON.stringify(Array.from(e.entries())):s.has(t)&&e instanceof Set?JSON.stringify(Array.from(e)):(i.has(t)&&Array.isArray(e),JSON.stringify(e))}catch(e){return ee._logger.warn(`SoA序列化字段 ${t} 失败:`,e),"{}"}}deserializeValue(e,t,n,s,i){try{const r=JSON.parse(e);return n.has(t)?new Map(r):s.has(t)?new Set(r):(i.has(t),r)}catch(e){return ee._logger.warn(`SoA反序列化字段 ${t} 失败:`,e),null}}deepClone(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array)return e.map((e=>this.deepClone(e)));if(e instanceof Map){const t=new Map;for(const[n,s]of e.entries())t.set(n,this.deepClone(s));return t}if(e instanceof Set){const t=new Set;for(const n of e.values())t.add(this.deepClone(n));return t}const t={};for(const n in e)e.hasOwnProperty(n)&&(t[n]=this.deepClone(e[n]));return t}getComponent(e){const t=this.entityToIndex.get(e);if(void 0===t)return null;const n=new this.type,s=this.type.__serializeMapFields||new Set,i=this.type.__serializeSetFields||new Set,r=this.type.__serializeArrayFields||new Set;for(const[e,s]of this.fields.entries()){const i=s[t],r=this.getFieldType(e);n[e]="boolean"===r?1===i:i}for(const[e,s]of this.stringFields.entries())n[e]=s[t];for(const[e,o]of this.serializedFields.entries()){const a=o[t];a&&(n[e]=this.deserializeValue(a,e,s,i,r))}const o=this.complexFields.get(e);if(o)for(const[e,t]of o.entries())n[e]=t;return n}getFieldType(e){return typeof(new this.type)[e]}hasComponent(e){return this.entityToIndex.has(e)}removeComponent(e){const t=this.entityToIndex.get(e);if(void 0===t)return null;const n=this.getComponent(e);return this.complexFields.delete(e),this.entityToIndex.delete(e),this.freeIndices.push(t),this._size--,n}resize(e){for(const[t,n]of this.fields.entries()){let s;n instanceof Float32Array?s=new Float32Array(e):n instanceof Float64Array?s=new Float64Array(e):n instanceof Int32Array?s=new Int32Array(e):n instanceof Uint32Array?s=new Uint32Array(e):n instanceof Int16Array?s=new Int16Array(e):n instanceof Uint16Array?s=new Uint16Array(e):n instanceof Int8Array?s=new Int8Array(e):n instanceof Uint8Array?s=new Uint8Array(e):n instanceof Uint8ClampedArray?s=new Uint8ClampedArray(e):(s=new Float32Array(e),ee._logger.warn(`未知的TypedArray类型用于字段 ${t},回退到Float32Array`)),s.set(n),this.fields.set(t,s)}for(const[t,n]of this.stringFields.entries()){const s=new Array(e);for(let e=0;e<n.length;e++)s[e]=n[e];this.stringFields.set(t,s)}for(const[t,n]of this.serializedFields.entries()){const s=new Array(e);for(let e=0;e<n.length;e++)s[e]=n[e];this.serializedFields.set(t,s)}this._capacity=e}getActiveIndices(){return Array.from(this.entityToIndex.values())}getFieldArray(e){return this.fields.get(e)||null}getTypedFieldArray(e){return this.fields.get(String(e))||null}getEntityIndex(e){return this.entityToIndex.get(e)}getEntityIdByIndex(e){return this.indexToEntity[e]}size(){return this._size}clear(){this.entityToIndex.clear(),this.indexToEntity=[],this.freeIndices=[],this.complexFields.clear(),this._size=0;for(const e of this.fields.values())e.fill(0);for(const e of this.stringFields.values())for(let t=0;t<e.length;t++)e[t]=void 0;for(const e of this.serializedFields.values())for(let t=0;t<e.length;t++)e[t]=void 0}compact(){if(0===this.freeIndices.length)return;const e=Array.from(this.entityToIndex.entries()).sort(((e,t)=>e[1]-t[1])),t=new Map,n=[];for(let s=0;s<e.length;s++){const i=e[s];if(!i)continue;const[r,o]=i;if(t.set(r,s),n[s]=r,s!==o){for(const[,e]of this.fields.entries()){const t=e[o];void 0!==t&&(e[s]=t)}for(const[,e]of this.stringFields.entries()){const t=e[o];void 0!==t&&(e[s]=t)}for(const[,e]of this.serializedFields.entries()){const t=e[o];void 0!==t&&(e[s]=t)}}}this.entityToIndex=t,this.indexToEntity=n,this.freeIndices=[],this._size=e.length}getStats(){let e=0;const t=new Map;for(const[n,s]of this.fields.entries()){let i,r;s instanceof Float32Array?(i=4,r="float32"):s instanceof Float64Array?(i=8,r="float64"):s instanceof Int32Array?(i=4,r="int32"):s instanceof Uint32Array?(i=4,r="uint32"):s instanceof Int16Array?(i=2,r="int16"):s instanceof Uint16Array?(i=2,r="uint16"):s instanceof Int8Array?(i=1,r="int8"):s instanceof Uint8Array?(i=1,r="uint8"):s instanceof Uint8ClampedArray?(i=1,r="uint8clamped"):(i=4,r="unknown");const o=s.length*i;e+=o,t.set(n,{size:this._size,capacity:s.length,type:r,memory:o})}return{size:this._size,capacity:this._capacity,usedSlots:this._size,fragmentation:this.freeIndices.length/this._capacity,memoryUsage:e,fieldStats:t}}performVectorizedOperation(e){const t=this.getActiveIndices();e(this.fields,t)}}ee._logger=N("SoAStorage");class te{static register(e){const t=b(e);if(this.componentTypes.has(e)){return this.componentTypes.get(e)}const n=this.nextBitIndex++;return this.componentTypes.set(e,n),this.bitIndexToType.set(n,e),this.componentNameToType.set(t,e),this.componentNameToId.set(t,n),n}static getBitMask(e){const t=this.componentTypes.get(e);if(void 0===t){const t=b(e);throw new Error(`Component type ${t} is not registered`)}return X.create(t)}static getBitIndex(e){const t=this.componentTypes.get(e);if(void 0===t){const t=b(e);throw new Error(`Component type ${t} is not registered`)}return t}static isRegistered(e){return this.componentTypes.has(e)}static getTypeByBitIndex(e){return this.bitIndexToType.get(e)||null}static getRegisteredCount(){return this.nextBitIndex}static getComponentType(e){return this.componentNameToType.get(e)||null}static getAllRegisteredTypes(){return new Map(this.componentTypes)}static getAllComponentNames(){return new Map(this.componentNameToType)}static getComponentId(e){return this.componentNameToId.get(e)}static registerComponentByName(e){if(this.componentNameToId.has(e))return this.componentNameToId.get(e);const t=this.nextBitIndex++;return this.componentNameToId.set(e,t),t}static createSingleComponentMask(e){const t=`single:${e}`;if(this.maskCache.has(t))return this.maskCache.get(t);const n=this.getComponentId(e);if(void 0===n)throw new Error(`Component type ${e} is not registered`);const s=X.create(n);return this.maskCache.set(t,s),s}static createComponentMask(e){const t=`multi:${[...e].sort().join(",")}`;if(this.maskCache.has(t))return this.maskCache.get(t);const n=X.clone(X.ZERO);for(const t of e){const e=this.getComponentId(t);if(void 0!==e){const t=X.create(e);X.orInPlace(n,t)}}return this.maskCache.set(t,n),n}static clearMaskCache(){this.maskCache.clear()}static reset(){this.componentTypes.clear(),this.bitIndexToType.clear(),this.componentNameToType.clear(),this.componentNameToId.clear(),this.maskCache.clear(),this.nextBitIndex=0}}te._logger=N("ComponentStorage"),te.componentTypes=new Map,te.bitIndexToType=new Map,te.componentNameToType=new Map,te.componentNameToId=new Map,te.maskCache=new Map,te.nextBitIndex=0;class ne{constructor(e){this.dense=[],this.entityIds=[],this.entityToIndex=new Map,this.componentType=e,te.isRegistered(e)||te.register(e)}addComponent(e,t){if(this.entityToIndex.has(e))throw new Error(`Entity ${e} already has component ${b(this.componentType)}`);const n=this.dense.length;this.dense.push(t),this.entityIds.push(e),this.entityToIndex.set(e,n)}getComponent(e){const t=this.entityToIndex.get(e);return void 0!==t?this.dense[t]:null}hasComponent(e){return this.entityToIndex.has(e)}removeComponent(e){const t=this.entityToIndex.get(e);if(void 0===t)return null;const n=this.dense[t],s=this.dense.length-1;if(t!==s){const e=this.dense[s],n=this.entityIds[s];this.dense[t]=e,this.entityIds[t]=n,this.entityToIndex.set(n,t)}return this.dense.pop(),this.entityIds.pop(),this.entityToIndex.delete(e),n}forEach(e){for(let t=0;t<this.dense.length;t++)e(this.dense[t],this.entityIds[t],t)}getDenseArray(){return{components:[...this.dense],entityIds:[...this.entityIds]}}clear(){this.dense.length=0,this.entityIds.length=0,this.entityToIndex.clear()}get size(){return this.dense.length}get type(){return this.componentType}getStats(){return{totalSlots:this.dense.length,usedSlots:this.dense.length,freeSlots:0,fragmentation:0}}}class se{constructor(){this.storages=new Map}isSoAStorage(e){return this.storages.get(e)instanceof ee}getSoAStorage(e){const t=this.getStorage(e);return t instanceof ee?t:null}getFieldArray(e,t){const n=this.getSoAStorage(e);return n?n.getFieldArray(t):null}getTypedFieldArray(e,t){const n=this.getSoAStorage(e);return n?n.getTypedFieldArray(t):null}getActiveIndices(e){const t=this.getSoAStorage(e);return t?t.getActiveIndices():[]}getEntityIndex(e,t){const n=this.getSoAStorage(e);return n?n.getEntityIndex(t):void 0}getEntityIdByIndex(e,t){const n=this.getSoAStorage(e);return n?n.getEntityIdByIndex(t):void 0}getStorage(e){let t=this.storages.get(e);if(!t){e.__enableSoA?(t=new ee(e),se._logger.info(`为 ${b(e)} 启用SoA优化(适用于大规模批量操作)`)):t=new ne(e),this.storages.set(e,t)}return t}addComponent(e,t){const n=t.constructor;this.getStorage(n).addComponent(e,t)}getComponent(e,t){const n=this.storages.get(t);return n?n.getComponent(e):null}hasComponent(e,t){const n=this.storages.get(t);return!!n&&n.hasComponent(e)}removeComponent(e,t){const n=this.storages.get(t);return n?n.removeComponent(e):null}removeAllComponents(e){for(const t of this.storages.values())t.removeComponent(e)}getComponentMask(e){const t=X.clone(X.ZERO);for(const[n,s]of this.storages.entries())if(s.hasComponent(e)){const e=te.getBitMask(n);X.orInPlace(t,e)}return t}getAllStats(){const e=new Map;for(const[t,n]of this.storages.entries()){const s=b(t);e.set(s,n.getStats())}return e}clear(){for(const e of this.storages.values())e.clear();this.storages.clear()}}se._logger=N("ComponentStorage");class ie{compare(e,t){let n=e.updateOrder-t.updateOrder;return 0==n&&(n=e.id-t.id),n}}class re{constructor(e,t){this.scene=null,this._isDestroyed=!1,this._parent=null,this._children=[],this._active=!0,this._tag=0,this._enabled=!0,this._updateOrder=0,this._componentMask=X.clone(X.ZERO),this._componentCache=null,this.name=e,this.id=t}get isDestroyed(){return this._isDestroyed}setDestroyedState(e){this._isDestroyed=e}get components(){return null===this._componentCache&&this._rebuildComponentCache(),this._componentCache}_rebuildComponentCache(){const e=[];if(!this.scene?.componentStorageManager)return void(this._componentCache=e);const t=this._componentMask,n=te.getRegisteredCount();for(let s=0;s<n;s++)if(X.getBit(t,s)){const t=te.getTypeByBitIndex(s);if(t){const n=this.scene.componentStorageManager.getComponent(this.id,t);n&&e.push(n)}}this._componentCache=e}get parent(){return this._parent}get children(){return[...this._children]}get childCount(){return this._children.length}get active(){return this._active}set active(e){this._active!==e&&(this._active=e,this.onActiveChanged())}get activeInHierarchy(){return!!this._active&&(!this._parent||this._parent.activeInHierarchy)}get tag(){return this._tag}set tag(e){this._tag=e}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get updateOrder(){return this._updateOrder}set updateOrder(e){this._updateOrder=e}get componentMask(){return this._componentMask}createComponent(e,...t){const n=new e(...t);return this.addComponent(n)}addComponentInternal(e){const t=e.constructor;te.isRegistered(t)||te.register(t);const n=te.getBitMask(t);return X.orInPlace(this._componentMask,n),this._componentCache=null,e}notifyQuerySystems(){this.scene&&this.scene.querySystem&&(this.scene.querySystem.updateEntity(this),this.scene.clearSystemEntityCaches())}addComponent(e){const t=e.constructor;if(!this.scene)throw new Error("Entity must be added to Scene before adding components. Use scene.createEntity() instead of new Entity()");if(!this.scene.componentStorageManager)throw new Error("Scene does not have componentStorageManager");if(this.hasComponent(t))throw new Error(`Entity ${this.name} already has component ${b(t)}`);return this.addComponentInternal(e),this.scene.componentStorageManager.addComponent(this.id,e),e.entityId=this.id,this.scene.referenceTracker&&this.scene.referenceTracker.registerEntityScene(this.id,this.scene),e.onAddedToEntity(),this.scene&&this.scene.eventSystem&&this.scene.eventSystem.emitSync("component:added",{timestamp:Date.now(),source:"Entity",entityId:this.id,entityName:this.name,entityTag:this.tag?.toString(),componentType:b(t),component:e}),this.notifyQuerySystems(),e}getComponent(e){if(!this.hasComponent(e))return null;if(!this.scene?.componentStorageManager)return null;return this.scene.componentStorageManager.getComponent(this.id,e)}hasComponent(e){if(!te.isRegistered(e))return!1;const t=te.getBitMask(e);return X.hasAny(this._componentMask,t)}getOrCreateComponent(e,...t){let n=this.getComponent(e);return n||(n=this.createComponent(e,...t)),n}removeComponent(e){const t=e.constructor;if(!te.isRegistered(t))return;const n=te.getBitIndex(t);X.clearBit(this._componentMask,n),this._componentCache=null,this.scene?.componentStorageManager&&this.scene.componentStorageManager.removeComponent(this.id,t),this.scene?.referenceTracker&&this.scene.referenceTracker.clearComponentReferences(e),e.onRemovedFromEntity&&e.onRemovedFromEntity(),e.entityId=null,this.scene&&this.scene.eventSystem&&this.scene.eventSystem.emitSync("component:removed",{timestamp:Date.now(),source:"Entity",entityId:this.id,entityName:this.name,entityTag:this.tag?.toString(),componentType:b(t),component:e}),this.notifyQuerySystems()}removeComponentByType(e){const t=this.getComponent(e);return t?(this.removeComponent(t),t):null}removeAllComponents(){const e=[...this.components];X.clear(this._componentMask),this._componentCache=null;for(const t of e){const e=t.constructor;this.scene?.componentStorageManager&&this.scene.componentStorageManager.removeComponent(this.id,e),t.onRemovedFromEntity()}this.notifyQuerySystems()}addComponents(e){const t=[];for(const n of e)try{t.push(this.addComponent(n))}catch(e){re._logger.warn(`添加组件失败 ${w(n)}:`,e)}return t}removeComponentsByTypes(e){const t=[];for(const n of e)t.push(this.removeComponentByType(n));return t}getComponents(e){const t=[];for(const n of this.components)n instanceof e&&t.push(n);return t}getComponentByType(e){for(const t of this.components)if(t instanceof e)return t;return null}addChild(e){if(e===this)throw new Error("Entity cannot be its own child");return e._parent===this||(e._parent&&e._parent.removeChild(e),e._parent=this,this._children.push(e),!e.scene&&this.scene&&(e.scene=this.scene,this.scene.addEntity(e))),e}removeChild(e){const t=this._children.indexOf(e);return-1!==t&&(this._children.splice(t,1),e._parent=null,!0)}removeAllChildren(){const e=[...this._children];for(const t of e)this.removeChild(t)}findChild(e,t=!1){for(const t of this._children)if(t.name===e)return t;if(t)for(const t of this._children){const n=t.findChild(e,!0);if(n)return n}return null}findChildrenByTag(e,t=!1){const n=[];for(const t of this._children)t.tag===e&&n.push(t);if(t)for(const t of this._children)n.push(...t.findChildrenByTag(e,!0));return n}getRoot(){return this._parent?this._parent.getRoot():this}isAncestorOf(e){let t=e._parent;for(;t;){if(t===this)return!0;t=t._parent}return!1}isDescendantOf(e){return e.isAncestorOf(this)}getDepth(){let e=0,t=this._parent;for(;t;)e++,t=t._parent;return e}forEachChild(e,t=!1){this._children.forEach(((n,s)=>{e(n,s),t&&n.forEachChild(e,!0)}))}onActiveChanged(){for(const e of this.components)"onActiveChanged"in e&&"function"==typeof e.onActiveChanged&&e.onActiveChanged();this.scene&&this.scene.eventSystem&&this.scene.eventSystem.emitSync("entity:activeChanged",{entity:this,active:this._active,activeInHierarchy:this.activeInHierarchy})}destroy(){if(this._isDestroyed)return;this._isDestroyed=!0,this.scene&&this.scene.referenceTracker&&(this.scene.referenceTracker.clearReferencesTo(this.id),this.scene.referenceTracker.unregisterEntityScene(this.id));const e=[...this._children];for(const t of e)t.destroy();this._parent&&this._parent.removeChild(this),this.removeAllComponents(),this.scene&&(this.scene.querySystem&&this.scene.querySystem.removeEntity(this),this.scene.entities&&this.scene.entities.remove(this))}destroyAllChildren(){if(0===this._children.length)return;const e=this.scene,t=[],n=e=>{for(const s of e._children)t.push(s),n(s)};n(this);for(const e of t)e.setDestroyedState(!0);for(const e of t)e.removeAllComponents();if(e){for(const n of t)e.entities.remove(n),e.querySystem.removeEntity(n);e.clearSystemEntityCaches()}this._children.length=0}compareTo(e){return ie.prototype.compare(this,e)}toString(){return`Entity[${this.name}:${this.id}]`}getDebugInfo(){return{name:this.name,id:this.id,enabled:this._enabled,active:this._active,activeInHierarchy:this.activeInHierarchy,destroyed:this._isDestroyed,componentCount:this.components.length,componentTypes:this.components.map((e=>w(e))),componentMask:X.toString(this._componentMask,2),parentId:this._parent?.id||null,childCount:this._children.length,childIds:this._children.map((e=>e.id)),depth:this.getDepth(),cacheBuilt:null!==this._componentCache}}}re._logger=N("Entity"),re.entityComparer=new ie;class oe{constructor(e,t){this.scene=e,this.storageManager=t;const n=e.identifierPool.checkOut();this.entity=new re("",n),this.entity.scene=this.scene}named(e){return this.entity.name=e,this}tagged(e){return this.entity.tag=e,this}with(e){return this.entity.addComponent(e),this}withComponents(...e){for(const t of e)this.entity.addComponent(t);return this}withIf(e,t){return e&&this.entity.addComponent(t),this}withFactory(e){const t=e();return this.entity.addComponent(t),this}configure(e,t){const n=this.entity.getComponent(e);return n&&t(n),this}enabled(e=!0){return this.entity.enabled=e,this}active(e=!0){return this.entity.active=e,this}withChild(e){const t=e.build();return this.entity.addChild(t),this}withChildren(...e){for(const t of e){const e=t.build();this.entity.addChild(e)}return this}withChildFactory(e){const t=e(this.entity).build();return this.entity.addChild(t),this}withChildIf(e,t){if(e){const e=t.build();this.entity.addChild(e)}return this}build(){return this.entity}spawn(){return this.scene.addEntity(this.entity),this.entity}clone(){const e=new oe(this.scene,this.storageManager);return e.entity=this.entity,e}}class ae{get count(){return this.buffer.length}constructor(e){this.buffer=[],this._idToEntity=new Map,this._nameToEntities=new Map,this._entitiesToAdd=[],this._entitiesToRemove=[],this._scene=e}add(e){this.addImmediate(e)}addImmediate(e){this._idToEntity.has(e.id)||(this.buffer.push(e),this._idToEntity.set(e.id,e),this.updateNameIndex(e,!0))}remove(e){this.removeImmediate(e)}removeImmediate(e){const t=this.buffer.indexOf(e);-1!==t&&(this.buffer.splice(t,1),this._idToEntity.delete(e.id),this.updateNameIndex(e,!1),this._scene&&this._scene.identifierPool&&this._scene.identifierPool.checkIn(e.id))}removeAllEntities(){const e=[];for(let t=this.buffer.length-1;t>=0;t--)e.push(this.buffer[t].id),this.buffer[t].destroy();if(this._scene&&this._scene.identifierPool)for(const t of e)this._scene.identifierPool.checkIn(t);this.buffer.length=0,this._idToEntity.clear(),this._nameToEntities.clear(),this._entitiesToAdd.length=0,this._entitiesToRemove.length=0}updateLists(){if(this._entitiesToAdd.length>0){for(const e of this._entitiesToAdd)this.addImmediate(e);this._entitiesToAdd.length=0}if(this._entitiesToRemove.length>0){for(const e of this._entitiesToRemove)this.removeImmediate(e);this._entitiesToRemove.length=0}}update(){this.updateLists()}findEntity(e){const t=this._nameToEntities.get(e);return t&&t.length>0?t[0]:null}findEntitiesByName(e){return this._nameToEntities.get(e)||[]}findEntityById(e){return this._idToEntity.get(e)||null}findEntitiesByTag(e){const t=[];for(const n of this.buffer)n.tag===e&&t.push(n);return t}findEntitiesWithComponent(e){const t=[];for(const n of this.buffer)n.hasComponent(e)&&t.push(n);return t}forEach(e){for(const t of this.buffer)e(t)}forEachWhere(e,t){for(const n of this.buffer)e(n)&&t(n)}updateNameIndex(e,t){if(e.name)if(t){let t=this._nameToEntities.get(e.name);t||(t=[],this._nameToEntities.set(e.name,t)),t.push(e)}else{const t=this._nameToEntities.get(e.name);if(t){const n=t.indexOf(e);-1!==n&&(t.splice(n,1),0===t.length&&this._nameToEntities.delete(e.name))}}}getStats(){let e=0;for(const t of this.buffer)t.enabled&&!t.isDestroyed&&e++;return{totalEntities:this.buffer.length,activeEntities:e,pendingAdd:this._entitiesToAdd.length,pendingRemove:this._entitiesToRemove.length,nameIndexSize:this._nameToEntities.size}}}class ce{constructor(e=100,t=1024){this._nextAvailableIndex=0,this._freeIndices=[],this._generations=new Map,this._pendingRecycle=[],this._recycleDelay=100,this._stats={totalAllocated:0,totalRecycled:0,currentActive:0,memoryExpansions:0},this._recycleDelay=e,this._expansionBlockSize=t,this._preAllocateGenerations(0,this._expansionBlockSize)}checkOut(){let e;if(this._processDelayedRecycle(),this._freeIndices.length>0)e=this._freeIndices.pop();else{if(this._nextAvailableIndex>ce.MAX_INDEX)throw new Error(`实体索引已达到框架设计限制 (${ce.MAX_INDEX})。这意味着您已经分配了超过65535个不同的实体索引。这是16位索引设计的限制,考虑优化实体回收策略或升级到64位ID设计。`);e=this._nextAvailableIndex++,this._ensureGenerationCapacity(e)}const t=this._generations.get(e)||1;return this._stats.totalAllocated++,this._stats.currentActive++,this._packId(e,t)}checkIn(e){const t=this._unpackIndex(e),n=this._unpackGeneration(e);if(!this._isValidId(t,n))return!1;return!this._pendingRecycle.some((e=>e.index===t&&e.generation===n))&&(this._pendingRecycle.push({index:t,generation:n,timestamp:Date.now()}),this._stats.currentActive--,this._stats.totalRecycled++,!0)}isValid(e){const t=this._unpackIndex(e),n=this._unpackGeneration(e);return this._isValidId(t,n)}getStats(){let e=0,t=0;for(const[n,s]of this._generations)n<this._nextAvailableIndex&&(e+=s,t++);const n=t>0?e/t:1;return{totalAllocated:this._stats.totalAllocated,totalRecycled:this._stats.totalRecycled,currentActive:this._stats.currentActive,currentlyFree:this._freeIndices.length,pendingRecycle:this._pendingRecycle.length,maxPossibleEntities:ce.MAX_INDEX+1,maxUsedIndex:this._nextAvailableIndex-1,memoryUsage:this._calculateMemoryUsage(),memoryExpansions:this._stats.memoryExpansions,averageGeneration:Math.round(100*n)/100,generationStorageSize:this._generations.size}}forceProcessDelayedRecycle(){this._processDelayedRecycle(!0)}_processDelayedRecycle(e=!1){if(0===this._pendingRecycle.length)return;const t=Date.now(),n=[],s=[];for(const i of this._pendingRecycle)e||t-i.timestamp>=this._recycleDelay?n.push(i):s.push(i);for(const e of n)if(this._isValidId(e.index,e.generation)){let t=e.generation+1;t>ce.MAX_GENERATION&&(t=1),this._generations.set(e.index,t),this._freeIndices.push(e.index)}this._pendingRecycle=s}_preAllocateGenerations(e,t){for(let n=0;n<t;n++){const t=e+n;t<=ce.MAX_INDEX&&this._generations.set(t,1)}this._stats.memoryExpansions++}_ensureGenerationCapacity(e){if(!this._generations.has(e)){const t=Math.floor(e/this._expansionBlockSize)*this._expansionBlockSize;this._preAllocateGenerations(t,this._expansionBlockSize)}}_calculateMemoryUsage(){return 16*this._generations.size+8*this._freeIndices.length+32*this._pendingRecycle.length}_packId(e,t){return t<<16|e}_unpackIndex(e){return 65535&e}_unpackGeneration(e){return e>>>16&65535}_isValidId(e,t){if(e<0||e>=this._nextAvailableIndex)return!1;const n=this._generations.get(e);return void 0!==n&&n===t}}ce.MAX_INDEX=65535,ce.MAX_GENERATION=65535;class he{constructor(){this.condition={all:[],any:[],none:[]}}static all(...e){return(new he).all(...e)}static any(...e){return(new he).any(...e)}static none(...e){return(new he).none(...e)}static byTag(e){return(new he).withTag(e)}static byName(e){return(new he).withName(e)}static byComponent(e){return(new he).withComponent(e)}static complex(){return new he}static empty(){return new he}all(...e){return this.condition.all.push(...e),this}any(...e){return this.condition.any.push(...e),this}none(...e){return this.condition.none.push(...e),this}exclude(...e){return this.none(...e)}one(...e){return this.any(...e)}withTag(e){return this.condition.tag=e,this}withName(e){return this.condition.name=e,this}withComponent(e){return this.condition.component=e,this}withoutTag(){return delete this.condition.tag,this}withoutName(){return delete this.condition.name,this}withoutComponent(){return delete this.condition.component,this}getCondition(){return{all:[...this.condition.all],any:[...this.condition.any],none:[...this.condition.none],...void 0!==this.condition.tag&&{tag:this.condition.tag},...void 0!==this.condition.name&&{name:this.condition.name},...void 0!==this.condition.component&&{component:this.condition.component}}}isEmpty(){return 0===this.condition.all.length&&0===this.condition.any.length&&0===this.condition.none.length&&void 0===this.condition.tag&&void 0===this.condition.name&&void 0===this.condition.component}reset(){return this.condition.all.length=0,this.condition.any.length=0,this.condition.none.length=0,delete this.condition.tag,delete this.condition.name,delete this.condition.component,this}clone(){const e=new he;return e.condition.all.push(...this.condition.all),e.condition.any.push(...this.condition.any),e.condition.none.push(...this.condition.none),void 0!==this.condition.tag&&(e.condition.tag=this.condition.tag),void 0!==this.condition.name&&(e.condition.name=this.condition.name),void 0!==this.condition.component&&(e.condition.component=this.condition.component),e}toString(){const e=[];return this.condition.all.length>0&&e.push(`all(${this.condition.all.map((e=>b(e))).join(", ")})`),this.condition.any.length>0&&e.push(`any(${this.condition.any.map((e=>b(e))).join(", ")})`),this.condition.none.length>0&&e.push(`none(${this.condition.none.map((e=>b(e))).join(", ")})`),void 0!==this.condition.tag&&e.push(`tag(${this.condition.tag})`),void 0!==this.condition.name&&e.push(`name(${this.condition.name})`),void 0!==this.condition.component&&e.push(`component(${b(this.condition.component)})`),`Matcher[${e.join(" & ")}]`}}class le{constructor(){this._frameCache=null,this._persistentCache=null,this._trackedEntities=new Set}getFrame(){return this._frameCache}setFrame(e){this._frameCache=e}getPersistent(){return this._persistentCache}setPersistent(e){this._persistentCache=e}getTracked(){return this._trackedEntities}addTracked(e){this._trackedEntities.add(e)}removeTracked(e){this._trackedEntities.delete(e)}isTracked(e){return this._trackedEntities.has(e)}invalidate(){this._persistentCache=null}clearFrame(){this._frameCache=null}clearAll(){this._frameCache=null,this._persistentCache=null,this._trackedEntities.clear()}hasPersistent(){return null!==this._persistentCache}hasFrame(){return null!==this._frameCache}getStats(){return{hasFrame:null!==this._frameCache,hasPersistent:null!==this._persistentCache,trackedCount:this._trackedEntities.size,frameEntityCount:this._frameCache?.length??0,persistentEntityCount:this._persistentCache?.length??0}}}class ue{get entities(){const e=this._entityCache.getFrame();return null!==e?e:(this._entityCache.hasPersistent()||this._entityCache.setPersistent(this.queryEntities()),this._entityCache.getPersistent())}get updateOrder(){return this._updateOrder}set updateOrder(e){this.setUpdateOrder(e)}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get systemName(){return this._systemName}constructor(e){this._updateOrder=0,this._enabled=!0,this._performanceMonitor=null,this._systemName=A(this),this._initialized=!1,this._matcher=e||he.empty(),this._eventListeners=[],this._scene=null,this._entityIdMap=null,this._entityIdMapVersion=-1,this.logger=N(this.getLoggerName()),this._entityCache=new le}get scene(){return this._scene}set scene(e){this._scene=e}setPerformanceMonitor(e){this._performanceMonitor=e}getPerformanceMonitor(){if(!this._performanceMonitor)throw new Error(`${this._systemName}: PerformanceMonitor未注入,请确保在Core.create()之后再添加System到Scene`);return this._performanceMonitor}get matcher(){return this._matcher}setUpdateOrder(e){this._updateOrder!==e&&(this._updateOrder=e,this._scene?.markSystemsOrderDirty())}initialize(){this._initialized||(this._initialized=!0,this.scene&&(this._entityCache.invalidate(),this.queryEntities()),this.onInitialize())}onInitialize(){}clearEntityCache(){this._entityCache.invalidate()}reset(){this.scene=null,this._initialized=!1,this._entityCache.clearAll(),this._entityIdMap=null,this._entityIdMapVersion=-1,this.destroy()}queryEntities(){if(!this.scene?.querySystem||!this._matcher)return[];const e=this._matcher.getCondition(),t=this.scene.querySystem;let n=[];return n=this._matcher.isEmpty()?t.getAllEntities():this.isSingleCondition(e)?this.executeSingleConditionQuery(e,t):this.executeComplexQuery(e,t),this.updateEntityTracking(n),n}isSingleCondition(e){const t=(e.all.length>0?1:0)|(e.any.length>0?2:0)|(e.none.length>0?4:0)|(void 0!==e.tag?8:0)|(void 0!==e.name?16:0)|(void 0!==e.component?32:0);return 0!==t&&!(t&t-1)}executeSingleConditionQuery(e,t){return void 0!==e.tag?t.queryByTag(e.tag).entities:void 0!==e.name?t.queryByName(e.name).entities:void 0!==e.component?t.queryByComponent(e.component).entities:e.all.length>0&&0===e.any.length&&0===e.none.length?t.queryAll(...e.all).entities:0===e.all.length&&e.any.length>0&&0===e.none.length?t.queryAny(...e.any).entities:0===e.all.length&&0===e.any.length&&e.none.length>0?t.queryNone(...e.none).entities:[]}executeComplexQueryWithIdSets(e,t){let n=null;if(void 0!==e.tag){const s=t.queryByTag(e.tag);n=this.extractEntityIds(s.entities)}if(void 0!==e.name){const s=this.extractEntityIds(t.queryByName(e.name).entities);n=n?this.intersectIdSets(n,s):s}if(void 0!==e.component){const s=this.extractEntityIds(t.queryByComponent(e.component).entities);n=n?this.intersectIdSets(n,s):s}if(e.all.length>0){const s=this.extractEntityIds(t.queryAll(...e.all).entities);n=n?this.intersectIdSets(n,s):s}if(e.any.length>0){const s=this.extractEntityIds(t.queryAny(...e.any).entities);n=n?this.intersectIdSets(n,s):s}if(e.none.length>0){n||(n=this.extractEntityIds(t.getAllEntities()));const s=t.queryAny(...e.none),i=this.extractEntityIds(s.entities);n=this.differenceIdSets(n,i)}return n?this.idSetToEntityArray(n,t.getAllEntities()):[]}extractEntityIds(e){const t=e.length,n=new Set;for(let s=0;s<t;s=s+1|0)n.add(0|e[s].id);return n}intersectIdSets(e,t){let n,s;e.size<=t.size?(n=e,s=t):(n=t,s=e);const i=new Set;for(const e of n)s.has(e)&&i.add(e);return i}differenceIdSets(e,t){const n=new Set;for(const s of e)t.has(s)||n.add(s);return n}getEntityIdMap(e){const t=this.scene?.querySystem?.version??0;return null!==this._entityIdMap&&this._entityIdMapVersion===t?this._entityIdMap:this.rebuildEntityIdMap(e,t)}rebuildEntityIdMap(e,t){let n=this._entityIdMap;n?n.clear():n=new Map;const s=e.length;for(let t=0;t<s;t=t+1|0){const s=e[t];n.set(0|s.id,s)}return this._entityIdMap=n,this._entityIdMapVersion=t,n}idSetToEntityArray(e,t){const n=this.getEntityIdMap(t),s=e.size,i=new Array(s);let r=0;for(const t of e){const e=n.get(t);void 0!==e&&(i[r]=e,r=r+1|0)}return r<s&&(i.length=r),i}executeComplexQuery(e,t){return this.executeComplexQueryWithIdSets(e,t)}update(){if(!this._enabled||!this.onCheckProcessing())return;const e=this.getPerformanceMonitor(),t=e.startMonitoring(this._systemName);let n=0;try{this.onBegin();const e=this.queryEntities();this._entityCache.setFrame(e),n=e.length,this.process(e)}finally{e.endMonitoring(this._systemName,t,n)}}lateUpdate(){if(!this._enabled||!this.onCheckProcessing())return;const e=this.getPerformanceMonitor(),t=e.startMonitoring(`${this._systemName}_Late`);let n=0;try{const e=this._entityCache.getFrame()||[];n=e.length,this.lateProcess(e),this.onEnd()}finally{e.endMonitoring(`${this._systemName}_Late`,t,n),this._entityCache.clearFrame()}}onBegin(){}process(e){}lateProcess(e){}onEnd(){}onCheckProcessing(){return!0}getPerformanceData(){return this.getPerformanceMonitor().getSystemData(this._systemName)}getPerformanceStats(){return this.getPerformanceMonitor().getSystemStats(this._systemName)}resetPerformanceData(){this.getPerformanceMonitor().resetSystem(this._systemName)}toString(){const e=this.entities.length,t=this.getPerformanceData(),n=t?` (${t.executionTime.toFixed(2)}ms)`:"";return`${this._systemName}[${e} entities]${n}`}updateEntityTracking(e){const t=new Set(e);let n=!1;for(const t of e)this._entityCache.isTracked(t)||(this._entityCache.addTracked(t),this.onAdded(t),n=!0);for(const e of this._entityCache.getTracked())t.has(e)||(this._entityCache.removeTracked(e),this.onRemoved(e),n=!0);n&&this._entityCache.invalidate()}onAdded(e){}onRemoved(e){}dispose(){this.cleanupManualEventListeners(),this._entityCache.clearAll(),this._entityIdMap=null,this._initialized=!1,this._scene=null,this.logger.debug(`System ${this._systemName} disposed`)}addEventListener(e,t,n){if(!this.scene?.eventSystem)return this.logger.warn(`${this.systemName}: 无法添加事件监听器,scene.eventSystem 不可用`),null;const s=this.scene.eventSystem.on(e,t,n);return s&&this._eventListeners.push({eventSystem:this.scene.eventSystem,eventType:e,listenerRef:s}),s}removeEventListener(e,t){const n=this._eventListeners.findIndex((n=>n.eventType===e&&n.listenerRef===t));if(n>=0){const t=this._eventListeners[n];if(!t)return;t.eventSystem.off(e,t.listenerRef),this._eventListeners.splice(n,1)}}cleanupManualEventListeners(){for(const e of this._eventListeners)try{e.eventSystem.off(e.eventType,e.listenerRef)}catch(t){this.logger.warn(`${this.systemName}: 移除事件监听器失败 "${e.eventType}"`,t)}this._eventListeners.length=0}destroy(){this.cleanupManualEventListeners(),this.onDestroy()}getLoggerName(){return A(this)}onDestroy(){}requireComponent(e,t){const n=e.getComponent(t);if(!n)throw new Error(`Component ${t.name} not found on entity ${e.name} in ${this.systemName}`);return n}getComponents(e,...t){return t.map((t=>this.requireComponent(e,t)))}forEach(e,t){for(let n=0;n<e.length;n++)t(e[n],n)}filterEntities(e,t){return Array.from(e).filter(t)}mapEntities(e,t){return Array.from(e).map(t)}findEntity(e,t){for(let n=0;n<e.length;n++)if(t(e[n],n))return e[n]}someEntity(e,t){for(let n=0;n<e.length;n++)if(t(e[n],n))return!0;return!1}everyEntity(e,t){for(let n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}}class de{constructor(){this._processors=[],this._isDirty=!1}setDirty(){this._isDirty=!0}add(e){this._processors.push(e),this.setDirty()}remove(e){const t=this._processors.indexOf(e);-1!==t&&this._processors.splice(t,1)}getProcessor(e){for(const t of this._processors)if(t instanceof e)return t;return null}begin(){this.sortProcessors()}end(){for(const e of this._processors)try{e.reset()}catch(t){de._logger.error(`Error in processor ${A(e)}:`,t)}this._isDirty=!1,this._processors.length=0}update(){this.sortProcessors();for(const e of this._processors)try{e.update()}catch(t){de._logger.error(`Error in processor ${A(e)}:`,t)}}lateUpdate(){for(const e of this._processors)e.lateUpdate()}sortProcessors(){this._isDirty&&(this._processors.sort(((e,t)=>e.updateOrder-t.updateOrder)),this._isDirty=!1)}get processors(){return this._processors}get count(){return this._processors.length}}de._logger=N("EntityProcessorList");class pe{constructor(e){if(e&&"object"==typeof e)this._value=X.clone(e);else if("number"==typeof e)this._value=X.fromNumber(e);else if("string"==typeof e){const t=parseInt(e,10);this._value=X.fromNumber(t)}else this._value=X.clone(X.ZERO)}set(e){if(e<0)throw new Error("Bit index cannot be negative");X.setBit(this._value,e)}clear(e){if(e<0)throw new Error("Bit index cannot be negative");X.clearBit(this._value,e)}get(e){return X.getBit(this._value,e)}containsAll(e){return X.hasAll(this._value,e._value)}intersects(e){return X.hasAny(this._value,e._value)}excludes(e){return X.hasNone(this._value,e._value)}clearAll(){X.clear(this._value)}isEmpty(){return X.isZero(this._value)}cardinality(){return X.popCount(this._value)}and(e){const t=new pe;return X.copy(this._value,t._value),X.andInPlace(t._value,e._value),t}or(e){const t=new pe;return X.copy(this._value,t._value),X.orInPlace(t._value,e._value),t}xor(e){const t=new pe;return X.copy(this._value,t._value),X.xorInPlace(t._value,e._value),t}not(e=64){e>64&&(e=64);const t=new pe;if(X.copy(this._value,t._value),e<=32){const n=(1<<e)-1;t._value.base[J.LOW]=~t._value.base[J.LOW]&n,t._value.base[J.HIGH]=0}else if(t._value.base[J.LOW]=~t._value.base[J.LOW],e<64){const n=(1<<e-32)-1;t._value.base[J.HIGH]=~t._value.base[J.HIGH]&n}else t._value.base[J.HIGH]=~t._value.base[J.HIGH];return t}copyFrom(e){X.copy(e._value,this._value)}clone(){return new pe(this._value)}getValue(){return this._value}setValue(e){if("object"==typeof e)X.copy(e,this._value);else if("number"==typeof e)this._value=X.fromNumber(e);else{const t=parseInt(e,10);this._value=X.fromNumber(t)}}toString(){const e=[];for(let t=0;t<64;t++)this.get(t)&&e.push(t.toString());return`Bits[${e.join(", ")}]`}toBinaryString(e=0){0==e&&(e=64+(this._value.segments?64*this._value.segments.length:0));let t="";for(let n=e-1;n>=0;n--)t+=this.get(n)?"1":"0",n%8==0&&n>0&&(t+=" ");return t}toHexString(){return X.toString(this._value,16)}static fromBinaryString(e){const t=e.replace(/\s/g,"");let n;if(t.length<=32){n={base:[parseInt(t,2)>>>0,0]}}else{const e=t.substring(t.length-32),s=t.substring(0,t.length-32);n={base:[parseInt(e,2)>>>0,parseInt(s,2)>>>0]}}return new pe(n)}static fromHexString(e){const t=e.replace(/^0x/i,"");let n;if(t.length<=8){n={base:[parseInt(t,16)>>>0,0]}}else{const e=t.substring(t.length-8),s=t.substring(0,t.length-8);n={base:[parseInt(e,16)>>>0,parseInt(s,16)>>>0]}}return new pe(n)}equals(e){return X.equals(this._value,e._value)}getHighestBitIndex(){if(X.isZero(this._value))return-1;if(0!==this._value.base[J.HIGH])for(let e=31;e>=0;e--)if(this._value.base[J.HIGH]&1<<e)return e+32;for(let e=31;e>=0;e--)if(this._value.base[J.LOW]&1<<e)return e;return-1}getLowestBitIndex(){if(X.isZero(this._value))return-1;for(let e=0;e<32;e++)if(this._value.base[J.LOW]&1<<e)return e;for(let e=0;e<32;e++)if(this._value.base[J.HIGH]&1<<e)return e+32;return-1}}class me{constructor(){this._dense=[],this._sparse=new Map}add(e){if(this._sparse.has(e))return!1;const t=this._dense.length;return this._dense.push(e),this._sparse.set(e,t),!0}remove(e){const t=this._sparse.get(e);if(void 0===t)return!1;const n=this._dense.length-1;if(t!==n){const e=this._dense[n];this._dense[t]=e,this._sparse.set(e,t)}return this._dense.pop(),this._sparse.delete(e),!0}has(e){return this._sparse.has(e)}getIndex(e){return this._sparse.get(e)}getByIndex(e){return this._dense[e]}get size(){return this._dense.length}get isEmpty(){return 0===this._dense.length}forEach(e){for(let t=0;t<this._dense.length;t++)e(this._dense[t],t)}map(e){const t=[];for(let n=0;n<this._dense.length;n++)t.push(e(this._dense[n],n));return t}filter(e){const t=[];for(let n=0;n<this._dense.length;n++)e(this._dense[n],n)&&t.push(this._dense[n]);return t}find(e){for(let t=0;t<this._dense.length;t++)if(e(this._dense[t],t))return this._dense[t]}some(e){for(let t=0;t<this._dense.length;t++)if(e(this._dense[t],t))return!0;return!1}every(e){for(let t=0;t<this._dense.length;t++)if(!e(this._dense[t],t))return!1;return!0}getDenseArray(){return[...this._dense]}getDenseArrayUnsafe(){return this._dense}clear(){this._dense.length=0,this._sparse.clear()}toArray(){return[...this._dense]}toSet(){return new Set(this._dense)}getMemoryStats(){const e=8*this._dense.length,t=16*this._sparse.size;return{denseArraySize:e,sparseMapSize:t,totalMemory:e+t}}validate(){if(this._dense.length!==this._sparse.size)return!1;for(let e=0;e<this._dense.length;e++){const t=this._dense[e];if(this._sparse.get(t)!==e)return!1}for(const[e,t]of this._sparse)if(t>=this._dense.length||this._dense[t]!==e)return!1;return!0}}class ge extends Set{constructor(...e){super()}reset(){this.clear()}}class ye{constructor(){this._componentMasks=[],this._componentToEntities=new Map,this._entities=new me}addEntity(e){this._entities.has(e)&&this.removeEntity(e);const t=X.clone(X.ZERO),n=new Set;for(const s of e.components){const e=s.constructor;n.add(e),te.isRegistered(e)||te.register(e);const i=te.getBitMask(e);X.orInPlace(t,i)}this._entities.add(e);const s=this._entities.getIndex(e);for(;this._componentMasks.length<=s;)this._componentMasks.push(X.clone(X.ZERO));this._componentMasks[s]=t,this.updateComponentMappings(e,n,!0)}removeEntity(e){const t=this._entities.getIndex(e);if(void 0===t)return;const n=this.getEntityComponentTypes(e);this.updateComponentMappings(e,n,!1),this._entities.remove(e);const s=this._componentMasks.length-1;t!==s&&(this._componentMasks[t]=this._componentMasks[s]),this._componentMasks.pop()}queryByComponent(e){const t=this._componentToEntities.get(e);return t?new Set(t):new Set}queryMultipleAnd(e){if(0===e.length)return new Set;if(1===e.length)return this.queryByComponent(e[0]);const t=X.clone(X.ZERO);for(const n of e){if(!te.isRegistered(n))return new Set;const e=te.getBitMask(n);X.orInPlace(t,e)}const n=ye._entitySetPool.obtain();return this._entities.forEach(((e,s)=>{const i=this._componentMasks[s];X.hasAll(i,t)&&n.add(e)})),n}queryMultipleOr(e){if(0===e.length)return new Set;if(1===e.length)return this.queryByComponent(e[0]);const t=X.clone(X.ZERO);for(const n of e)if(te.isRegistered(n)){const e=te.getBitMask(n);X.orInPlace(t,e)}if(X.equals(t,X.ZERO))return new Set;const n=ye._entitySetPool.obtain();return this._entities.forEach(((e,s)=>{const i=this._componentMasks[s];X.hasAny(i,t)&&n.add(e)})),n}hasComponent(e,t){const n=this._entities.getIndex(e);if(void 0===n)return!1;if(!te.isRegistered(t))return!1;const s=this._componentMasks[n],i=te.getBitMask(t);return X.hasAny(s,i)}getEntityMask(e){const t=this._entities.getIndex(e);if(void 0!==t)return this._componentMasks[t]}getAllEntities(){return this._entities.toArray()}get size(){return this._entities.size}get isEmpty(){return this._entities.isEmpty}forEach(e){this._entities.forEach(((t,n)=>{e(t,this._componentMasks[n],n)}))}clear(){this._entities.clear(),this._componentMasks.length=0;for(const e of this._componentToEntities.values())ye._entitySetPool.release(e);this._componentToEntities.clear()}getMemoryStats(){const e=this._entities.getMemoryStats(),t=16*this._componentMasks.length;let n=16*this._componentToEntities.size;for(const e of this._componentToEntities.values())n+=8*e.size;return{entitiesMemory:e.totalMemory,masksMemory:t,mappingsMemory:n,totalMemory:e.totalMemory+t+n}}validate(){if(!this._entities.validate())return!1;if(this._componentMasks.length!==this._entities.size)return!1;const e=new Set;for(const t of this._componentToEntities.values())for(const n of t)e.add(n);for(const t of e)if(!this._entities.has(t))return!1;return!0}getEntityComponentTypes(e){const t=new Set;for(const n of e.components)t.add(n.constructor);return t}updateComponentMappings(e,t,n){for(const s of t){let t=this._componentToEntities.get(s);n?(t||(t=ye._entitySetPool.obtain(),this._componentToEntities.set(s,t)),t.add(e)):t&&(t.delete(e),0===t.size&&(this._componentToEntities.delete(s),ye._entitySetPool.release(t)))}}}ye._entitySetPool=_.getPool(ge,50,512);class fe{constructor(){this.buckets=new Map,this._size=0}get size(){return this._size}get innerBuckets(){return this.buckets}murmur32(e,t){let n=t>>>0;const s=e=>{e=(e=Math.imul(e,3432918353)>>>0)<<15|e>>>17,e=Math.imul(e,461845907)>>>0,n^=e,n=n<<13|n>>>19,n=Math.imul(n,5)+3864292196>>>0};if(s(e.base[0]>>>0),s(e.base[1]>>>0),e.segments)for(const t of e.segments)s(t[0]>>>0),s(t[1]>>>0);return n^=e.segments?8*e.segments.length:8,n^=n>>>16,n=Math.imul(n,2246822507)>>>0,n^=n>>>13,n=Math.imul(n,3266489909)>>>0,n^=n>>>16,n>>>0}getHashes(e){return[this.murmur32(e,2538058380),this.murmur32(e,305419896)]}set(e,t){const[n,s]=this.getHashes(e);let i=this.buckets.get(n);i||(i=[],this.buckets.set(n,i));for(let e=0;e<i.length;e++)if(i[e][0]===s)return i[e][1]=t,this;return i.push([s,t]),this._size++,this}get(e){const[t,n]=this.getHashes(e),s=this.buckets.get(t);if(s)for(let e=0;e<s.length;e++)if(s[e][0]===n)return s[e][1]}has(e){return void 0!==this.get(e)}delete(e){const[t,n]=this.getHashes(e),s=this.buckets.get(t);if(!s)return!1;for(let e=0;e<s.length;e++)if(s[e][0]===n)return s.splice(e,1),this._size--,0===s.length&&this.buckets.delete(t),!0;return!1}clear(){this.buckets.clear(),this._size=0}*entries(){for(const[e,t]of this.buckets)for(const[e,n]of t)yield[void 0,n]}*values(){for(const e of this.buckets.values())for(const[t,n]of e)yield n}}class _e{constructor(){this._archetypes=new fe,this._entityToArchetype=new Map,this._componentToArchetypes=new Map,this._entityComponentTypesCache=new Map,this._allArchetypes=[]}addEntity(e){const t=this.getEntityComponentTypes(e),n=this.generateArchetypeId(t);let s=this._archetypes.get(n);s||(s=this.createArchetype(t)),s.entities.add(e),this._entityToArchetype.set(e,s)}removeEntity(e){const t=this._entityToArchetype.get(e);t&&(t.entities.delete(e),this._entityComponentTypesCache.delete(e),this._entityToArchetype.delete(e))}updateEntity(e){const t=this._entityToArchetype.get(e);this._entityComponentTypesCache.delete(e);const n=this.getEntityComponentTypes(e),s=this.generateArchetypeId(n);if(t&&t.id===s)return;t&&t.entities.delete(e);let i=this._archetypes.get(s);i||(i=this.createArchetype(n)),i.entities.add(e),this._entityToArchetype.set(e,i)}queryArchetypes(e,t="AND"){const n=[];let s=0;if("AND"===t){if(0===e.length){for(const e of this._allArchetypes)n.push(e),s+=e.entities.size;return{archetypes:n,totalEntities:s}}if(1===e.length){const t=this._componentToArchetypes.get(e[0]);if(t)for(const e of t)n.push(e),s+=e.entities.size;return{archetypes:n,totalEntities:s}}let t,i=1/0;for(const n of e){const e=this._componentToArchetypes.get(n);if(!e||0===e.size)return{archetypes:[],totalEntities:0};e.size<i&&(i=e.size,t=e)}const r=this.generateArchetypeId(e);if(t)for(const e of t)X.hasAll(e.id,r)&&(n.push(e),s+=e.entities.size)}else{const t=new Set;for(const n of e){const e=this._componentToArchetypes.get(n);if(e)for(const n of e)t.add(n)}for(const e of t)n.push(e),s+=e.entities.size}return{archetypes:n,totalEntities:s}}getEntityArchetype(e){return this._entityToArchetype.get(e)}getAllArchetypes(){return this._allArchetypes.slice()}getEntitiesByComponent(e){const t=this._componentToArchetypes.get(e);if(!t||0===t.size)return[];const n=[];for(const e of t)for(const t of e.entities)n.push(t);return n}clear(){this._archetypes.clear(),this._entityToArchetype.clear(),this._componentToArchetypes.clear(),this._entityComponentTypesCache.clear(),this._allArchetypes=[]}updateAllArchetypeArrays(){this._allArchetypes=[];for(const e of this._archetypes.values())this._allArchetypes.push(e)}getEntityComponentTypes(e){let t=this._entityComponentTypesCache.get(e);return t||(t=e.components.map((e=>e.constructor)),this._entityComponentTypesCache.set(e,t)),t}generateArchetypeId(e){const t=X.clone(X.ZERO);for(const n of e){te.isRegistered(n)||te.register(n);const e=te.getBitMask(n);X.orInPlace(t,e)}return t}createArchetype(e){const t=this.generateArchetypeId(e),n={id:t,componentTypes:[...e],entities:new Set};this._archetypes.set(t,n),this.updateAllArchetypeArrays();for(const t of e){let e=this._componentToArchetypes.get(t);e||(e=new Set,this._componentToArchetypes.set(t,e)),e.add(n)}return n}}!function(e){e.ALL="all",e.ANY="any",e.NONE="none"}(Z||(Z={}));const Se=N("ReactiveQuery");var Ce;exports.ReactiveQueryChangeType=void 0,(Ce=exports.ReactiveQueryChangeType||(exports.ReactiveQueryChangeType={})).ADDED="added",Ce.REMOVED="removed",Ce.BATCH_UPDATE="batch_update";class ve{constructor(e,t={}){this._entities=[],this._entityIdSet=new Set,this._listeners=[],this._active=!0,this._condition=e,this._config={enableBatchMode:t.enableBatchMode??!0,batchDelay:t.batchDelay??16,debug:t.debug??!1},this._id=this.generateQueryId(),this._batchChanges={added:[],removed:[],timer:null},this._config.debug&&Se.debug(`创建ReactiveQuery: ${this._id}`)}generateQueryId(){return`${this._condition.type}:${this._condition.componentTypes.map((e=>e.name)).sort().join(",")}`}subscribe(e){if(!this._active)throw new Error(`Cannot subscribe to disposed ReactiveQuery ${this._id}`);if("function"!=typeof e)throw new TypeError("Listener must be a function");return this._listeners.push(e),this._config.debug&&Se.debug(`订阅ReactiveQuery: ${this._id}, 监听器数量: ${this._listeners.length}`),()=>{const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}unsubscribeAll(){this._listeners.length=0}getEntities(){return this._entities}get count(){return this._entities.length}matches(e){const t=e.componentMask;switch(this._condition.type){case Z.ALL:return X.hasAll(t,this._condition.mask);case Z.ANY:return X.hasAny(t,this._condition.mask);case Z.NONE:return X.hasNone(t,this._condition.mask);default:return!1}}notifyEntityAdded(e){this._active&&this.matches(e)&&(this._entityIdSet.has(e.id)||(this._entities.push(e),this._entityIdSet.add(e.id),this._config.enableBatchMode?this.addToBatch("added",e):this.notifyListeners({type:exports.ReactiveQueryChangeType.ADDED,entity:e}),this._config.debug&&Se.debug(`ReactiveQuery ${this._id}: 实体添加 ${e.name}(${e.id})`)))}notifyEntityRemoved(e){if(!this._active)return;if(!this._entityIdSet.has(e.id))return;const t=this._entities.indexOf(e);-1!==t&&this._entities.splice(t,1),this._entityIdSet.delete(e.id),this._config.enableBatchMode?this.addToBatch("removed",e):this.notifyListeners({type:exports.ReactiveQueryChangeType.REMOVED,entity:e}),this._config.debug&&Se.debug(`ReactiveQuery ${this._id}: 实体移除 ${e.name}(${e.id})`)}notifyEntityChanged(e){if(!this._active)return;const t=this._entityIdSet.has(e.id),n=this.matches(e);t&&!n?this.notifyEntityRemoved(e):!t&&n&&this.notifyEntityAdded(e)}initializeWith(e){this._entities.length=0,this._entityIdSet.clear();for(const t of e)this.matches(t)&&(this._entities.push(t),this._entityIdSet.add(t.id));this._config.debug&&Se.debug(`ReactiveQuery ${this._id}: 初始化 ${this._entities.length} 个实体`)}addToBatch(e,t){"added"===e?this._batchChanges.added.push(t):this._batchChanges.removed.push(t),null===this._batchChanges.timer&&(this._batchChanges.timer=setTimeout((()=>{this.flushBatchChanges()}),this._config.batchDelay))}flushBatchChanges(){if(0===this._batchChanges.added.length&&0===this._batchChanges.removed.length)return void(this._batchChanges.timer=null);const e=[...this._batchChanges.added],t=[...this._batchChanges.removed];this._batchChanges.added.length=0,this._batchChanges.removed.length=0,this._batchChanges.timer=null,this.notifyListeners({type:exports.ReactiveQueryChangeType.BATCH_UPDATE,added:e,removed:t,entities:this._entities}),this._config.debug&&Se.debug(`ReactiveQuery ${this._id}: 批量更新 +${e.length} -${t.length}`)}notifyListeners(e){const t=[...this._listeners];for(const n of t)try{n(e)}catch(e){Se.error(`ReactiveQuery ${this._id}: 监听器执行出错`,e)}}pause(){this._active=!1,null!==this._batchChanges.timer&&(clearTimeout(this._batchChanges.timer),this._batchChanges.timer=null),this._batchChanges.added.length=0,this._batchChanges.removed.length=0}resume(){this._active=!0}dispose(){null!==this._batchChanges.timer&&(clearTimeout(this._batchChanges.timer),this._batchChanges.timer=null),this._batchChanges.added.length=0,this._batchChanges.removed.length=0,this._active=!1,this.unsubscribeAll(),this._entities.length=0,this._entityIdSet.clear(),this._config.debug&&Se.debug(`ReactiveQuery ${this._id}: 已销毁`)}get condition(){return this._condition}get id(){return this._id}get active(){return this._active}get listenerCount(){return this._listeners.length}}class Ee{constructor(){this._logger=N("QuerySystem"),this._entities=[],this._version=0,this._queryCache=new Map,this._cacheMaxSize=1e3,this._cacheTimeout=5e3,this._componentMaskCache=new Map,this._queryStats={totalQueries:0,cacheHits:0,indexHits:0,linearScans:0,archetypeHits:0,dirtyChecks:0},this._reactiveQueries=new Map,this._reactiveQueriesByComponent=new Map,this._entityIndex={byTag:new Map,byName:new Map},this._archetypeSystem=new _e}setEntities(e){this._entities=e,this.clearQueryCache(),this.clearReactiveQueries(),this.rebuildIndexes()}addEntity(e,t=!1){this._entities.includes(e)||(this._entities.push(e),this.addEntityToIndexes(e),this._archetypeSystem.addEntity(e),this.notifyReactiveQueriesEntityAdded(e),t||this.clearQueryCache(),this._version++)}addEntities(e){if(0===e.length)return;const t=new Set(this._entities.map((e=>e.id)));let n=0;for(const s of e)t.has(s.id)||(this._entities.push(s),this.addEntityToIndexes(s),this._archetypeSystem.addEntity(s),t.add(s.id),n++);n>0&&this.clearQueryCache()}addEntitiesUnchecked(e){if(0!==e.length){for(const t of e)this._entities.push(t);for(const t of e)this.addEntityToIndexes(t),this._archetypeSystem.addEntity(t);this.clearQueryCache()}}removeEntity(e){const t=this._entities.indexOf(e);if(-1!==t){const n=[];for(const t of e.components)n.push(t.constructor);this._entities.splice(t,1),this.removeEntityFromIndexes(e),this._archetypeSystem.removeEntity(e),n.length>0?this.notifyReactiveQueriesEntityRemoved(e,n):this.notifyReactiveQueriesEntityRemovedFallback(e),this.clearQueryCache(),this._version++}}updateEntity(e){this._entities.includes(e)?(this.removeEntityFromIndexes(e),this._archetypeSystem.updateEntity(e),this.addEntityToIndexes(e),this.notifyReactiveQueriesEntityChanged(e),this.clearQueryCache(),this._version++):this.addEntity(e)}addEntityToIndexes(e){const t=e.tag;if(void 0!==t){(this._entityIndex.byTag.get(t)||this.createAndSetTagIndex(t)).add(e)}const n=e.name;if(n){(this._entityIndex.byName.get(n)||this.createAndSetNameIndex(n)).add(e)}}createAndSetTagIndex(e){const t=new Set;return this._entityIndex.byTag.set(e,t),t}createAndSetNameIndex(e){const t=new Set;return this._entityIndex.byName.set(e,t),t}removeEntityFromIndexes(e){if(void 0!==e.tag){const t=this._entityIndex.byTag.get(e.tag);t&&(t.delete(e),0===t.size&&this._entityIndex.byTag.delete(e.tag))}if(e.name){const t=this._entityIndex.byName.get(e.name);t&&(t.delete(e),0===t.size&&this._entityIndex.byName.delete(e.name))}}rebuildIndexes(){this._entityIndex.byTag.clear(),this._entityIndex.byName.clear(),this._archetypeSystem.clear();for(const e of this._entities)this.addEntityToIndexes(e),this._archetypeSystem.addEntity(e)}queryAll(...e){const t=performance.now();this._queryStats.totalQueries++;const n=this.getOrCreateReactiveQuery(Z.ALL,e).getEntities();return this._queryStats.cacheHits++,{entities:n,count:n.length,executionTime:performance.now()-t,fromCache:!0}}queryAny(...e){const t=performance.now();this._queryStats.totalQueries++;const n=this.getOrCreateReactiveQuery(Z.ANY,e).getEntities();return this._queryStats.cacheHits++,{entities:n,count:n.length,executionTime:performance.now()-t,fromCache:!0}}queryNone(...e){const t=performance.now();this._queryStats.totalQueries++;const n=this.getOrCreateReactiveQuery(Z.NONE,e).getEntities();return this._queryStats.cacheHits++,{entities:n,count:n.length,executionTime:performance.now()-t,fromCache:!0}}queryByTag(e){const t=performance.now();this._queryStats.totalQueries++;const n=`tag:${e}`,s=this.getFromCache(n);if(s)return this._queryStats.cacheHits++,{entities:s,count:s.length,executionTime:performance.now()-t,fromCache:!0};this._queryStats.indexHits++;const i=Array.from(this._entityIndex.byTag.get(e)||[]);return this.addToCache(n,i),{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!1}}queryByName(e){const t=performance.now();this._queryStats.totalQueries++;const n=`name:${e}`,s=this.getFromCache(n);if(s)return this._queryStats.cacheHits++,{entities:s,count:s.length,executionTime:performance.now()-t,fromCache:!0};this._queryStats.indexHits++;const i=Array.from(this._entityIndex.byName.get(e)||[]);return this.addToCache(n,i),{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!1}}queryByComponent(e){const t=performance.now();this._queryStats.totalQueries++;const n=this.generateCacheKey("component",[e]),s=this.getFromCache(n);if(s)return this._queryStats.cacheHits++,{entities:s,count:s.length,executionTime:performance.now()-t,fromCache:!0};this._queryStats.indexHits++;const i=this._archetypeSystem.getEntitiesByComponent(e);return this.addToCache(n,i),{entities:i,count:i.length,executionTime:performance.now()-t,fromCache:!1}}getFromCache(e){const t=this._queryCache.get(e);return t?Date.now()-t.timestamp>this._cacheTimeout||t.version!==this._version?(this._queryCache.delete(e),null):(t.hitCount++,t.entities):null}addToCache(e,t){this._queryCache.size>=this._cacheMaxSize&&this.cleanupCache(),this._queryCache.set(e,{entities:t,timestamp:Date.now(),hitCount:0,version:this._version})}cleanupCache(){const e=Date.now();for(const[t,n]of this._queryCache.entries())e-n.timestamp>this._cacheTimeout&&this._queryCache.delete(t);if(this._queryCache.size>=this._cacheMaxSize){let e=1/0,t="",n=1/0;for(const[s,i]of this._queryCache.entries())(i.hitCount<e||i.hitCount===e&&i.timestamp<n)&&(e=i.hitCount,t=s,n=i.timestamp);t&&this._queryCache.delete(t)}}clearQueryCache(){this._queryCache.clear(),this._componentMaskCache.clear()}clearReactiveQueries(){for(const e of this._reactiveQueries.values())e.dispose();this._reactiveQueries.clear(),this._reactiveQueriesByComponent.clear()}generateCacheKey(e,t){if(1===t.length){return`${e}:${b(t[0])}`}return`${e}:${t.map((e=>b(e))).sort().join(",")}`}clearCache(){this.clearQueryCache(),this.clearReactiveQueries()}createReactiveQuery(e,t){if(!e||0===e.length)throw new Error("组件类型列表不能为空");const n=this.createComponentMask(e),s={type:Z.ALL,componentTypes:e,mask:n},i=new ve(s,t),r=this.executeTraditionalQuery(Z.ALL,e);i.initializeWith(r);const o=this.generateCacheKey("all",e);this._reactiveQueries.set(o,i);for(const t of e){let e=this._reactiveQueriesByComponent.get(t);e||(e=new Set,this._reactiveQueriesByComponent.set(t,e)),e.add(i)}return i}destroyReactiveQuery(e){if(!e)return;const t=e.id;this._reactiveQueries.delete(t);for(const t of e.condition.componentTypes){const n=this._reactiveQueriesByComponent.get(t);n&&(n.delete(e),0===n.size&&this._reactiveQueriesByComponent.delete(t))}e.dispose()}createComponentMask(e){const t=e.map((e=>b(e))).sort().join(","),n=this._componentMaskCache.get(t);if(n)return n;const s=X.clone(X.ZERO);for(const t of e){te.isRegistered(t)||te.register(t);const e=te.getBitMask(t);X.orInPlace(s,e)}return this._componentMaskCache.set(t,s),s}get version(){return this._version}getAllEntities(){return this._entities}getStats(){return{entityCount:this._entities.length,indexStats:{componentIndexSize:this._archetypeSystem.getAllArchetypes().length,tagIndexSize:this._entityIndex.byTag.size,nameIndexSize:this._entityIndex.byName.size},queryStats:{...this._queryStats,cacheHitRate:this._queryStats.totalQueries>0?(this._queryStats.cacheHits/this._queryStats.totalQueries*100).toFixed(2)+"%":"0%"},optimizationStats:{archetypeSystem:this._archetypeSystem.getAllArchetypes().map((e=>({id:e.id,componentTypes:e.componentTypes.map((e=>b(e))),entityCount:e.entities.size})))},cacheStats:{size:this._reactiveQueries.size,hitRate:this._queryStats.totalQueries>0?(this._queryStats.cacheHits/this._queryStats.totalQueries*100).toFixed(2)+"%":"0%"}}}getEntityArchetype(e){return this._archetypeSystem.getEntityArchetype(e)}getOrCreateReactiveQuery(e,t){const n=this.generateCacheKey(e,t);let s=this._reactiveQueries.get(n);if(!s){const i=this.createComponentMask(t);s=new ve({type:e,componentTypes:t,mask:i},{enableBatchMode:!1,debug:!1});const r=this.executeTraditionalQuery(e,t);s.initializeWith(r),this._reactiveQueries.set(n,s);for(const e of t){let t=this._reactiveQueriesByComponent.get(e);t||(t=new Set,this._reactiveQueriesByComponent.set(e,t)),t.add(s)}this._logger.debug(`创建内部响应式查询缓存: ${n}`)}return s}executeTraditionalQuery(e,t){switch(e){case Z.ALL:{const e=this._archetypeSystem.queryArchetypes(t,"AND"),n=[];for(const t of e.archetypes)for(const e of t.entities)n.push(e);return n}case Z.ANY:{const e=this._archetypeSystem.queryArchetypes(t,"OR"),n=[];for(const t of e.archetypes)for(const e of t.entities)n.push(e);return n}case Z.NONE:{const e=this.createComponentMask(t);return this._entities.filter((t=>X.hasNone(t.componentMask,e)))}default:return[]}}notifyReactiveQueriesEntityAdded(e){if(0===this._reactiveQueries.size)return;const t=new Set;for(const n of e.components){const s=n.constructor,i=this._reactiveQueriesByComponent.get(s);if(i)for(const n of i)t.has(n)||(n.notifyEntityAdded(e),t.add(n))}}notifyReactiveQueriesEntityRemoved(e,t){if(0===this._reactiveQueries.size)return;const n=new Set;for(const s of t){const t=this._reactiveQueriesByComponent.get(s);if(t)for(const s of t)n.has(s)||(s.notifyEntityRemoved(e),n.add(s))}}notifyReactiveQueriesEntityRemovedFallback(e){if(0!==this._reactiveQueries.size)for(const t of this._reactiveQueries.values())t.notifyEntityRemoved(e)}notifyReactiveQueriesEntityChanged(e){if(0===this._reactiveQueries.size)return;const t=new Set;for(const n of e.components){const s=n.constructor,i=this._reactiveQueriesByComponent.get(s);if(i)for(const n of i)t.has(n)||(n.notifyEntityChanged(e),t.add(n))}for(const n of this._reactiveQueries.values())t.has(n)||n.notifyEntityChanged(e)}}class be{constructor(e){this._logger=N("QueryBuilder"),this.conditions=[],this.querySystem=e}withAll(...e){return this.conditions.push({type:Z.ALL,componentTypes:e,mask:this.createComponentMask(e)}),this}withAny(...e){return this.conditions.push({type:Z.ANY,componentTypes:e,mask:this.createComponentMask(e)}),this}without(...e){return this.conditions.push({type:Z.NONE,componentTypes:e,mask:this.createComponentMask(e)}),this}execute(){const e=performance.now();if(1===this.conditions.length){const e=this.conditions[0];switch(e.type){case Z.ALL:return this.querySystem.queryAll(...e.componentTypes);case Z.ANY:return this.querySystem.queryAny(...e.componentTypes);case Z.NONE:return this.querySystem.queryNone(...e.componentTypes)}}return{entities:[],count:0,executionTime:performance.now()-e,fromCache:!1}}createComponentMask(e){const t=X.clone(X.ZERO);for(const n of e)try{const e=te.getBitMask(n);X.orInPlace(t,e)}catch(e){this._logger.warn(`组件类型 ${b(n)} 未注册,跳过`)}return t}reset(){return this.conditions=[],this}}class Te{constructor(){this.listeners=new Map,this.stats=new Map,this.batchQueue=new Map,this.batchTimers=new Map,this.batchConfigs=new Map,this.nextListenerId=0,this.isEnabled=!0,this.maxListeners=100}on(e,t,n={}){return this.addListener(e,t,n)}once(e,t,n={}){return this.addListener(e,t,{...n,once:!0})}onAsync(e,t,n={}){return this.addListener(e,t,{...n,async:!0})}off(e,t){const n=this.listeners.get(e);if(!n)return!1;const s=n.findIndex((e=>e.id===t));return-1!==s&&(n.splice(s,1),0===n.length&&(this.listeners.delete(e),this.stats.delete(e)),!0)}offAll(e){this.listeners.delete(e),this.stats.delete(e),this.clearBatch(e)}async emit(e,t){if(!this.isEnabled)return;const n=this.batchConfigs.get(e);n?.enabled?this.addToBatch(e,t):await this.executeEvent(e,t)}emitSync(e,t){if(!this.isEnabled)return;const n=this.listeners.get(e);if(!n||0===n.length)return;const s=performance.now(),i=[],r=this.sortListenersByPriority(n);for(const n of r)if(!n.config.async)try{n.config.thisArg?n.handler.call(n.config.thisArg,t):n.handler(t),n.config.once&&i.push(n.id)}catch(t){Te._logger.error(`事件处理器执行错误 ${e}:`,t)}this.removeListeners(e,i),this.updateStats(e,performance.now()-s)}setBatchConfig(e,t){this.batchConfigs.set(e,t)}flushBatch(e){const t=this.batchQueue.get(e);if(!t||0===t.length)return;const n=this.batchTimers.get(e);n&&(clearTimeout(n),this.batchTimers.delete(e)),this.processBatch(e,t),this.batchQueue.delete(e)}getStats(e){return e?this.stats.get(e)||this.createEmptyStats(e):new Map(this.stats)}resetStats(e){e?this.stats.delete(e):this.stats.clear()}setEnabled(e){this.isEnabled=e}hasListeners(e){const t=this.listeners.get(e);return!!t&&t.length>0}getListenerCount(e){const t=this.listeners.get(e);return t?t.length:0}clear(){this.listeners.clear(),this.stats.clear(),this.clearAllBatches()}setMaxListeners(e){this.maxListeners=e}addListener(e,t,n){let s=this.listeners.get(e);if(s||(s=[],this.listeners.set(e,s)),s.length>=this.maxListeners)return Te._logger.warn(`事件类型 ${e} 的监听器数量超过最大限制 (${this.maxListeners})`),"";const i="listener_"+this.nextListenerId++,r={handler:t,config:{priority:0,...n},id:i};return s.push(r),this.stats.has(e)||this.stats.set(e,this.createEmptyStats(e)),i}async executeEvent(e,t){const n=this.listeners.get(e);if(!n||0===n.length)return;const s=performance.now(),i=[],r=this.sortListenersByPriority(n),o=r.filter((e=>!e.config.async)),a=r.filter((e=>e.config.async));for(const n of o)try{n.config.thisArg?n.handler.call(n.config.thisArg,t):n.handler(t),n.config.once&&i.push(n.id)}catch(t){Te._logger.error(`同步事件处理器执行错误 ${e}:`,t)}const c=a.map((async n=>{try{n.config.thisArg?await n.handler.call(n.config.thisArg,t):await n.handler(t),n.config.once&&i.push(n.id)}catch(t){Te._logger.error(`异步事件处理器执行错误 ${e}:`,t)}}));await Promise.all(c),this.removeListeners(e,i),this.updateStats(e,performance.now()-s)}sortListenersByPriority(e){return e.slice().sort(((e,t)=>(t.config.priority||0)-(e.config.priority||0)))}removeListeners(e,t){if(0===t.length)return;const n=this.listeners.get(e);if(n){for(const e of t){const t=n.findIndex((t=>t.id===e));-1!==t&&n.splice(t,1)}0===n.length&&(this.listeners.delete(e),this.stats.delete(e))}}addToBatch(e,t){let n=this.batchQueue.get(e);n||(n=[],this.batchQueue.set(e,n)),n.push(t);const s=this.batchConfigs.get(e);if(n.length>=s.batchSize)this.flushBatch(e);else if(!this.batchTimers.has(e)){const t=setTimeout((()=>{this.flushBatch(e)}),s.delay);this.batchTimers.set(e,t)}}async processBatch(e,t){const n={type:e,events:t,count:t.length,timestamp:Date.now()};await this.executeEvent(`${e}:batch`,n)}clearBatch(e){this.batchQueue.delete(e);const t=this.batchTimers.get(e);t&&(clearTimeout(t),this.batchTimers.delete(e))}clearAllBatches(){this.batchQueue.clear();for(const e of this.batchTimers.values())clearTimeout(e);this.batchTimers.clear(),this.batchConfigs.clear()}updateStats(e,t){let n=this.stats.get(e);n||(n=this.createEmptyStats(e),this.stats.set(e,n)),n.triggerCount++,n.totalExecutionTime+=t,n.averageExecutionTime=n.totalExecutionTime/n.triggerCount,n.lastTriggerTime=Date.now(),n.listenerCount=this.getListenerCount(e)}createEmptyStats(e){return{eventType:e,listenerCount:0,triggerCount:0,totalExecutionTime:0,averageExecutionTime:0,lastTriggerTime:0}}}Te._logger=N("EventSystem");class we{constructor(e,t){this._entities=e,this._componentTypes=t}get entities(){return this._entities}get length(){return this._entities.length}forEach(e){this._entities.forEach(e)}map(e){return this._entities.map(e)}filter(e){return new we(this._entities.filter(e),this._componentTypes)}find(e){return this._entities.find(e)}some(e){return this._entities.some(e)}every(e){return this._entities.every(e)}get(e){return this._entities[e]}get first(){return this._entities[0]}get last(){return this._entities[this._entities.length-1]}get isEmpty(){return 0===this._entities.length}toArray(){return[...this._entities]}getComponentTypes(){return this._componentTypes}[Symbol.iterator](){return this._entities[Symbol.iterator]()}}class Ae{constructor(e,t,n,s,i){this._all=e||[],this._any=t||[],this._none=n||[],void 0!==s&&(this._tag=s),void 0!==i&&(this._name=i)}withAll(...e){return new Ae([...this._all,...e],this._any,this._none,this._tag,this._name)}withAny(...e){return new Ae(this._all,[...this._any,...e],this._none,this._tag,this._name)}withNone(...e){return new Ae(this._all,this._any,[...this._none,...e],this._tag,this._name)}withTag(e){return new Ae(this._all,this._any,this._none,e,this._name)}withName(e){return new Ae(this._all,this._any,this._none,this._tag,e)}buildMatcher(){let e=he.complex();return this._all.length>0&&(e=e.all(...this._all)),this._any.length>0&&(e=e.any(...this._any)),this._none.length>0&&(e=e.none(...this._none)),void 0!==this._tag&&(e=e.withTag(this._tag)),void 0!==this._name&&(e=e.withName(this._name)),e}getCondition(){return{all:[...this._all],any:[...this._any],none:[...this._none],...void 0!==this._tag&&{tag:this._tag},...void 0!==this._name&&{name:this._name}}}getRequiredTypes(){return this._all}clone(){return new Ae([...this._all],[...this._any],[...this._none],this._tag,this._name)}}const Me=Symbol("SerializableMetadata"),Ie=Symbol("SerializeField"),xe=Symbol("SerializeOptions");function De(e){return function(t,n){const s=t.constructor;let i=s[Me];i||(i={options:{version:1},fields:new Map,ignoredFields:new Set},s[Me]=i),i.fields.set(n,e||{})}}function ke(e){if(!e)return null;return("function"==typeof e?e:e.constructor)[Me]||null}class Re{static serialize(e){const t=ke(e);if(!t)return null;const n=e.constructor,s=t.options.typeId||b(n),i={};for(const[n,s]of t.fields){const r="symbol"==typeof n?n.toString():n,o=e[n];if(t.ignoredFields.has(n))continue;const a=s.serializer?s.serializer(o):this.serializeValue(o);i[s.alias||r]=a}return{type:s,version:t.options.version,data:i}}static deserialize(e,t){const n=t.get(e.type);if(!n)return console.warn(`未找到组件类型: ${e.type}`),null;const s=ke(n);if(!s)return console.warn(`组件 ${e.type} 不可序列化`),null;const i=new n;for(const[t,n]of s.fields){const s="symbol"==typeof t?t.toString():t,r=n.alias||s,o=e.data[r];if(void 0===o)continue;const a=n.deserializer?n.deserializer(o):this.deserializeValue(o);i[t]=a}return i}static serializeComponents(e){const t=[];for(const n of e){const e=this.serialize(n);e&&t.push(e)}return t}static deserializeComponents(e,t){const n=[];for(const s of e){const e=this.deserialize(s,t);e&&n.push(e)}return n}static serializeValue(e){if(null==e)return e;const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Date)return{__type:"Date",value:e.toISOString()};if(Array.isArray(e))return e.map((e=>this.serializeValue(e)));if(e instanceof Map)return{__type:"Map",value:Array.from(e.entries())};if(e instanceof Set)return{__type:"Set",value:Array.from(e)};if("object"===t&&"object"==typeof e&&!Array.isArray(e)){const t={},n=e;for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=this.serializeValue(n[e]));return t}}static deserializeValue(e){if(null==e)return e;const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if("object"===t&&"object"==typeof e&&"__type"in e){const t=e;switch(t.__type){case"Date":return{__type:"Date",value:"string"==typeof t.value?t.value:String(t.value)};case"Map":return{__type:"Map",value:t.value};case"Set":return{__type:"Set",value:t.value}}}if(Array.isArray(e))return e.map((e=>this.deserializeValue(e)));if("object"===t&&"object"==typeof e&&!Array.isArray(e)){const t={},n=e;for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=this.deserializeValue(n[e]));return t}return e}static validateVersion(e,t){return e.version===t}static getSerializationInfo(e){const t=ke(e);if(!t)return{type:"unknown",version:0,fields:[],ignoredFields:[],isSerializable:!1};const n="function"==typeof e?e:e.constructor;return{type:t.options.typeId||b(n),version:t.options.version,fields:Array.from(t.fields.keys()).map((e=>"symbol"==typeof e?e.toString():e)),ignoredFields:Array.from(t.ignoredFields).map((e=>"symbol"==typeof e?e.toString():e)),isSerializable:!0}}}class Oe{static serialize(e,t=!0){const n=Re.serializeComponents(Array.from(e.components)),s={id:e.id,name:e.name,tag:e.tag,active:e.active,enabled:e.enabled,updateOrder:e.updateOrder,components:n,children:[]};if(e.parent&&(s.parentId=e.parent.id),t)for(const t of e.children)s.children.push(this.serialize(t,!0));return s}static deserialize(e,t,n,s=!1,i){const r=s?e.id:n(),o=new re(e.name,r);i&&(o.scene=i),o.tag=e.tag,o.active=e.active,o.enabled=e.enabled,o.updateOrder=e.updateOrder;const a=Re.deserializeComponents(e.components,t);for(const e of a)o.addComponent(e);for(const r of e.children){const e=this.deserialize(r,t,n,s,i);o.addChild(e)}return o}static serializeEntities(e,t=!0){const n=[];for(const s of e)s.parent&&t||n.push(this.serialize(s,t));return n}static deserializeEntities(e,t,n,s=!1,i){const r=[];for(const o of e){const e=this.deserialize(o,t,n,s,i);r.push(e)}return r}static clone(e,t,n){const s=this.serialize(e,!0);return this.deserialize(s,t,n,!1)}}class ze{static stringToUtf8(e){const t=e.length;let n=0;const s=[];for(let i=0;i<t;i++){let r=e.charCodeAt(i);if(r>=55296&&r<=56319&&i+1<t){const t=r,n=e.charCodeAt(i+1);n>=56320&&n<=57343&&(r=65536+(t-55296<<10)+(n-56320),i++)}r<128?s[n++]=r:r<2048?(s[n++]=192|r>>6,s[n++]=128|63&r):r<65536?(s[n++]=224|r>>12,s[n++]=128|r>>6&63,s[n++]=128|63&r):(s[n++]=240|r>>18,s[n++]=128|r>>12&63,s[n++]=128|r>>6&63,s[n++]=128|63&r)}return new Uint8Array(s)}static utf8ToString(e){const t=e.length;let n="",s=0;for(;s<t;){const t=e[s++];if(void 0===t)break;if(t<128)n+=String.fromCharCode(t);else if(192==(224&t)){const i=e[s++];if(void 0===i)break;n+=String.fromCharCode((31&t)<<6|63&i)}else if(224==(240&t)){const i=e[s++],r=e[s++];if(void 0===i||void 0===r)break;n+=String.fromCharCode((15&t)<<12|(63&i)<<6|63&r)}else if(240==(248&t)){const i=e[s++],r=e[s++],o=e[s++];if(void 0===i||void 0===r||void 0===o)break;let a=(7&t)<<18|(63&i)<<12|(63&r)<<6|63&o;a-=65536,n+=String.fromCharCode(55296+(a>>10),56320+(1023&a))}}return n}static encode(e){const t=JSON.stringify(e);return this.stringToUtf8(t)}static decode(e){const t=this.utf8ToString(e);return JSON.parse(t)}}class Pe{static serialize(e,t){const n={systems:!1,format:"json",pretty:!0,includeMetadata:!0,...t},s=this.filterEntities(e,n),i=Oe.serializeEntities(s,!0),r=this.buildComponentTypeRegistry(s),o=this.serializeSceneData(e.sceneData),a={name:e.name,version:this.SERIALIZATION_VERSION,entities:i,componentTypeRegistry:r};return o&&Object.keys(o).length>0&&(a.sceneData=o),n.includeMetadata&&(a.timestamp=Date.now(),a.metadata={entityCount:i.length,componentTypeCount:r.length,serializationOptions:n}),"json"===n.format?n.pretty?JSON.stringify(a,null,2):JSON.stringify(a):ze.encode(a)}static deserialize(e,t,n){const s={strategy:"replace",preserveIds:!1,...n};let i;try{i="string"==typeof t?JSON.parse(t):ze.decode(t)}catch(e){throw new Error(`Failed to parse save data: ${e}`)}s.migration&&i.version!==this.SERIALIZATION_VERSION&&(i=s.migration(i.version,this.SERIALIZATION_VERSION,i));const r=s.componentRegistry||this.getGlobalComponentRegistry();"replace"===s.strategy&&e.destroyAllEntities();const o=Oe.deserializeEntities(i.entities,r,(()=>e.identifierPool.checkOut()),s.preserveIds||!1,e);for(const t of o)e.addEntity(t,!0),this.addChildrenRecursively(t,e);e.querySystem.clearCache(),e.clearSystemEntityCaches(),i.sceneData&&this.deserializeSceneData(i.sceneData,e.sceneData)}static addChildrenRecursively(e,t){for(const n of e.children)t.addEntity(n,!0),this.addChildrenRecursively(n,t)}static serializeSceneData(e){const t={};for(const[n,s]of e)t[n]=this.serializeValue(s);return t}static deserializeSceneData(e,t){t.clear();for(const[n,s]of Object.entries(e))t.set(n,this.deserializeValue(s))}static serializeValue(e){if(null==e)return e;const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Date)return{__type:"Date",value:e.toISOString()};if(e instanceof Map)return{__type:"Map",value:Array.from(e.entries())};if(e instanceof Set)return{__type:"Set",value:Array.from(e)};if(Array.isArray(e))return e.map((e=>this.serializeValue(e)));if("object"===t){const t={};for(const n in e)e.hasOwnProperty(n)&&(t[n]=this.serializeValue(e[n]));return t}}static deserializeValue(e){if(null==e)return e;const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if("object"===t&&e.__type)switch(e.__type){case"Date":return new Date(e.value);case"Map":return new Map(e.value);case"Set":return new Set(e.value)}if(Array.isArray(e))return e.map((e=>this.deserializeValue(e)));if("object"===t){const t={};for(const n in e)e.hasOwnProperty(n)&&(t[n]=this.deserializeValue(e[n]));return t}return e}static filterEntities(e,t){const n=Array.from(e.entities.buffer);if(t.components&&t.components.length>0){const e=new Set(t.components);return n.filter((t=>Array.from(t.components).some((t=>e.has(t.constructor)))))}return n}static buildComponentTypeRegistry(e){const t=new Map;for(const n of e)for(const e of n.components){const n=b(e.constructor),s=ke(e);s&&!t.has(n)&&t.set(n,s.options.version)}return Array.from(t.entries()).map((([e,t])=>({typeName:e,version:t})))}static getGlobalComponentRegistry(){return te.getAllComponentNames()}static validate(e){const t=[];try{const n=JSON.parse(e);return n.version||t.push("Missing version field"),n.entities&&Array.isArray(n.entities)||t.push("Missing or invalid entities field"),n.componentTypeRegistry&&Array.isArray(n.componentTypeRegistry)||t.push("Missing or invalid componentTypeRegistry field"),{valid:0===t.length,version:n.version,...t.length>0&&{errors:t}}}catch(e){return{valid:!1,errors:[`JSON parse error: ${e}`]}}}static getInfo(e){try{const t=JSON.parse(e);return{name:t.name,version:t.version,...void 0!==t.timestamp&&{timestamp:t.timestamp},entityCount:t.metadata?.entityCount||t.entities.length,componentTypeCount:t.componentTypeRegistry.length}}catch(e){return null}}}var Ne;Pe.SERIALIZATION_VERSION=1,exports.ChangeOperation=void 0,(Ne=exports.ChangeOperation||(exports.ChangeOperation={})).EntityAdded="entity_added",Ne.EntityRemoved="entity_removed",Ne.EntityUpdated="entity_updated",Ne.ComponentAdded="component_added",Ne.ComponentRemoved="component_removed",Ne.ComponentUpdated="component_updated",Ne.SceneDataUpdated="scene_data_updated";class Le{static createSnapshot(e,t){const n={deepComponentComparison:!0,trackSceneData:!0,...t},s={version:++this.snapshotVersion,entityIds:new Set,entities:new Map,components:new Map,sceneData:new Map};for(const t of e.entities.buffer)if(s.entityIds.add(t.id),s.entities.set(t.id,{name:t.name,tag:t.tag,active:t.active,enabled:t.enabled,updateOrder:t.updateOrder,...t.parent&&{parentId:t.parent.id}}),n.deepComponentComparison){const e=new Map;for(const n of t.components){const t=Re.serialize(n);t&&e.set(t.type,JSON.stringify(t.data))}e.size>0&&s.components.set(t.id,e)}if(n.trackSceneData)for(const[t,n]of e.sceneData)s.sceneData.set(t,JSON.stringify(n));return s}static computeIncremental(e,t,n){const s={deepComponentComparison:!0,trackSceneData:!0,...n},i={version:++this.snapshotVersion,timestamp:Date.now(),sceneName:e.name,baseVersion:t.version,entityChanges:[],componentChanges:[],sceneDataChanges:[]},r=new Set;for(const n of e.entities.buffer)if(r.add(n.id),t.entityIds.has(n.id)){const e=t.entities.get(n.id);(e.name!==n.name||e.tag!==n.tag||e.active!==n.active||e.enabled!==n.enabled||e.updateOrder!==n.updateOrder||e.parentId!==n.parent?.id)&&i.entityChanges.push({operation:exports.ChangeOperation.EntityUpdated,entityId:n.id,entityData:{name:n.name,tag:n.tag,active:n.active,enabled:n.enabled,updateOrder:n.updateOrder,...n.parent&&{parentId:n.parent.id}}}),s.deepComponentComparison&&this.detectComponentChanges(n,t,i.componentChanges)}else{i.entityChanges.push({operation:exports.ChangeOperation.EntityAdded,entityId:n.id,entityName:n.name,entityData:{id:n.id,name:n.name,tag:n.tag,active:n.active,enabled:n.enabled,updateOrder:n.updateOrder,...n.parent&&{parentId:n.parent.id},components:[],children:[]}});for(const e of n.components){const t=Re.serialize(e);t&&i.componentChanges.push({operation:exports.ChangeOperation.ComponentAdded,entityId:n.id,componentType:t.type,componentData:t})}}for(const e of t.entityIds)r.has(e)||i.entityChanges.push({operation:exports.ChangeOperation.EntityRemoved,entityId:e});return s.trackSceneData&&this.detectSceneDataChanges(e,t,i.sceneDataChanges),i}static detectComponentChanges(e,t,n){const s=t.components.get(e.id),i=new Map;for(const t of e.components){const e=Re.serialize(t);e&&i.set(e.type,e)}for(const[t,r]of i){const i=JSON.stringify(r.data);s&&s.has(t)?s.get(t)!==i&&n.push({operation:exports.ChangeOperation.ComponentUpdated,entityId:e.id,componentType:t,componentData:r}):n.push({operation:exports.ChangeOperation.ComponentAdded,entityId:e.id,componentType:t,componentData:r})}if(s)for(const t of s.keys())i.has(t)||n.push({operation:exports.ChangeOperation.ComponentRemoved,entityId:e.id,componentType:t})}static detectSceneDataChanges(e,t,n){const s=new Set;for(const[i,r]of e.sceneData){s.add(i);const e=JSON.stringify(r),o=t.sceneData.get(i);o&&o===e||n.push({operation:exports.ChangeOperation.SceneDataUpdated,key:i,value:r})}for(const e of t.sceneData.keys())s.has(e)||n.push({operation:exports.ChangeOperation.SceneDataUpdated,key:e,value:void 0,deleted:!0})}static applyIncremental(e,t,n){for(const n of t.entityChanges)switch(n.operation){case exports.ChangeOperation.EntityAdded:this.applyEntityAdded(e,n);break;case exports.ChangeOperation.EntityRemoved:this.applyEntityRemoved(e,n);break;case exports.ChangeOperation.EntityUpdated:this.applyEntityUpdated(e,n)}for(const s of t.componentChanges)switch(s.operation){case exports.ChangeOperation.ComponentAdded:this.applyComponentAdded(e,s,n);break;case exports.ChangeOperation.ComponentRemoved:this.applyComponentRemoved(e,s,n);break;case exports.ChangeOperation.ComponentUpdated:this.applyComponentUpdated(e,s,n)}for(const n of t.sceneDataChanges)n.deleted?e.sceneData.delete(n.key):e.sceneData.set(n.key,n.value)}static applyEntityAdded(e,t){if(!t.entityData)return;const n=new re(t.entityName||"Entity",t.entityId);n.tag=t.entityData.tag||0,n.active=t.entityData.active??!0,n.enabled=t.entityData.enabled??!0,n.updateOrder=t.entityData.updateOrder||0,e.addEntity(n)}static applyEntityRemoved(e,t){const n=e.entities.findEntityById(t.entityId);n&&n.destroy()}static applyEntityUpdated(e,t){if(!t.entityData)return;const n=e.entities.findEntityById(t.entityId);if(n)if(void 0!==t.entityData.name&&(n.name=t.entityData.name),void 0!==t.entityData.tag&&(n.tag=t.entityData.tag),void 0!==t.entityData.active&&(n.active=t.entityData.active),void 0!==t.entityData.enabled&&(n.enabled=t.entityData.enabled),void 0!==t.entityData.updateOrder&&(n.updateOrder=t.entityData.updateOrder),void 0!==t.entityData.parentId){const s=e.entities.findEntityById(t.entityData.parentId);s&&n.parent!==s&&(n.parent&&n.parent.removeChild(n),s.addChild(n))}else n.parent&&n.parent.removeChild(n)}static applyComponentAdded(e,t,n){if(!t.componentData)return;const s=e.entities.findEntityById(t.entityId);if(!s)return;const i=Re.deserialize(t.componentData,n);i&&s.addComponent(i)}static applyComponentRemoved(e,t,n){const s=e.entities.findEntityById(t.entityId);if(!s)return;const i=n.get(t.componentType);i&&s.removeComponentByType(i)}static applyComponentUpdated(e,t,n){if(!t.componentData)return;const s=e.entities.findEntityById(t.entityId);if(!s)return;const i=n.get(t.componentType);if(!i)return;s.removeComponentByType(i);const r=Re.deserialize(t.componentData,n);r&&s.addComponent(r)}static serializeIncremental(e,t){const n={format:"json",pretty:!1,...t};return"binary"===n.format?ze.encode(e):n.pretty?JSON.stringify(e,null,2):JSON.stringify(e)}static deserializeIncremental(e){return"string"==typeof e?JSON.parse(e):ze.decode(e)}static getIncrementalStats(e){return{totalChanges:e.entityChanges.length+e.componentChanges.length+e.sceneDataChanges.length,entityChanges:e.entityChanges.length,componentChanges:e.componentChanges.length,sceneDataChanges:e.sceneDataChanges.length,addedEntities:e.entityChanges.filter((e=>e.operation===exports.ChangeOperation.EntityAdded)).length,removedEntities:e.entityChanges.filter((e=>e.operation===exports.ChangeOperation.EntityRemoved)).length,updatedEntities:e.entityChanges.filter((e=>e.operation===exports.ChangeOperation.EntityUpdated)).length,addedComponents:e.componentChanges.filter((e=>e.operation===exports.ChangeOperation.ComponentAdded)).length,removedComponents:e.componentChanges.filter((e=>e.operation===exports.ChangeOperation.ComponentRemoved)).length,updatedComponents:e.componentChanges.filter((e=>e.operation===exports.ChangeOperation.ComponentUpdated)).length}}static resetVersion(){this.snapshotVersion=0}}Le.snapshotVersion=0;const Be=N("ServiceContainer");var $e;exports.ServiceLifetime=void 0,($e=exports.ServiceLifetime||(exports.ServiceLifetime={})).Singleton="singleton",$e.Transient="transient";class We{constructor(){this._services=new Map,this._resolving=new Set,this._updatableServices=[]}registerSingleton(e,t){this._services.has(e)?Be.warn(`Service ${e.name} is already registered`):(this._services.set(e,{type:e,...t&&{factory:t},lifetime:exports.ServiceLifetime.Singleton}),Be.debug(`Registered singleton service: ${e.name}`))}registerTransient(e,t){this._services.has(e)?Be.warn(`Service ${e.name} is already registered`):(this._services.set(e,{type:e,...t&&{factory:t},lifetime:exports.ServiceLifetime.Transient}),Be.debug(`Registered transient service: ${e.name}`))}registerInstance(e,t){if(this._services.has(e))Be.warn(`Service ${e.name} is already registered`);else{if(this._services.set(e,{type:e,instance:t,lifetime:exports.ServiceLifetime.Singleton}),m(e)){const n=g(e),s=n?.priority??0;this._updatableServices.push({instance:t,priority:s}),this._updatableServices.sort(((e,t)=>e.priority-t.priority)),Be.debug(`Service ${e.name} is updatable (priority: ${s}), added to update list`)}Be.debug(`Registered service instance: ${e.name}`)}}resolve(e){const t=this._services.get(e);if(!t)throw new Error(`Service ${e.name} is not registered`);if(this._resolving.has(e)){const t=Array.from(this._resolving).map((e=>e.name)).join(" -> ");throw new Error(`Circular dependency detected: ${t} -> ${e.name}`)}if(t.lifetime===exports.ServiceLifetime.Singleton&&t.instance)return t.instance;this._resolving.add(e);try{let n;if(n=t.factory?t.factory(this):new t.type,t.lifetime===exports.ServiceLifetime.Singleton&&(t.instance=n,m(t.type))){const s=g(t.type),i=s?.priority??0;this._updatableServices.push({instance:n,priority:i}),this._updatableServices.sort(((e,t)=>e.priority-t.priority)),Be.debug(`Service ${e.name} is updatable (priority: ${i}), added to update list`)}return n}finally{this._resolving.delete(e)}}tryResolve(e){try{return this.resolve(e)}catch{return null}}isRegistered(e){return this._services.has(e)}unregister(e){const t=this._services.get(e);if(!t)return!1;if(t.instance){const e=this._updatableServices.findIndex((e=>e.instance===t.instance));-1!==e&&this._updatableServices.splice(e,1),t.instance.dispose()}return this._services.delete(e),Be.debug(`Unregistered service: ${e.name}`),!0}clear(){for(const[,e]of this._services)e.instance&&e.instance.dispose();this._services.clear(),this._updatableServices=[],Be.debug("Cleared all services")}getRegisteredServices(){return Array.from(this._services.keys())}updateAll(e){for(const{instance:t}of this._updatableServices)t.update(e)}getUpdatableCount(){return this._updatableServices.length}getAll(){const e=[];for(const t of this._services.values())t.instance&&e.push(t.instance);return e}}class Fe{get systems(){return!this._systemsOrderDirty&&this._cachedSystems||(this._cachedSystems=this._rebuildSystemsCache(),this._systemsOrderDirty=!1),this._cachedSystems}_rebuildSystemsCache(){const e=this._services.getAll(),t=this._filterEntitySystems(e);return this._sortSystemsByUpdateOrder(t)}_filterEntitySystems(e){return e.filter((e=>e instanceof ue))}_sortSystemsByUpdateOrder(e){return e.sort(((e,t)=>e.updateOrder-t.updateOrder))}getSystem(e){return this._services.tryResolve(e)}markSystemsOrderDirty(){this._systemsOrderDirty=!0}get services(){return this._services}constructor(e){this.name="",this.sceneData=new Map,this._performanceMonitor=null,this._didSceneBegin=!1,this._cachedSystems=null,this._systemsOrderDirty=!0,this._systemErrorCount=new Map,this._maxErrorCount=10,this.entities=new ae(this),this.identifierPool=new ce,this.componentStorageManager=new se,this.querySystem=new Ee,this.eventSystem=new Te,this.referenceTracker=new D,this._services=new We,this.logger=N("Scene"),e?.name&&(this.name=e.name)}get performanceMonitor(){return this._performanceMonitor||(this._performanceMonitor=this._services.tryResolve(f)??new f),this._performanceMonitor}initialize(){}onStart(){}unload(){}begin(){this._didSceneBegin=!0,this.onStart()}end(){this._didSceneBegin=!1,this.entities.removeAllEntities(),this.querySystem.setEntities([]),this.componentStorageManager.clear(),this._services.clear(),this._cachedSystems=null,this._systemsOrderDirty=!0,this.unload()}update(){j.getInstance().update(),this.entities.updateLists();const e=this.systems;for(const t of e)if(t.enabled)try{t.update()}catch(e){this._handleSystemError(t,"update",e)}for(const t of e)if(t.enabled)try{t.lateUpdate()}catch(e){this._handleSystemError(t,"lateUpdate",e)}}_handleSystemError(e,t,n){const s=(this._systemErrorCount.get(e)||0)+1;this._systemErrorCount.set(e,s),this.logger.error(`Error in system ${e.constructor.name}.${t}() [${s}/${this._maxErrorCount}]:`,n),s>=this._maxErrorCount&&(e.enabled=!1,this.logger.error(`System ${e.constructor.name} has been disabled due to excessive errors (${s} errors)`))}createEntity(e){const t=new re(e,this.identifierPool.checkOut());return this.eventSystem.emitSync("entity:created",{entityName:e,entity:t,scene:this}),this.addEntity(t)}clearSystemEntityCaches(){for(const e of this.systems)e.clearEntityCache()}addEntity(e,t=!1){return this.entities.add(e),e.scene=this,this.querySystem.addEntity(e,t),t||this.clearSystemEntityCaches(),this.eventSystem.emitSync("entity:added",{entity:e,scene:this}),e}createEntities(e,t="Entity"){const n=[];for(let s=0;s<e;s++){const e=new re(`${t}_${s}`,this.identifierPool.checkOut());e.scene=this,n.push(e)}for(const e of n)this.entities.add(e);return this.querySystem.addEntitiesUnchecked(n),this.eventSystem.emitSync("entities:batch_added",{entities:n,scene:this,count:e}),n}destroyEntities(e){if(0!==e.length){for(const t of e)t.setDestroyedState(!0);for(const t of e)t.removeAllComponents();for(const t of e)this.entities.remove(t),this.querySystem.removeEntity(t);this.querySystem.clearCache(),this.clearSystemEntityCaches()}}destroyAllEntities(){this.entities.removeAllEntities(),this.querySystem.setEntities([])}findEntity(e){return this.entities.findEntity(e)}findEntityById(e){return this.entities.findEntityById(e)}findEntitiesByTag(e){const t=[];for(const n of this.entities.buffer)n.tag===e&&t.push(n);return t}getEntityByName(e){return this.findEntity(e)}getEntitiesByTag(e){return this.findEntitiesByTag(e)}queryAll(...e){return this.querySystem.queryAll(...e)}queryAny(...e){return this.querySystem.queryAny(...e)}queryNone(...e){return this.querySystem.queryNone(...e)}query(){return new Ae}addEntityProcessor(e){let t,n;if("function"==typeof e){if(n=e,this._services.isRegistered(n)){const e=this._services.resolve(n);return this.logger.debug(`System ${n.name} already registered, returning existing instance`),e}t=u(n)?d(n,this._services):new n}else if(t=e,n=t.constructor,this._services.isRegistered(n)){const e=this._services.resolve(n);return e===t?(this.logger.debug(`System ${n.name} instance already registered, returning it`),t):(this.logger.warn(`Attempting to register a different instance of ${n.name}, but type is already registered. Returning existing instance.`),e)}t.scene=this,t.setPerformanceMonitor(this.performanceMonitor);const s=E(n);return void 0!==s?.updateOrder&&t.setUpdateOrder(s.updateOrder),void 0!==s?.enabled&&(t.enabled=s.enabled),this._services.registerInstance(n,t),this.markSystemsOrderDirty(),p(t,this._services),t.initialize(),this.logger.debug(`System ${n.name} registered and initialized`),t}registerSystems(e){const t=[];for(const n of e){const e=this.addEntityProcessor(n);t.push(e)}return t}addSystem(e){return this.addEntityProcessor(e)}removeEntityProcessor(e){const t=e.constructor;this._services.unregister(t),this.markSystemsOrderDirty(),e.reset()}removeSystem(e){this.removeEntityProcessor(e)}getEntityProcessor(e){return this._services.tryResolve(e)}getStats(){return{entityCount:this.entities.count,processorCount:this.systems.length,componentStorageStats:this.componentStorageManager.getAllStats()}}getDebugInfo(){const e=this.systems;return{name:this.name||this.constructor.name,entityCount:this.entities.count,processorCount:e.length,isRunning:this._didSceneBegin,entities:this.entities.buffer.map((e=>({name:e.name,id:e.id,componentCount:e.components.length,componentTypes:e.components.map((e=>w(e)))}))),processors:e.map((e=>({name:A(e),updateOrder:e.updateOrder,entityCount:e.entities.length}))),componentStats:this.componentStorageManager.getAllStats()}}serialize(e){return Pe.serialize(this,e)}deserialize(e,t){Pe.deserialize(this,e,t)}createIncrementalSnapshot(e){this._incrementalBaseSnapshot=Le.createSnapshot(this,e)}serializeIncremental(e){if(!this._incrementalBaseSnapshot)throw new Error("必须先调用 createIncrementalSnapshot() 创建基础快照");return Le.computeIncremental(this,this._incrementalBaseSnapshot,e)}applyIncremental(e,t){const n="string"==typeof e||e instanceof Uint8Array?Le.deserializeIncremental(e):e,s=t||te.getAllComponentNames();Le.applyIncremental(this,n,s)}updateIncrementalSnapshot(e){this.createIncrementalSnapshot(e)}clearIncrementalSnapshot(){this._incrementalBaseSnapshot=void 0}hasIncrementalSnapshot(){return void 0!==this._incrementalBaseSnapshot}}class He{constructor(){this.scene=new Fe}named(e){return this.scene.name=e,this}withEntity(e){return this.scene.addEntity(e),this}withEntityBuilder(e){const t=e(new oe(this.scene,this.scene.componentStorageManager)).build();return this.scene.addEntity(t),this}withEntities(...e){for(const t of e)this.scene.addEntity(t);return this}withSystem(e){return this.scene.addSystem(e),this}withSystems(...e){for(const t of e)this.scene.addSystem(t);return this}build(){return this.scene}}class Ue{constructor(e,...t){this.component=new e(...t)}set(e,t){return this.component[e]=t,this}configure(e){return e(this.component),this}setIf(e,t,n){return e&&(this.component[t]=n),this}build(){return this.component}}class qe{constructor(e){this.entities=e}addComponent(e){for(const t of this.entities)t.addComponent(e);return this}removeComponent(e){for(const t of this.entities)t.removeComponentByType(e);return this}setActive(e){for(const t of this.entities)t.active=e;return this}setTag(e){for(const t of this.entities)t.tag=e;return this}forEach(e){return this.entities.forEach(e),this}filter(e){return new qe(this.entities.filter(e))}toArray(){return this.entities.slice()}count(){return this.entities.length}}class Ge{constructor(e,t,n){this.scene=e,this.querySystem=t,this.eventSystem=n}createEntity(){return new oe(this.scene,this.scene.componentStorageManager)}createScene(){return new He}createComponent(e,...t){return new Ue(e,...t)}query(){return new be(this.querySystem)}find(...e){return this.querySystem.queryAll(...e).entities}findFirst(...e){const t=this.querySystem.queryAll(...e);return t.entities.length>0?t.entities[0]:null}findByName(e){return this.scene.findEntity(e)}findByTag(e){return this.scene.findEntitiesByTag(e)}emit(e,t){this.eventSystem.emitSync(e,t)}async emitAsync(e,t){await this.eventSystem.emit(e,t)}on(e,t){return this.eventSystem.on(e,t)}once(e,t){return this.eventSystem.once(e,t)}off(e,t){this.eventSystem.off(e,t)}batch(e){return new qe(e)}getStats(){return{entityCount:this.scene.entities.count,systemCount:this.scene.systems.length,componentStats:this.scene.componentStorageManager.getAllStats(),queryStats:this.querySystem.getStats(),eventStats:this.eventSystem.getStats()}}}function je(e,t,n){return new Ge(e,t,n)}const Qe=N("World");class Ve{constructor(e={}){this._scenes=new Map,this._activeScenes=new Set,this._globalSystems=[],this._isActive=!1,this._config={name:"World",debug:!1,maxScenes:10,autoCleanup:!0,...e},this.name=this._config.name,this._createdAt=Date.now()}createScene(e,t){if(this._scenes.has(e))throw new Error(`Scene ID '${e}' 已存在于World '${this.name}' 中`);if(this._scenes.size>=this._config.maxScenes)throw new Error(`World '${this.name}' 已达到最大Scene数量限制: ${this._config.maxScenes}`);const n=t||new Fe;return"id"in n&&(n.id=e),"name"in n&&!n.name&&(n.name=e),this._scenes.set(e,n),n.initialize(),n}removeScene(e){const t=this._scenes.get(e);return!!t&&(this._activeScenes.has(e)&&this.setSceneActive(e,!1),t.end(),this._scenes.delete(e),Qe.info(`从World '${this.name}' 中移除Scene: ${e}`),!0)}getScene(e){return this._scenes.get(e)||null}getSceneIds(){return Array.from(this._scenes.keys())}getAllScenes(){return Array.from(this._scenes.values())}removeAllScenes(){const e=Array.from(this._scenes.keys());for(const t of e)this.removeScene(t);Qe.info(`从World '${this.name}' 中移除所有Scene`)}setSceneActive(e,t){const n=this._scenes.get(e);n?t?(this._activeScenes.add(e),n.begin&&n.begin(),Qe.debug(`在World '${this.name}' 中激活Scene: ${e}`)):(this._activeScenes.delete(e),Qe.debug(`在World '${this.name}' 中停用Scene: ${e}`)):Qe.warn(`Scene '${e}' 不存在于World '${this.name}' 中`)}isSceneActive(e){return this._activeScenes.has(e)}getActiveSceneCount(){return this._activeScenes.size}addGlobalSystem(e){return this._globalSystems.includes(e)||(this._globalSystems.push(e),e.initialize&&e.initialize(),Qe.debug(`在World '${this.name}' 中添加全局System: ${e.name}`)),e}removeGlobalSystem(e){const t=this._globalSystems.indexOf(e);return-1!==t&&(this._globalSystems.splice(t,1),e.reset&&e.reset(),Qe.debug(`从World '${this.name}' 中移除全局System: ${e.name}`),!0)}getGlobalSystem(e){for(const t of this._globalSystems)if(t instanceof e)return t;return null}start(){if(!this._isActive){this._isActive=!0;for(const e of this._globalSystems)e.initialize&&e.initialize();Qe.info(`启动World: ${this.name}`)}}stop(){if(this._isActive){for(const e of this._activeScenes)this.setSceneActive(e,!1);for(const e of this._globalSystems)e.reset&&e.reset();this._isActive=!1,Qe.info(`停止World: ${this.name}`)}}updateGlobalSystems(){if(this._isActive)for(const e of this._globalSystems)e.update&&e.update()}updateScenes(){if(this._isActive){for(const e of this._activeScenes){const t=this._scenes.get(e);t&&t.update&&t.update()}this._config.autoCleanup&&this.shouldAutoCleanup()&&this.cleanup()}}destroy(){Qe.info(`销毁World: ${this.name}`),this.stop();const e=Array.from(this._scenes.keys());for(const t of e)this.removeScene(t);for(const e of this._globalSystems)e.destroy?e.destroy():e.reset&&e.reset();this._globalSystems.length=0,this._scenes.clear(),this._activeScenes.clear()}getStatus(){return{name:this.name,isActive:this._isActive,sceneCount:this._scenes.size,activeSceneCount:this._activeScenes.size,globalSystemCount:this._globalSystems.length,createdAt:this._createdAt,config:{...this._config},scenes:Array.from(this._scenes.keys()).map((e=>({id:e,isActive:this._activeScenes.has(e),name:this._scenes.get(e)?.name||e})))}}getStats(){const e={totalEntities:0,totalSystems:this._globalSystems.length,memoryUsage:0,performance:{averageUpdateTime:0,maxUpdateTime:0}};for(const t of this._scenes.values())t.entities&&(e.totalEntities+=t.entities.count),t.systems&&(e.totalSystems+=t.systems.length);return e}shouldAutoCleanup(){const e=Date.now();for(const[t,n]of this._scenes)if(!this._activeScenes.has(t)&&n.entities&&0===n.entities.count&&e-this._createdAt>3e5)return!0;return!1}cleanup(){const e=Array.from(this._scenes.keys()),t=Date.now();for(const n of e){const e=this._scenes.get(n);e&&!this._activeScenes.has(n)&&e.entities&&0===e.entities.count&&t-this._createdAt>3e5&&(this.removeScene(n),Qe.debug(`自动清理空Scene: ${n} from World ${this.name}`))}}get isActive(){return this._isActive}get sceneCount(){return this._scenes.size}get createdAt(){return this._createdAt}}class Ye{constructor(e){this._nextScene=null,this._ecsAPI=null,this._logger=N("SceneManager"),this._performanceMonitor=null,this._defaultWorld=new Ve({name:"__default__"}),this._defaultWorld.start(),this._performanceMonitor=e||null}setSceneChangedCallback(e){this._onSceneChangedCallback=e}setScene(e){return this._defaultWorld.removeAllScenes(),this._performanceMonitor&&e.services.registerInstance(f,this._performanceMonitor),this._defaultWorld.createScene(Ye.DEFAULT_SCENE_ID,e),this._defaultWorld.setSceneActive(Ye.DEFAULT_SCENE_ID,!0),e.querySystem&&e.eventSystem?this._ecsAPI=je(e,e.querySystem,e.eventSystem):this._ecsAPI=null,s.sceneChanged(),this._onSceneChangedCallback&&this._onSceneChangedCallback(),this._logger.info(`Scene changed to: ${e.name}`),e}loadScene(e){this._nextScene=e,this._logger.info(`Scheduled scene load: ${e.name}`)}get currentScene(){return this._defaultWorld.getScene(Ye.DEFAULT_SCENE_ID)}get api(){return this._ecsAPI}update(){this._nextScene&&(this.setScene(this._nextScene),this._nextScene=null),this._defaultWorld.updateGlobalSystems(),this._defaultWorld.updateScenes()}destroy(){this._logger.info("SceneManager destroying"),this._defaultWorld.destroy(),this._nextScene=null,this._ecsAPI=null,this._logger.info("SceneManager destroyed")}get hasScene(){return null!==this._defaultWorld.getScene(Ye.DEFAULT_SCENE_ID)}get hasPendingScene(){return null!==this._nextScene}dispose(){this.destroy()}}var Je;Ye.DEFAULT_SCENE_ID="__main__",exports.DebugConfigService=class{constructor(){this._config={enabled:!1,websocketUrl:"",debugFrameRate:30,autoReconnect:!0,channels:{entities:!0,systems:!0,performance:!0,components:!0,scenes:!0}}}setConfig(e){this._config=e}getConfig(){return this._config}isEnabled(){return this._config.enabled}dispose(){}},exports.DebugConfigService=e([c(),n("design:paramtypes",[])],exports.DebugConfigService),exports.DebugManager=class{constructor(e,t,n){this.frameCounter=0,this.lastSendTime=0,this.isRunning=!1,this.originalConsole={log:console.log.bind(console),debug:console.debug.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)},this.config=n.getConfig(),this.sceneManager=e,this.performanceMonitor=t,this.entityCollector=new H,this.systemCollector=new U,this.performanceCollector=new q,this.componentCollector=new Q,this.sceneCollector=new V,this.webSocketManager=new Y(this.config.websocketUrl,!1!==this.config.autoReconnect),this.webSocketManager.setMessageHandler(this.handleMessage.bind(this));const s=this.config.debugFrameRate||30;this.sendInterval=1e3/s,this.interceptConsole(),this.start()}start(){this.isRunning||(this.isRunning=!0,this.connectWebSocket())}stop(){this.isRunning&&(this.isRunning=!1,this.webSocketManager.disconnect())}interceptConsole(){console.log=(...e)=>{this.sendLog("info",this.formatLogMessage(e)),this.originalConsole.log(...e)},console.debug=(...e)=>{this.sendLog("debug",this.formatLogMessage(e)),this.originalConsole.debug(...e)},console.info=(...e)=>{this.sendLog("info",this.formatLogMessage(e)),this.originalConsole.info(...e)},console.warn=(...e)=>{this.sendLog("warn",this.formatLogMessage(e)),this.originalConsole.warn(...e)},console.error=(...e)=>{this.sendLog("error",this.formatLogMessage(e)),this.originalConsole.error(...e)}}formatLogMessage(e){return e.map((e=>{if("string"==typeof e)return e;if(e instanceof Error)return`${e.name}: ${e.message}`;if(null===e)return"null";if(void 0===e)return"undefined";if("object"==typeof e)try{return this.safeStringify(e,6)}catch{return Object.prototype.toString.call(e)}return String(e)})).join(" ")}safeStringify(e,t=6){const n=new WeakSet,s=(e,i)=>{if(null===e)return null;if(void 0===e)return;if("object"!=typeof e)return e;if(i>=t)return"[Max Depth Reached]";if(n.has(e))return"[Circular]";if(n.add(e),Array.isArray(e)){const t=e.map((e=>s(e,i+1)));return n.delete(e),t}const r={};for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=s(e[t],i+1));return n.delete(e),r};return JSON.stringify(s(e,0))}sendLog(e,t){if(this.webSocketManager.getConnectionStatus())try{this.webSocketManager.send({type:"log",data:{level:e,message:t,timestamp:(new Date).toISOString()}})}catch(e){}}updateConfig(e){this.config=e;const t=e.debugFrameRate||30;this.sendInterval=1e3/t,this.webSocketManager&&e.websocketUrl&&(this.webSocketManager.disconnect(),this.webSocketManager=new Y(e.websocketUrl,!1!==e.autoReconnect),this.webSocketManager.setMessageHandler(this.handleMessage.bind(this)),this.connectWebSocket())}update(e){if(!this.isRunning||!this.config.enabled)return;this.frameCounter++;const t=Date.now();t-this.lastSendTime>=this.sendInterval&&(this.sendDebugData(),this.lastSendTime=t)}onSceneChanged(){this.isRunning&&this.config.enabled&&this.sendDebugData()}handleMessage(e){try{switch(e.type){case"capture_memory_snapshot":this.handleMemorySnapshotRequest();break;case"config_update":e.config&&this.updateConfig({...this.config,...e.config});break;case"expand_lazy_object":this.handleExpandLazyObjectRequest(e);break;case"get_component_properties":this.handleGetComponentPropertiesRequest(e);break;case"get_raw_entity_list":this.handleGetRawEntityListRequest(e);break;case"get_entity_details":this.handleGetEntityDetailsRequest(e);break;case"ping":this.webSocketManager.send({type:"pong",timestamp:Date.now()})}}catch(t){e.requestId&&this.webSocketManager.send({type:"error_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}}handleExpandLazyObjectRequest(e){try{const{entityId:t,componentIndex:n,propertyPath:s,requestId:i}=e;if(void 0===t||void 0===n||!s)return void this.webSocketManager.send({type:"expand_lazy_object_response",requestId:i,error:"缺少必要参数"});const r=this.sceneManager.currentScene,o=this.entityCollector.expandLazyObject(t,n,s,r);this.webSocketManager.send({type:"expand_lazy_object_response",requestId:i,data:o})}catch(t){this.webSocketManager.send({type:"expand_lazy_object_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}}handleGetComponentPropertiesRequest(e){try{const{entityId:t,componentIndex:n,requestId:s}=e;if(void 0===t||void 0===n)return void this.webSocketManager.send({type:"get_component_properties_response",requestId:s,error:"缺少必要参数"});const i=this.sceneManager.currentScene,r=this.entityCollector.getComponentProperties(t,n,i);this.webSocketManager.send({type:"get_component_properties_response",requestId:s,data:r})}catch(t){this.webSocketManager.send({type:"get_component_properties_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}}handleGetRawEntityListRequest(e){try{const{requestId:t}=e,n=this.sceneManager.currentScene,s=this.entityCollector.getRawEntityList(n);this.webSocketManager.send({type:"get_raw_entity_list_response",requestId:t,data:s})}catch(t){this.webSocketManager.send({type:"get_raw_entity_list_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}}handleGetEntityDetailsRequest(e){try{const{entityId:t,requestId:n}=e;if(void 0===t)return void this.webSocketManager.send({type:"get_entity_details_response",requestId:n,error:"缺少实体ID参数"});const s=this.sceneManager.currentScene,i=this.entityCollector.getEntityDetails(t,s);this.webSocketManager.send({type:"get_entity_details_response",requestId:n,data:i})}catch(t){this.webSocketManager.send({type:"get_entity_details_response",requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}}handleMemorySnapshotRequest(){try{const e=this.captureMemorySnapshot();this.webSocketManager.send({type:"memory_snapshot_response",data:e})}catch(e){this.webSocketManager.send({type:"memory_snapshot_error",error:e instanceof Error?e.message:"内存快照捕获失败"})}}captureMemorySnapshot(){const e=Date.now(),t=this.collectBaseMemoryInfo(),n=this.sceneManager.currentScene,s=this.entityCollector.collectEntityDataWithMemory(n),i=n?.entities?this.collectComponentMemoryStats(n.entities):{totalMemory:0,componentTypes:0,totalInstances:0,breakdown:[]},r=this.collectSystemMemoryStats(),o=this.collectPoolMemoryStats(),a=this.collectPerformanceStats(),c=s.entitiesPerArchetype.reduce(((e,t)=>e+t.memory),0);return{timestamp:e,version:"2.0",summary:{totalEntities:s.totalEntities,totalMemoryUsage:t.usedMemory,totalMemoryLimit:t.totalMemory,memoryUtilization:t.usedMemory/t.totalMemory*100,gcCollections:t.gcCollections,entityMemory:c,componentMemory:i.totalMemory,systemMemory:r.totalMemory,poolMemory:o.totalMemory},baseMemory:t,entities:{totalMemory:c,entityCount:s.totalEntities,archetypes:s.entitiesPerArchetype,largestEntities:s.topEntitiesByComponents},components:i,systems:r,pools:o,performance:a}}collectBaseMemoryInfo(){const e={totalMemory:0,usedMemory:0,freeMemory:0,gcCollections:0,heapInfo:null,detailedMemory:void 0};try{const t=performance;if(t.memory){const n=t.memory;e.totalMemory=n.jsHeapSizeLimit||536870912,e.usedMemory=n.usedJSHeapSize||0,e.freeMemory=e.totalMemory-e.usedMemory,e.heapInfo={totalJSHeapSize:n.totalJSHeapSize||0,usedJSHeapSize:n.usedJSHeapSize||0,jsHeapSizeLimit:n.jsHeapSizeLimit||0}}else e.totalMemory=536870912,e.freeMemory=536870912;t.measureUserAgentSpecificMemory&&t.measureUserAgentSpecificMemory().then((t=>{e.detailedMemory=t})).catch((()=>{}))}catch(e){}return e}collectComponentMemoryStats(e){const t=new Map;let n=0;const s=new Map;for(const t of e.buffer)if(t&&!t.destroyed&&t.components)for(const e of t.components){const t=w(e);s.set(t,(s.get(t)||0)+1)}for(const[i,r]of s.entries()){const s=this.componentCollector.calculateDetailedComponentMemory(i),o=s*r;n+=o;const a=[];let c=0;for(const t of e.buffer)if(t&&!t.destroyed&&t.components){for(const e of t.components)if(w(e)===i&&(a.push({entityId:t.id,entityName:t.name||`Entity_${t.id}`,memory:s}),c++,c>=100))break;if(c>=100)break}t.set(i,{count:r,totalMemory:o,instances:a.slice(0,10)})}const i=Array.from(t.entries()).map((([e,t])=>({typeName:e,instanceCount:t.count,totalMemory:t.totalMemory,averageMemory:t.totalMemory/t.count,percentage:n>0?t.totalMemory/n*100:0,largestInstances:t.instances.sort(((e,t)=>t.memory-e.memory)).slice(0,3)}))).sort(((e,t)=>t.totalMemory-e.totalMemory));return{totalMemory:n,componentTypes:t.size,totalInstances:Array.from(t.values()).reduce(((e,t)=>e+t.count),0),breakdown:i}}collectSystemMemoryStats(){const e=this.sceneManager.currentScene;let t=0;const n=[];try{const s=e?.systems;if(s){const e=new Map;for(const i of s){const s=A(i);let r;e.has(s)?r=e.get(s):(r=this.calculateQuickSystemSize(i),e.set(s,r)),t+=r,n.push({name:s,memory:r,enabled:!1!==i.enabled,updateOrder:i.updateOrder||0})}}}catch(e){}return{totalMemory:t,systemCount:n.length,breakdown:n.sort(((e,t)=>t.memory-e.memory))}}calculateQuickSystemSize(e){if(!e||"object"!=typeof e)return 64;let t=128;try{const n=Object.keys(e);for(let s=0;s<Math.min(n.length,15);s++){const i=n[s];if(!i||"entities"===i||"scene"===i||"constructor"===i)continue;const r=e[i];t+=2*i.length,"string"==typeof r?t+=Math.min(2*r.length,100):"number"==typeof r?t+=8:"boolean"==typeof r?t+=4:Array.isArray(r)?t+=40+Math.min(8*r.length,200):"object"==typeof r&&null!==r&&(t+=64)}}catch(e){return 128}return Math.max(t,64)}collectPoolMemoryStats(){let e=0;const t=[];try{const n=j.getInstance().getPoolStats();for(const[s,i]of n.entries()){const n=i,r=32*n.maxSize;e+=r,t.push({typeName:s,maxSize:n.maxSize,currentSize:n.currentSize||0,estimatedMemory:r,utilization:n.currentSize?n.currentSize/n.maxSize*100:0})}}catch(e){}try{const n=_.getAllPoolStats();for(const[s,i]of Object.entries(n)){const n=i;e+=n.estimatedMemoryUsage,t.push({typeName:`Pool_${s}`,maxSize:n.maxSize,currentSize:n.size,estimatedMemory:n.estimatedMemoryUsage,utilization:n.size/n.maxSize*100,hitRate:100*n.hitRate})}}catch(e){}return{totalMemory:e,poolCount:t.length,breakdown:t.sort(((e,t)=>t.estimatedMemory-e.estimatedMemory))}}collectPerformanceStats(){try{if(!this.performanceMonitor)return{enabled:!1};const e=this.performanceMonitor.getAllSystemStats(),t=this.performanceMonitor.getPerformanceWarnings();return{enabled:this.performanceMonitor.enabled??!1,systemCount:e.size,warnings:t.slice(0,10),topSystems:Array.from(e.entries()).map((e=>{const[t,n]=e;return{name:t,averageTime:n.averageTime,maxTime:n.maxTime,samples:n.executionCount}})).sort(((e,t)=>t.averageTime-e.averageTime)).slice(0,5)}}catch(e){return{enabled:!1,error:e instanceof Error?e.message:String(e)}}}getDebugData(){const e=Date.now(),t=this.sceneManager.currentScene,n={timestamp:e,frameworkVersion:"1.0.0",isRunning:this.isRunning,frameworkLoaded:!0,currentScene:t?.name||"Unknown"};return this.config.channels.entities&&(n.entities=this.entityCollector.collectEntityData(t)),this.config.channels.systems&&(n.systems=this.systemCollector.collectSystemData(this.performanceMonitor,t)),this.config.channels.performance&&(n.performance=this.performanceCollector.collectPerformanceData(this.performanceMonitor)),this.config.channels.components&&(n.components=this.componentCollector.collectComponentData(t)),this.config.channels.scenes&&(n.scenes=this.sceneCollector.collectSceneData(t)),n}async connectWebSocket(){try{await this.webSocketManager.connect()}catch(e){}}sendDebugData(){if(this.webSocketManager.getConnectionStatus())try{const e={type:"debug_data",data:this.getDebugData()};this.webSocketManager.send(e)}catch(e){}}dispose(){this.stop(),console.log=this.originalConsole.log,console.debug=this.originalConsole.debug,console.info=this.originalConsole.info,console.warn=this.originalConsole.warn,console.error=this.originalConsole.error}},exports.DebugManager=e([c(),h(),t(0,l(Ye)),t(1,l(f)),t(2,l(exports.DebugConfigService)),n("design:paramtypes",[Ye,f,exports.DebugConfigService])],exports.DebugManager),exports.PluginState=void 0,(Je=exports.PluginState||(exports.PluginState={})).NotInstalled="not_installed",Je.Installed="installed",Je.Failed="failed";const Ze=N("PluginManager");class Xe{constructor(){this._plugins=new Map,this._metadata=new Map,this._core=null,this._services=null}initialize(e,t){this._core=e,this._services=t,Ze.info("PluginManager initialized")}async install(e){if(!this._core||!this._services)throw new Error("PluginManager not initialized. Call initialize() first.");if(this._plugins.has(e.name))return void Ze.warn(`Plugin ${e.name} is already installed`);e.dependencies&&e.dependencies.length>0&&this._checkDependencies(e);const t={name:e.name,version:e.version,state:exports.PluginState.NotInstalled,installedAt:Date.now()};this._metadata.set(e.name,t);try{Ze.info(`Installing plugin: ${e.name} v${e.version}`),await e.install(this._core,this._services),this._plugins.set(e.name,e),t.state=exports.PluginState.Installed,Ze.info(`Plugin ${e.name} installed successfully`)}catch(n){throw t.state=exports.PluginState.Failed,t.error=n instanceof Error?n.message:String(n),Ze.error(`Failed to install plugin ${e.name}:`,n),n}}async uninstall(e){const t=this._plugins.get(e);if(!t)throw new Error(`Plugin ${e} is not installed`);this._checkDependents(e);try{Ze.info(`Uninstalling plugin: ${e}`),await t.uninstall(),this._plugins.delete(e),this._metadata.delete(e),Ze.info(`Plugin ${e} uninstalled successfully`)}catch(t){throw Ze.error(`Failed to uninstall plugin ${e}:`,t),t}}getPlugin(e){return this._plugins.get(e)}getMetadata(e){return this._metadata.get(e)}getAllPlugins(){return Array.from(this._plugins.values())}getAllMetadata(){return Array.from(this._metadata.values())}isInstalled(e){return this._plugins.has(e)}_checkDependencies(e){if(!e.dependencies)return;const t=[];for(const n of e.dependencies)this._plugins.has(n)||t.push(n);if(t.length>0)throw new Error(`Plugin ${e.name} has unmet dependencies: ${t.join(", ")}`)}_checkDependents(e){const t=[];for(const n of this._plugins.values())n.dependencies&&n.dependencies.includes(e)&&t.push(n.name);if(t.length>0)throw new Error(`Cannot uninstall plugin ${e}: it is required by ${t.join(", ")}`)}dispose(){const e=Array.from(this._plugins.values()).reverse();for(const t of e)try{Ze.info(`Disposing plugin: ${t.name}`),t.uninstall()}catch(e){Ze.error(`Error disposing plugin ${t.name}:`,e)}this._plugins.clear(),this._metadata.clear(),this._core=null,this._services=null,Ze.info("PluginManager disposed")}}const Ke=N("WorldManager");class et{constructor(e={}){this._worlds=new Map,this._activeWorlds=new Set,this._cleanupTimer=null,this._isRunning=!1,this._config={maxWorlds:50,autoCleanup:!0,cleanupInterval:3e4,debug:!1,...e},this._isRunning=!0,Ke.info("WorldManager已初始化",{maxWorlds:this._config.maxWorlds,autoCleanup:this._config.autoCleanup,cleanupInterval:this._config.cleanupInterval}),this.startCleanupTimer()}createWorld(e,t){if(!e||"string"!=typeof e||""===e.trim())throw new Error("World ID不能为空");if(this._worlds.has(e))throw new Error(`World ID '${e}' 已存在`);if(this._worlds.size>=this._config.maxWorlds)throw new Error(`已达到最大World数量限制: ${this._config.maxWorlds}`);const n={name:e,...void 0!==this._config.debug&&{debug:this._config.debug},...void 0!==t?.maxScenes&&{maxScenes:t.maxScenes},...void 0!==t?.autoCleanup&&{autoCleanup:t.autoCleanup}},s=new Ve(n);return this._worlds.set(e,s),s}removeWorld(e){const t=this._worlds.get(e);return!!t&&(this._activeWorlds.has(e)&&this.setWorldActive(e,!1),t.destroy(),this._worlds.delete(e),Ke.info(`移除World: ${e}`),!0)}getWorld(e){return this._worlds.get(e)||null}getWorldIds(){return Array.from(this._worlds.keys())}getAllWorlds(){return Array.from(this._worlds.values())}setWorldActive(e,t){const n=this._worlds.get(e);n?t?(this._activeWorlds.add(e),n.start(),Ke.debug(`激活World: ${e}`)):(this._activeWorlds.delete(e),n.stop(),Ke.debug(`停用World: ${e}`)):Ke.warn(`World '${e}' 不存在`)}isWorldActive(e){return this._activeWorlds.has(e)}updateAll(){if(this._isRunning)for(const e of this._activeWorlds){const t=this._worlds.get(e);t&&t.isActive&&(t.updateGlobalSystems(),t.updateScenes())}}getActiveWorlds(){const e=[];for(const t of this._activeWorlds){const n=this._worlds.get(t);n&&e.push(n)}return e}startAll(){this._isRunning=!0;for(const e of this._worlds.keys())this.setWorldActive(e,!0);Ke.info("启动所有World")}stopAll(){this._isRunning=!1;for(const e of this._activeWorlds)this.setWorldActive(e,!1);Ke.info("停止所有World")}findWorlds(e){const t=[];for(const n of this._worlds.values())e(n)&&t.push(n);return t}findWorldByName(e){for(const t of this._worlds.values())if(t.name===e)return t;return null}getStats(){const e={totalWorlds:this._worlds.size,activeWorlds:this._activeWorlds.size,totalScenes:0,totalEntities:0,totalSystems:0,memoryUsage:0,isRunning:this._isRunning,config:{...this._config},worlds:[]};for(const[t,n]of this._worlds){const s=n.getStats();e.totalScenes+=s.totalSystems,e.totalEntities+=s.totalEntities,e.totalSystems+=s.totalSystems,e.worlds.push({id:t,name:n.name,isActive:this._activeWorlds.has(t),sceneCount:n.sceneCount,...s})}return e}getDetailedStatus(){return{...this.getStats(),worlds:Array.from(this._worlds.entries()).map((([e,t])=>({id:e,isActive:this._activeWorlds.has(e),status:t.getStatus()})))}}cleanup(){const e=[];for(const[t,n]of this._worlds)this.shouldCleanupWorld(n)&&e.push(t);for(const t of e)this.removeWorld(t);return e.length>0&&Ke.debug(`清理了 ${e.length} 个World`),e.length}destroy(){Ke.info("正在销毁WorldManager..."),this.stopCleanupTimer(),this.stopAll();const e=Array.from(this._worlds.keys());for(const t of e)this.removeWorld(t);this._worlds.clear(),this._activeWorlds.clear(),this._isRunning=!1,Ke.info("WorldManager已销毁")}dispose(){this.destroy()}startCleanupTimer(){this._config.autoCleanup&&!this._cleanupTimer&&(this._cleanupTimer=setInterval((()=>{this.cleanup()}),this._config.cleanupInterval),Ke.debug(`启动World清理定时器,间隔: ${this._config.cleanupInterval}ms`))}stopCleanupTimer(){this._cleanupTimer&&(clearInterval(this._cleanupTimer),this._cleanupTimer=null,Ke.debug("停止World清理定时器"))}shouldCleanupWorld(e){if(e.isActive)return!1;if(0===e.sceneCount){return Date.now()-e.createdAt>6e5}if(!e.getAllScenes().some((e=>e.entities&&e.entities.count>0))){return Date.now()-e.createdAt>6e5}return!1}get worldCount(){return this._worlds.size}get activeWorldCount(){return this._activeWorlds.size}get isRunning(){return this._isRunning}get config(){return{...this._config}}}class tt{constructor(e={}){if(tt._instance=this,this._config={debug:!0,enableEntitySystems:!0,...e},this._serviceContainer=new We,this._timerManager=new exports.TimerManager,this._serviceContainer.registerInstance(exports.TimerManager,this._timerManager),this._performanceMonitor=new f,this._serviceContainer.registerInstance(f,this._performanceMonitor),this._config.debug&&this._performanceMonitor.enable(),this._poolManager=new S,this._serviceContainer.registerInstance(S,this._poolManager),this._sceneManager=new Ye(this._performanceMonitor),this._serviceContainer.registerInstance(Ye,this._sceneManager),this._sceneManager.setSceneChangedCallback((()=>{this._debugManager&&this._debugManager.onSceneChanged()})),this._worldManager=new et(this._config.worldManagerConfig),this._serviceContainer.registerInstance(et,this._worldManager),this._pluginManager=new Xe,this._pluginManager.initialize(this,this._serviceContainer),this._serviceContainer.registerInstance(Xe,this._pluginManager),tt.entitySystemsEnabled=this._config.enableEntitySystems??!0,this.debug=this._config.debug??!0,this._config.debugConfig?.enabled){const e=new exports.DebugConfigService;e.setConfig(this._config.debugConfig),this._serviceContainer.registerInstance(exports.DebugConfigService,e),this._serviceContainer.registerSingleton(exports.DebugManager,(e=>d(exports.DebugManager,e))),this._debugManager=this._serviceContainer.resolve(exports.DebugManager)}this.initialize()}static get Instance(){return this._instance}static get services(){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");return this._instance._serviceContainer}static get worldManager(){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");return this._instance._worldManager}static create(e=!0){if(null==this._instance){const t="boolean"==typeof e?{debug:e,enableEntitySystems:!0}:e;this._instance=new tt(t)}else this._logger.warn("Core实例已创建,返回现有实例");return this._instance}static setScene(e){if(!this._instance)throw tt._logger.warn("Core实例未创建,请先调用Core.create()"),new Error("Core实例未创建");return this._instance._sceneManager.setScene(e)}static get scene(){return this._instance?this._instance._sceneManager.currentScene:null}static get ecsAPI(){return this._instance?this._instance._sceneManager.api:null}static loadScene(e){this._instance?this._instance._sceneManager.loadScene(e):tt._logger.warn("Core实例未创建,请先调用Core.create()")}static update(e){this._instance?this._instance.updateInternal(e):tt._logger.warn("Core实例未创建,请先调用Core.create()")}static schedule(e,t=!1,n,s){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");if(!s)throw new Error("onTime callback is required");return this._instance._timerManager.schedule(e,t,n,s)}static enableDebug(e){if(this._instance){if(this._instance._debugManager)this._instance._debugManager.updateConfig(e);else{const t=new exports.DebugConfigService;t.setConfig(e),this._instance._serviceContainer.registerInstance(exports.DebugConfigService,t),this._instance._serviceContainer.registerSingleton(exports.DebugManager,(e=>d(exports.DebugManager,e))),this._instance._debugManager=this._instance._serviceContainer.resolve(exports.DebugManager)}this._instance._config.debugConfig=e}else tt._logger.warn("Core实例未创建,请先调用Core.create()")}static disableDebug(){this._instance&&(this._instance._debugManager&&(this._instance._debugManager.stop(),delete this._instance._debugManager),this._instance._config.debugConfig&&(this._instance._config.debugConfig.enabled=!1))}static getDebugData(){return this._instance?._debugManager?this._instance._debugManager.getDebugData():null}static get isDebugEnabled(){return this._instance?._config.debugConfig?.enabled||!1}static async installPlugin(e){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");await this._instance._pluginManager.install(e)}static async uninstallPlugin(e){if(!this._instance)throw new Error("Core实例未创建,请先调用Core.create()");await this._instance._pluginManager.uninstall(e)}static getPlugin(e){if(this._instance)return this._instance._pluginManager.getPlugin(e)}static isPluginInstalled(e){return!!this._instance&&this._instance._pluginManager.isInstalled(e)}initialize(){tt._logger.info("Core initialized",{debug:this.debug,entitySystemsEnabled:tt.entitySystemsEnabled,debugEnabled:this._config.debugConfig?.enabled||!1})}updateInternal(e){if(tt.paused)return;const t=this._performanceMonitor.startMonitoring("Core.update");s.update(e),"updateFPS"in this._performanceMonitor&&"function"==typeof this._performanceMonitor.updateFPS&&this._performanceMonitor.updateFPS(s.deltaTime);const n=this._performanceMonitor.startMonitoring("Services.update");this._serviceContainer.updateAll(e),this._performanceMonitor.endMonitoring("Services.update",n,this._serviceContainer.getUpdatableCount()),this._poolManager.update(),this._sceneManager.update(),this._worldManager.updateAll(),this._performanceMonitor.endMonitoring("Core.update",t)}static destroy(){this._instance&&(this._instance._debugManager&&this._instance._debugManager.stop(),this._instance._serviceContainer.clear(),tt._logger.info("Core destroyed"),this._instance=null)}}tt.paused=!1,tt._instance=null,tt._logger=N("Core");const nt=N("DebugPlugin");exports.DebugPlugin=class{constructor(e){this.name="@esengine/debug-plugin",this.version="1.0.0",this.worldManager=null,this.updateTimer=null,this.autoStart=e?.autoStart??!1,this.updateInterval=e?.updateInterval??1e3}async install(e,t){this.worldManager=t.resolve(et),nt.info("ECS Debug Plugin installed"),this.autoStart&&this.start()}async uninstall(){this.stop(),this.worldManager=null,nt.info("ECS Debug Plugin uninstalled")}dispose(){this.stop(),this.worldManager=null}start(){this.updateTimer?nt.warn("Debug monitoring already started"):(nt.info("Starting debug monitoring"),this.updateTimer=setInterval((()=>{this.logStats()}),this.updateInterval))}stop(){this.updateTimer&&(clearInterval(this.updateTimer),this.updateTimer=null,nt.info("Debug monitoring stopped"))}getStats(){if(!this.worldManager)throw new Error("Plugin not installed");const e=[];let t=0,n=0;const s=this.worldManager.getAllWorlds();for(const i of s)for(const s of i.getAllScenes()){const i=this.getSceneInfo(s);e.push(i),t+=i.entityCount,n+=i.systems.length}return{scenes:e,totalEntities:t,totalSystems:n,timestamp:Date.now()}}getSceneInfo(e){const t=e.entities.buffer,n=e.systems;return{name:e.name,entityCount:t.length,systems:n.map((e=>this.getSystemInfo(e))),entities:t.map((e=>this.getEntityInfo(e)))}}getSystemInfo(e){const t=e.getPerformanceStats(),n=t?{avgExecutionTime:t.averageTime,maxExecutionTime:t.maxTime,totalCalls:t.executionCount}:void 0;return{name:e.constructor.name,enabled:e.enabled,updateOrder:e.updateOrder,entityCount:e.entities.length,...void 0!==n&&{performance:n}}}getEntityInfo(e){const t=e.components;return{id:e.id,name:e.name,enabled:e.enabled,tag:e.tag,componentCount:t.length,components:t.map((e=>this.getComponentInfo(e)))}}getComponentInfo(e){const t=e.constructor.name,n={};for(const t of Object.keys(e))if(!t.startsWith("_")){const s=e[t];"function"!=typeof s&&(n[t]=s)}return{type:t,data:n}}queryEntities(e){if(!this.worldManager)throw new Error("Plugin not installed");const t=[],n=this.worldManager.getAllWorlds();for(const s of n)for(const n of s.getAllScenes())if(!e.sceneId||n.name===e.sceneId)for(const s of n.entities.buffer)if((void 0===e.tag||s.tag===e.tag)&&(!e.name||s.name.includes(e.name))){if(e.hasComponent){if(!s.components.some((t=>t.constructor.name===e.hasComponent)))continue}t.push(this.getEntityInfo(s))}return t}logStats(){const e=this.getStats();nt.info("=== ECS Debug Stats ==="),nt.info(`Total Entities: ${e.totalEntities}`),nt.info(`Total Systems: ${e.totalSystems}`),nt.info(`Scenes: ${e.scenes.length}`);for(const t of e.scenes){nt.info(`\n[Scene: ${t.name}]`),nt.info(` Entities: ${t.entityCount}`),nt.info(` Systems: ${t.systems.length}`);for(const e of t.systems){const t=e.performance?` | Avg: ${e.performance.avgExecutionTime.toFixed(2)}ms, Max: ${e.performance.maxExecutionTime.toFixed(2)}ms`:"";nt.info(` - ${e.name} (${e.enabled?"enabled":"disabled"}) | Entities: ${e.entityCount}${t}`)}}nt.info("========================\n")}exportJSON(){const e=this.getStats();return JSON.stringify(e,null,2)}},exports.DebugPlugin=e([c(),n("design:paramtypes",[Object])],exports.DebugPlugin);class st{constructor(e,t){this.func=e,this.context=t}}class it{constructor(){this.entityId=null,this.id=it.idGenerator++}onAddedToEntity(){}onRemovedFromEntity(){}}var rt,ot;it.idGenerator=0,exports.ECSEventType=void 0,(rt=exports.ECSEventType||(exports.ECSEventType={})).ENTITY_CREATED="entity:created",rt.ENTITY_DESTROYED="entity:destroyed",rt.ENTITY_ENABLED="entity:enabled",rt.ENTITY_DISABLED="entity:disabled",rt.ENTITY_TAG_ADDED="entity:tag:added",rt.ENTITY_TAG_REMOVED="entity:tag:removed",rt.ENTITY_NAME_CHANGED="entity:name:changed",rt.COMPONENT_ADDED="component:added",rt.COMPONENT_REMOVED="component:removed",rt.COMPONENT_MODIFIED="component:modified",rt.COMPONENT_ENABLED="component:enabled",rt.COMPONENT_DISABLED="component:disabled",rt.SYSTEM_ADDED="system:added",rt.SYSTEM_REMOVED="system:removed",rt.SYSTEM_ENABLED="system:enabled",rt.SYSTEM_DISABLED="system:disabled",rt.SYSTEM_PROCESSING_START="system:processing:start",rt.SYSTEM_PROCESSING_END="system:processing:end",rt.SYSTEM_ERROR="system:error",rt.SCENE_CREATED="scene:created",rt.SCENE_DESTROYED="scene:destroyed",rt.SCENE_ACTIVATED="scene:activated",rt.SCENE_DEACTIVATED="scene:deactivated",rt.SCENE_PAUSED="scene:paused",rt.SCENE_RESUMED="scene:resumed",rt.QUERY_EXECUTED="query:executed",rt.QUERY_CACHE_HIT="query:cache:hit",rt.QUERY_CACHE_MISS="query:cache:miss",rt.QUERY_OPTIMIZED="query:optimized",rt.PERFORMANCE_WARNING="performance:warning",rt.PERFORMANCE_CRITICAL="performance:critical",rt.MEMORY_USAGE_HIGH="memory:usage:high",rt.FRAME_RATE_DROP="frame:rate:drop",rt.INDEX_CREATED="index:created",rt.INDEX_UPDATED="index:updated",rt.INDEX_OPTIMIZED="index:optimized",rt.ARCHETYPE_CREATED="archetype:created",rt.ARCHETYPE_ENTITY_ADDED="archetype:entity:added",rt.ARCHETYPE_ENTITY_REMOVED="archetype:entity:removed",rt.DIRTY_MARK_ADDED="dirty:mark:added",rt.DIRTY_BATCH_PROCESSED="dirty:batch:processed",rt.ERROR_OCCURRED="error:occurred",rt.WARNING_ISSUED="warning:issued",rt.FRAMEWORK_INITIALIZED="framework:initialized",rt.FRAMEWORK_SHUTDOWN="framework:shutdown",rt.DEBUG_INFO="debug:info",rt.DEBUG_STATS_UPDATED="debug:stats:updated",exports.EventPriority=void 0,(ot=exports.EventPriority||(exports.EventPriority={}))[ot.LOWEST=0]="LOWEST",ot[ot.LOW=25]="LOW",ot[ot.NORMAL=50]="NORMAL",ot[ot.HIGH=75]="HIGH",ot[ot.HIGHEST=100]="HIGHEST",ot[ot.CRITICAL=200]="CRITICAL";const at={ENTITY:{CREATED:exports.ECSEventType.ENTITY_CREATED,DESTROYED:exports.ECSEventType.ENTITY_DESTROYED,ENABLED:exports.ECSEventType.ENTITY_ENABLED,DISABLED:exports.ECSEventType.ENTITY_DISABLED,TAG_ADDED:exports.ECSEventType.ENTITY_TAG_ADDED,TAG_REMOVED:exports.ECSEventType.ENTITY_TAG_REMOVED,NAME_CHANGED:exports.ECSEventType.ENTITY_NAME_CHANGED},COMPONENT:{ADDED:exports.ECSEventType.COMPONENT_ADDED,REMOVED:exports.ECSEventType.COMPONENT_REMOVED,MODIFIED:exports.ECSEventType.COMPONENT_MODIFIED,ENABLED:exports.ECSEventType.COMPONENT_ENABLED,DISABLED:exports.ECSEventType.COMPONENT_DISABLED},SYSTEM:{ADDED:exports.ECSEventType.SYSTEM_ADDED,REMOVED:exports.ECSEventType.SYSTEM_REMOVED,ENABLED:exports.ECSEventType.SYSTEM_ENABLED,DISABLED:exports.ECSEventType.SYSTEM_DISABLED,PROCESSING_START:exports.ECSEventType.SYSTEM_PROCESSING_START,PROCESSING_END:exports.ECSEventType.SYSTEM_PROCESSING_END,ERROR:exports.ECSEventType.SYSTEM_ERROR},PERFORMANCE:{WARNING:exports.ECSEventType.PERFORMANCE_WARNING,CRITICAL:exports.ECSEventType.PERFORMANCE_CRITICAL,MEMORY_HIGH:exports.ECSEventType.MEMORY_USAGE_HIGH,FRAME_DROP:exports.ECSEventType.FRAME_RATE_DROP}};class ct{static isValid(e){return this.validTypes.has(e)}static getAllValidTypes(){return Array.from(this.validTypes)}static addCustomType(e){this.validTypes.add(e)}static removeCustomType(e){this.validTypes.delete(e)}}ct.validTypes=new Set([...Object.values(exports.ECSEventType),...Object.values(at.ENTITY),...Object.values(at.COMPONENT),...Object.values(at.SYSTEM),...Object.values(at.PERFORMANCE)]);class ht{constructor(){this.adapter=null,this.logger=N("PlatformManager")}static getInstance(){return ht.instance||(ht.instance=new ht),ht.instance}getAdapter(){if(!this.adapter)throw new Error("平台适配器未注册,请调用 registerAdapter() 注册适配器");return this.adapter}registerAdapter(e){this.adapter=e,this.logger.info(`平台适配器已注册: ${e.name}`,{name:e.name,version:e.version,supportsWorker:e.isWorkerSupported(),supportsSharedArrayBuffer:e.isSharedArrayBufferSupported(),hardwareConcurrency:e.getHardwareConcurrency()})}hasAdapter(){return null!==this.adapter}getAdapterInfo(){return this.adapter?{name:this.adapter.name,version:this.adapter.version,config:this.adapter.getPlatformConfig()}:null}supportsFeature(e){if(!this.adapter)return!1;const t=this.adapter.getPlatformConfig();switch(e){case"worker":return this.adapter.isWorkerSupported();case"shared-array-buffer":return this.adapter.isSharedArrayBufferSupported();case"transferable-objects":return t.supportsTransferableObjects;case"module-worker":return t.supportsModuleWorker;default:return!1}}getBasicWorkerConfig(){if(!this.adapter)return{platformSupportsWorker:!1,platformSupportsSharedArrayBuffer:!1,platformMaxWorkerCount:1,platformLimitations:{}};const e=this.adapter.getPlatformConfig();return{platformSupportsWorker:this.adapter.isWorkerSupported(),platformSupportsSharedArrayBuffer:this.adapter.isSharedArrayBufferSupported(),platformMaxWorkerCount:e.maxWorkerCount,platformLimitations:e.limitations||{}}}async getFullPlatformConfig(){if(!this.adapter)throw new Error("平台适配器未注册");return"function"==typeof this.adapter.getPlatformConfigAsync?await this.adapter.getPlatformConfigAsync():this.adapter.getPlatformConfig()}}class lt{constructor(e){this.workers=[],this.taskQueue=[],this.busyWorkers=new Set,this.taskCounter=0,this.workers=e;for(let t=0;t<e.length;t++){const n=e[t];n&&(n.onMessage((e=>this.handleWorkerMessage(t,e.data))),n.onError((e=>this.handleWorkerError(t,e))))}}executeSharedBuffer(e){return new Promise(((t,n)=>{const s={id:"shared-task-"+ ++this.taskCounter,data:{...e,type:"shared"},resolve:()=>t(),reject:n};this.taskQueue.push(s),this.processQueue()}))}execute(e){return new Promise(((t,n)=>{const s={id:"task-"+ ++this.taskCounter,data:e,resolve:e=>{t(e)},reject:n};this.taskQueue.push(s),this.processQueue()}))}processQueue(){if(0!==this.taskQueue.length)for(let e=0;e<this.workers.length;e++)if(!this.busyWorkers.has(e)&&this.taskQueue.length>0){const t=this.taskQueue.shift();this.busyWorkers.add(e);const n=this.workers[e];n.postMessage({id:t.id,...t.data}),n._currentTask=t}}handleWorkerMessage(e,t){const n=this.workers[e],s=n._currentTask;s&&(this.busyWorkers.delete(e),n._currentTask=null,t.error?s.reject(new Error(t.error)):s.resolve(t.result),this.processQueue())}handleWorkerError(e,t){const n=this.workers[e],s=n._currentTask;s&&(this.busyWorkers.delete(e),n._currentTask=null,s.reject(new Error(t.message))),this.processQueue()}destroy(){for(const e of this.workers)e.terminate();this.workers.length=0,this.taskQueue.length=0,this.busyWorkers.clear()}}class ut{constructor(e=!1){this.eventIdCounter=0,this.isDebugMode=!1,this.eventSystem=new Te,this.isDebugMode=e}emit(e,t,n=!1){this.validateEventType(e);const s=n?this.enhanceEventData(e,t):t;this.isDebugMode&&ut._logger.info(`发射事件: ${e}`,s),this.eventSystem.emitSync(e,s)}async emitAsync(e,t,n=!1){this.validateEventType(e);const s=n?this.enhanceEventData(e,t):t;this.isDebugMode&&ut._logger.info(`发射异步事件: ${e}`,s),await this.eventSystem.emit(e,s)}on(e,t,n={}){this.validateEventType(e);const s={once:n.once||!1,priority:n.priority||exports.EventPriority.NORMAL,async:n.async||!1};return n.thisArg&&(s.thisArg=n.thisArg),this.isDebugMode&&ut._logger.info(`添加监听器: ${e}`,s),this.eventSystem.on(e,t,s)}once(e,t,n={}){return this.on(e,t,{...n,once:!0})}onAsync(e,t,n={}){return this.on(e,t,{...n,async:!0})}off(e,t){return this.isDebugMode&&ut._logger.info(`移除监听器: ${t} 事件: ${e}`),this.eventSystem.off(e,t)}offAll(e){this.isDebugMode&&ut._logger.info(`移除所有监听器: ${e}`),this.eventSystem.offAll(e)}hasListeners(e){return this.eventSystem.hasListeners(e)}getStats(e){const t=this.eventSystem.getStats(e);if(t instanceof Map){const e=new Map;return t.forEach(((t,n)=>{e.set(n,this.convertEventStats(t))})),e}return this.convertEventStats(t)}clear(){this.isDebugMode&&ut._logger.info("清空所有监听器"),this.eventSystem.clear()}setEnabled(e){this.eventSystem.setEnabled(e)}setDebugMode(e){this.isDebugMode=e}setMaxListeners(e){this.eventSystem.setMaxListeners(e)}getListenerCount(e){return this.eventSystem.getListenerCount(e)}setBatchConfig(e,t,n){this.eventSystem.setBatchConfig(e,{batchSize:t,delay:n,enabled:!0})}flushBatch(e){this.eventSystem.flushBatch(e)}resetStats(e){this.eventSystem.resetStats(e)}emitEntityCreated(e){this.emit(exports.ECSEventType.ENTITY_CREATED,e)}emitEntityDestroyed(e){this.emit(exports.ECSEventType.ENTITY_DESTROYED,e)}emitComponentAdded(e){this.emit(exports.ECSEventType.COMPONENT_ADDED,e)}emitComponentRemoved(e){this.emit(exports.ECSEventType.COMPONENT_REMOVED,e)}emitSystemAdded(e){this.emit(exports.ECSEventType.SYSTEM_ADDED,e)}emitSystemRemoved(e){this.emit(exports.ECSEventType.SYSTEM_REMOVED,e)}emitSceneChanged(e){this.emit(exports.ECSEventType.SCENE_ACTIVATED,e)}emitPerformanceWarning(e){this.emit(exports.ECSEventType.PERFORMANCE_WARNING,e)}onEntityCreated(e,t){return this.on(exports.ECSEventType.ENTITY_CREATED,e,t)}onComponentAdded(e,t){return this.on(exports.ECSEventType.COMPONENT_ADDED,e,t)}onSystemError(e,t){return this.on(exports.ECSEventType.SYSTEM_ERROR,e,t)}onPerformanceWarning(e,t){return this.on(exports.ECSEventType.PERFORMANCE_WARNING,e,t)}validateEventType(e){this.isDebugMode&&(ct.isValid(e)||(ut._logger.warn(`未知事件类型: ${e}`),ct.addCustomType(e)))}enhanceEventData(e,t){if(null==t)return{timestamp:Date.now(),eventId:`${e}_${++this.eventIdCounter}`,source:"EventBus"};const n=t;return n.timestamp||(n.timestamp=Date.now()),n.eventId||(n.eventId=`${e}_${++this.eventIdCounter}`),n.source||(n.source="EventBus"),n}convertEventStats(e){return{eventType:e.eventType,listenerCount:e.listenerCount,triggerCount:e.triggerCount,totalExecutionTime:e.totalExecutionTime,averageExecutionTime:e.averageExecutionTime,lastTriggerTime:e.lastTriggerTime}}}ut._logger=N("EventBus");class dt{static registerComponentMigration(e,t,n,s){this.componentMigrations.has(e)||this.componentMigrations.set(e,new Map);this.componentMigrations.get(e).set(t,s)}static registerSceneMigration(e,t,n){this.sceneMigrations.set(e,n)}static migrateComponent(e,t){const n=e.version;if(n===t)return e;const s=this.componentMigrations.get(e.type);if(!s)return console.warn(`No migration path found for component ${e.type}`),e;const i={...e};let r=n;for(;r<t;){const t=s.get(r);if(!t){console.warn(`Missing migration from version ${r} to ${r+1} for ${e.type}`);break}i.data=t(i.data,r,r+1),r++}return i.version=r,i}static migrateScene(e,t){const n=e.version;if(n===t)return e;let s={...e},i=n;for(;i<t;){const e=this.sceneMigrations.get(i);if(!e){console.warn(`Missing scene migration from version ${i} to ${i+1}`);break}s=e(s,i,i+1),i++}return s.version=i,s=this.migrateSceneComponents(s),s}static migrateSceneComponents(e){const t={...e};return t.entities=e.entities.map((t=>({...t,components:t.components.map((t=>{const n=e.componentTypeRegistry.find((e=>e.typeName===t.type));return n&&n.version!==t.version?this.migrateComponent(t,n.version):t})),children:this.migrateEntitiesComponents(t.children,e.componentTypeRegistry)}))),t}static migrateEntitiesComponents(e,t){return e.map((e=>({...e,components:e.components.map((e=>{const n=t.find((t=>t.typeName===e.type));return n&&n.version!==e.version?this.migrateComponent(e,n.version):e})),children:this.migrateEntitiesComponents(e.children,t)})))}static clearMigrations(){this.componentMigrations.clear(),this.sceneMigrations.clear()}static getComponentMigrationPath(e){const t=this.componentMigrations.get(e);return t?Array.from(t.keys()).sort(((e,t)=>e-t)):[]}static getSceneMigrationPath(){return Array.from(this.sceneMigrations.keys()).sort(((e,t)=>e-t))}static canMigrateComponent(e,t,n){if(t===n)return!0;const s=this.componentMigrations.get(e);if(!s)return!1;for(let e=t;e<n;e++)if(!s.has(e))return!1;return!0}static canMigrateScene(e,t){if(e===t)return!0;for(let n=e;n<t;n++)if(!this.sceneMigrations.has(n))return!1;return!0}}dt.componentMigrations=new Map,dt.sceneMigrations=new Map;class pt{constructor(e){this._entity=e}with(e){return this._entity.addComponent(e),this}withConfigured(e,t){return this._entity.addComponent(e),t(e),this}withTag(e){return this._entity.tag=e,this}withName(e){return this._entity.name=e,this}withActive(e){return this._entity.active=e,this}withEnabled(e){return this._entity.enabled=e,this}withUpdateOrder(e){return this._entity.updateOrder=e,this}withChild(e){return this._entity.addChild(e),this}build(){return this._entity}get entity(){return this._entity}}function mt(e){return"function"==typeof e&&e.prototype instanceof it}exports.AutoTyped=function(e){return function(t,n){const s=String(n);t.constructor.__autoTypedFields||(t.constructor.__autoTypedFields=new Map),t.constructor.__autoTypedFields.set(s,e||{})}},exports.BinarySerializer=ze,exports.BitMask64Utils=X,exports.Bits=pe,exports.COMPONENT_TYPE_NAME=C,exports.Colors=R,exports.Component=it,exports.ComponentDataCollector=Q,exports.ComponentPool=G,exports.ComponentPoolManager=j,exports.ComponentRegistry=te,exports.ComponentSerializer=Re,exports.ComponentSparseSet=ye,exports.ComponentStorage=ne,exports.ConsoleLogger=O,exports.Core=tt,exports.DeepCopy=function(e,t){const n=String(t);e.constructor.__deepCopyFields||(e.constructor.__deepCopyFields=new Set),e.constructor.__deepCopyFields.add(n)},exports.ECSComponent=function(e){return function(t){if(!e||"string"!=typeof e)throw new Error("ECSComponent装饰器必须提供有效的类型名称");return t[C]=e,t}},exports.ECSFluentAPI=Ge,exports.ECSSystem=function(e,t){return function(n){if(!e||"string"!=typeof e)throw new Error("ECSSystem装饰器必须提供有效的类型名称");return n[v]=e,t&&(n.__systemMetadata__=t),n}},exports.ENTITY_REF_METADATA=B,exports.EVENT_TYPES=at,exports.Emitter=class{constructor(){this._messageTable=new Map}addObserver(e,t,n){let s=this._messageTable.get(e);s||(s=[],this._messageTable.set(e,s)),this.hasObserver(e,t)||s.push(new st(t,n))}removeObserver(e,t){const n=this._messageTable.get(e);if(n){const e=n.findIndex((e=>e.func==t));-1!=e&&n.splice(e,1)}}emit(e,...t){const n=this._messageTable.get(e);if(n)for(const e of n)e.func.call(e.context,...t)}hasObserver(e,t){const n=this._messageTable.get(e);return!!n&&n.some((e=>e.func===t))}removeAllObservers(e){void 0!==e?this._messageTable.delete(e):this._messageTable.clear()}dispose(){this._messageTable.clear()}getEventTypeCount(){return this._messageTable.size}getObserverCount(e){const t=this._messageTable.get(e);return t?t.length:0}},exports.EnableSoA=function(e){return e.__enableSoA=!0,e},exports.Entity=re,exports.EntityDataCollector=H,exports.EntityList=ae,exports.EntityProcessorList=de,exports.EntityRef=function(){return function(e,t){const n=e.constructor;let s=n[B];s||(s={properties:new Set},n[B]=s);const i="symbol"==typeof t?t.toString():t;s.properties.add(i),Object.defineProperty(e,t,{get:function(){return W(this).get(i)||null},set:function(e){const t=W(this),n=t.get(i)||null;if(n===e)return;const s=null!==this.entityId?x(this.entityId):null;if(!s||!s.referenceTracker)return void t.set(i,e);const r=s.referenceTracker;if(n&&r.unregisterReference(n,this,i),e){if(e.scene!==s)return void L.error(`Cannot reference Entity from different Scene. Entity: ${e.name}, Scene: ${e.scene?.name||"null"}`);if(e.isDestroyed)return L.warn(`Cannot reference destroyed Entity: ${e.name}`),void t.set(i,null);r.registerReference(e,this,i)}t.set(i,e)},enumerable:!0,configurable:!0})}},exports.EntitySerializer=Oe,exports.EntitySystem=ue,exports.EventBus=ut,exports.EventTypeValidator=ct,exports.Float32=function(e,t){const n=String(t);e.constructor.__float32Fields||(e.constructor.__float32Fields=new Set),e.constructor.__float32Fields.add(n)},exports.Float64=function(e,t){const n=String(t);e.constructor.__float64Fields||(e.constructor.__float64Fields=new Set),e.constructor.__float64Fields.add(n)},exports.FuncPack=st,exports.GlobalEventBus=class{static getInstance(e=!1){return this.instance||(this.instance=new ut(e)),this.instance}static reset(e=!1){return this.instance&&this.instance.clear(),this.instance=new ut(e),this.instance}},exports.GlobalManager=class{constructor(){this._enabled=!1}get enabled(){return this._enabled}set enabled(e){this.setEnabled(e)}setEnabled(e){this._enabled!=e&&(this._enabled=e,this._enabled?this.onEnabled():this.onDisabled())}onEnabled(){}onDisabled(){}update(){}},exports.HighPrecision=function(e,t){const n=String(t);e.constructor.__highPrecisionFields||(e.constructor.__highPrecisionFields=new Set),e.constructor.__highPrecisionFields.add(n)},exports.IdentifierPool=ce,exports.IgnoreSerialization=function(){return function(e,t){const n=e.constructor;let s=n[Me];s||(s={options:{version:1},fields:new Map,ignoredFields:new Set},n[Me]=s),s.ignoredFields.add(t)}},exports.IncrementalSerializer=Le,exports.Inject=l,exports.Injectable=c,exports.Int16=function(e,t){const n=String(t);e.constructor.__int16Fields||(e.constructor.__int16Fields=new Set),e.constructor.__int16Fields.add(n)},exports.Int32=function(e,t){const n=String(t);e.constructor.__int32Fields||(e.constructor.__int32Fields=new Set),e.constructor.__int32Fields.add(n)},exports.Int8=function(e,t){const n=String(t);e.constructor.__int8Fields||(e.constructor.__int8Fields=new Set),e.constructor.__int8Fields.add(n)},exports.IntervalSystem=class extends ue{constructor(e,t){super(t),this.acc=0,this.intervalRemainder=0,this.interval=e}onCheckProcessing(){return this.acc+=s.deltaTime,this.acc>=this.interval&&(this.intervalRemainder=this.acc-this.interval,this.acc=0,!0)}getIntervalDelta(){return this.interval+this.intervalRemainder}},exports.Logger=P,exports.LoggerManager=z,exports.Matcher=he,exports.MigrationBuilder=class{constructor(){this.fromVersion=1,this.toVersion=2}forComponent(e){return this.componentType=e,this}fromVersionToVersion(e,t){return this.fromVersion=e,this.toVersion=t,this}migrate(e){this.componentType?dt.registerComponentMigration(this.componentType,this.fromVersion,this.toVersion,e):dt.registerSceneMigration(this.fromVersion,this.toVersion,e)}},exports.NumberExtension=class{static toNumber(e){return null==e?0:Number(e)}},exports.PassiveSystem=class extends ue{constructor(e){super(e)}process(e){}},exports.PerformanceDataCollector=q,exports.PerformanceMonitor=f,exports.PlatformDetector=class{static detect(){const e=[];let t,n="unknown",s=!1;return"undefined"!=typeof globalThis&&e.push("globalThis"),"undefined"!=typeof window&&e.push("window"),"undefined"!=typeof self&&e.push("self"),this.isNodeJS()?(n="nodejs",s=!0,t="NodeAdapter",e.push("nodejs","process","require")):this.isWeChatMiniGame()?(n="wechat-minigame",s=!0,t="WeChatMiniGameAdapter",e.push("wx","wechat-minigame")):this.isByteDanceMiniGame()?(n="bytedance-minigame",s=!0,t="ByteDanceMiniGameAdapter",e.push("tt","bytedance-minigame")):this.isAlipayMiniGame()?(n="alipay-minigame",s=!0,t="AlipayMiniGameAdapter",e.push("my","alipay-minigame")):this.isBaiduMiniGame()?(n="baidu-minigame",s=!0,t="BaiduMiniGameAdapter",e.push("swan","baidu-minigame")):this.isBrowser()&&(n="browser",s=!0,t="BrowserAdapter",e.push("browser")),"undefined"!=typeof Worker&&e.push("Worker"),"undefined"!=typeof SharedArrayBuffer&&e.push("SharedArrayBuffer"),"undefined"!=typeof navigator&&navigator.hardwareConcurrency&&e.push("hardwareConcurrency"),"undefined"!=typeof performance&&"function"==typeof performance.now&&e.push("performance.now"),"undefined"!=typeof Blob&&e.push("Blob"),"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL&&e.push("URL.createObjectURL"),{platform:n,confident:s,features:e,...t&&{adapterClass:t}}}static isWeChatMiniGame(){if(void 0!==globalThis.wx){const e=globalThis.wx;return!!(e.getSystemInfo&&e.createCanvas&&e.createImage)}return!1}static isByteDanceMiniGame(){if(void 0!==globalThis.tt){const e=globalThis.tt;return!!(e.getSystemInfo&&e.createCanvas&&e.createImage)}return!1}static isNodeJS(){try{return!("undefined"==typeof process||!process.versions||!process.versions.node||"undefined"==typeof require||"undefined"==typeof module||"undefined"==typeof exports||"undefined"!=typeof window||"undefined"!=typeof document)}catch{return!1}}static isAlipayMiniGame(){if(void 0!==globalThis.my){const e=globalThis.my;return!(!e.getSystemInfo||!e.createCanvas)}return!1}static isBaiduMiniGame(){if(void 0!==globalThis.swan){const e=globalThis.swan;return!(!e.getSystemInfo||!e.createCanvas)}return!1}static isBrowser(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator&&void 0!==window.location}static getDetailedInfo(){const e={};return e.userAgent="undefined"!=typeof navigator?navigator.userAgent:"unknown",e.platform="undefined"!=typeof navigator?navigator.platform:"unknown",e.globalObjects={window:"undefined"!=typeof window,document:"undefined"!=typeof document,navigator:"undefined"!=typeof navigator,wx:void 0!==globalThis.wx,tt:void 0!==globalThis.tt,my:void 0!==globalThis.my,swan:void 0!==globalThis.swan},e.workerSupport={Worker:"undefined"!=typeof Worker,SharedWorker:"undefined"!=typeof SharedWorker,ServiceWorker:"undefined"!=typeof navigator&&"serviceWorker"in navigator,SharedArrayBuffer:"undefined"!=typeof SharedArrayBuffer,crossOriginIsolated:"undefined"!=typeof self&&self.crossOriginIsolated},e.performance={performanceNow:"undefined"!=typeof performance&&"function"==typeof performance.now,hardwareConcurrency:"undefined"!=typeof navigator?navigator.hardwareConcurrency:void 0},e.apiSupport={Blob:"undefined"!=typeof Blob,URL:"undefined"!=typeof URL,createObjectURL:"undefined"!=typeof URL&&"function"==typeof URL.createObjectURL,ArrayBuffer:"undefined"!=typeof ArrayBuffer,TypedArrays:"undefined"!=typeof Float32Array},e}},exports.PlatformManager=ht,exports.PluginManager=Xe,exports.Pool=_,exports.PoolManager=S,exports.ProcessingSystem=class extends ue{constructor(e){super(e)}process(e){this.processSystem()}},exports.QuerySystem=Ee,exports.ReactiveQuery=ve,exports.ReferenceTracker=D,exports.SERIALIZABLE_METADATA=Me,exports.SERIALIZE_FIELD=Ie,exports.SERIALIZE_OPTIONS=xe,exports.SYSTEM_TYPE_NAME=v,exports.Scene=Fe,exports.SceneDataCollector=V,exports.SceneManager=Ye,exports.SceneSerializer=Pe,exports.Serializable=function(e){return function(t){if(!e||"number"!=typeof e.version)throw new Error("Serializable装饰器必须提供有效的版本号");let n=t[Me];return n?n.options=e:(n={options:e,fields:new Map,ignoredFields:new Set},t[Me]=n),t}},exports.Serialize=De,exports.SerializeArray=function(e,t){const n=String(t);e.constructor.__serializeArrayFields||(e.constructor.__serializeArrayFields=new Set),e.constructor.__serializeArrayFields.add(n)},exports.SerializeAsMap=function(){return function(e,t){De({serializer:e=>e instanceof Map?Array.from(e.entries()):null,deserializer:e=>Array.isArray(e)?new Map(e):new Map})(e,t)}},exports.SerializeAsSet=function(){return function(e,t){De({serializer:e=>e instanceof Set?Array.from(e):null,deserializer:e=>Array.isArray(e)?new Set(e):new Set})(e,t)}},exports.SerializeMap=function(e,t){const n=String(t);e.constructor.__serializeMapFields||(e.constructor.__serializeMapFields=new Set),e.constructor.__serializeMapFields.add(n)},exports.SerializeSet=function(e,t){const n=String(t);e.constructor.__serializeSetFields||(e.constructor.__serializeSetFields=new Set),e.constructor.__serializeSetFields.add(n)},exports.ServiceContainer=We,exports.SoAStorage=ee,exports.SparseSet=me,exports.SystemDataCollector=U,exports.Time=s,exports.Timer=i,exports.TypeInference=K,exports.TypeSafeEventSystem=Te,exports.TypeUtils=class{static getType(e){return e.constructor}},exports.TypedEntityBuilder=pt,exports.TypedQueryBuilder=Ae,exports.TypedQueryResult=we,exports.Uint16=function(e,t){const n=String(t);e.constructor.__uint16Fields||(e.constructor.__uint16Fields=new Set),e.constructor.__uint16Fields.add(n)},exports.Uint32=function(e,t){const n=String(t);e.constructor.__uint32Fields||(e.constructor.__uint32Fields=new Set),e.constructor.__uint32Fields.add(n)},exports.Uint8=function(e,t){const n=String(t);e.constructor.__uint8Fields||(e.constructor.__uint8Fields=new Set),e.constructor.__uint8Fields.add(n)},exports.Uint8Clamped=function(e,t){const n=String(t);e.constructor.__uint8ClampedFields||(e.constructor.__uint8ClampedFields=new Set),e.constructor.__uint8ClampedFields.add(n)},exports.Updatable=h,exports.VersionMigrationManager=dt,exports.WebSocketManager=Y,exports.WorkerEntitySystem=class extends ue{constructor(e,t={}){super(e),this.workerPool=null,this.isProcessing=!1,this.sharedBuffer=null,this.sharedFloatArray=null,this.hasLoggedSyncMode=!1,this.platformAdapter=ht.getInstance().getAdapter();const n=t.workerCount??this.getMaxSystemWorkerCount(),s=this.getMaxSystemWorkerCount(),i=Math.min(n,s);n>s&&this.logger.warn(`请求 ${n} 个Worker,但系统最多支持 ${s} 个。实际使用 ${i} 个Worker。`),this.config={enableWorker:t.enableWorker??!0,workerCount:i,systemConfig:t.systemConfig,...void 0!==t.entitiesPerWorker&&{entitiesPerWorker:t.entitiesPerWorker},useSharedArrayBuffer:t.useSharedArrayBuffer??this.isSharedArrayBufferSupported(),entityDataSize:t.entityDataSize??this.getDefaultEntityDataSize(),maxEntities:t.maxEntities??1e4},this.config.enableWorker&&this.isWorkerSupported()&&(this.config.useSharedArrayBuffer&&this.initializeSharedArrayBuffer(),this.initializeWorkerPool())}isWorkerSupported(){return this.platformAdapter.isWorkerSupported()}isSharedArrayBufferSupported(){return this.platformAdapter.isSharedArrayBufferSupported()}getMaxSystemWorkerCount(){return this.platformAdapter.getPlatformConfig().maxWorkerCount}initializeSharedArrayBuffer(){try{if(!this.isSharedArrayBufferSupported())return this.logger.warn(`${this.systemName}: 平台不支持SharedArrayBuffer,降级到单Worker模式以保证数据处理完整性`),this.config.useSharedArrayBuffer=!1,void(this.config.workerCount=1);const e=this.config.maxEntities*this.config.entityDataSize*4;this.sharedBuffer=this.platformAdapter.createSharedArrayBuffer(e),this.sharedBuffer&&(this.sharedFloatArray=new Float32Array(this.sharedBuffer)),this.logger.info(`${this.systemName}: SharedArrayBuffer初始化成功 (${e} 字节)`)}catch(e){this.logger.warn(`${this.systemName}: SharedArrayBuffer初始化失败,降级到单Worker模式以保证数据处理完整性`,e),this.config.useSharedArrayBuffer=!1,this.sharedBuffer=null,this.sharedFloatArray=null,this.config.workerCount=1}}initializeWorkerPool(){try{const e=this.createWorkerScript(),t=[],n=(this.platformAdapter.getPlatformConfig().workerScriptPrefix||"")+e;for(let e=0;e<this.config.workerCount;e++)try{const s=this.platformAdapter.createWorker(n,{name:`WorkerEntitySystem-${e}`});t.push(s)}catch(t){throw this.logger.error(`创建Worker ${e} 失败:`,t),t}this.workerPool=new lt(t)}catch(e){this.logger.error(`${this.systemName}: Worker池初始化失败`,e),this.config.enableWorker=!1}}createWorkerScript(){const e=this.workerProcess.toString().match(/\{([\s\S]*)\}/);if(!e)throw new Error("无法解析workerProcess方法");const t=e[1],n=this.config.entityDataSize,s=this.getSharedArrayBufferProcessFunction?.()||null;let i="";if(s){const e=s.toString().match(/\{([\s\S]*)\}/);e&&(i=e[1]??"")}return`\n // Worker脚本 - 支持SharedArrayBuffer\n let sharedFloatArray = null;\n const ENTITY_DATA_SIZE = ${n};\n\n self.onmessage = function(e) {\n const { type, id, entities, deltaTime, systemConfig, startIndex, endIndex, sharedBuffer } = e.data;\n\n\n try {\n // 处理SharedArrayBuffer初始化\n if (type === 'init' && sharedBuffer) {\n sharedFloatArray = new Float32Array(sharedBuffer);\n self.postMessage({ type: 'init', success: true });\n return;\n }\n\n // 处理SharedArrayBuffer数据\n if (type === 'shared' && sharedFloatArray) {\n processSharedArrayBuffer(startIndex, endIndex, deltaTime, systemConfig);\n self.postMessage({ id, result: null }); // SharedArrayBuffer不需要返回数据\n return;\n }\n\n // 传统处理方式\n if (entities) {\n // 定义处理函数\n function workerProcess(entities, deltaTime, systemConfig) {\n ${t}\n }\n\n // 执行处理\n const result = workerProcess(entities, deltaTime, systemConfig);\n\n // 处理Promise返回值\n if (result && typeof result.then === 'function') {\n result.then(finalResult => {\n self.postMessage({ id, result: finalResult });\n }).catch(error => {\n self.postMessage({ id, error: error.message });\n });\n } else {\n self.postMessage({ id, result });\n }\n }\n } catch (error) {\n self.postMessage({ id, error: error.message });\n }\n };\n\n // SharedArrayBuffer处理函数 - 由子类定义\n function processSharedArrayBuffer(startIndex, endIndex, deltaTime, systemConfig) {\n if (!sharedFloatArray) return;\n\n ${i?`\n // 用户定义的处理函数\n const userProcessFunction = function(sharedFloatArray, startIndex, endIndex, deltaTime, systemConfig) {\n ${i}\n };\n userProcessFunction(sharedFloatArray, startIndex, endIndex, deltaTime, systemConfig);\n `:""}\n }\n `}process(e){if(!this.isProcessing){this.isProcessing=!0;try{this.config.enableWorker&&this.workerPool?this.config.useSharedArrayBuffer&&this.sharedFloatArray&&this.isSharedArrayBufferSupported()?this.processWithSharedArrayBuffer(e).finally((()=>{this.isProcessing=!1})):(this.config.useSharedArrayBuffer&&this.logger.info(`${this.systemName}: 本帧降级到传统Worker模式`),this.processWithWorker(e).finally((()=>{this.isProcessing=!1}))):(this.hasLoggedSyncMode||(this.logger.info(`${this.systemName}: Worker不可用,使用同步处理`),this.hasLoggedSyncMode=!0),this.processSynchronously(e),this.isProcessing=!1)}catch(e){throw this.isProcessing=!1,this.logger.error(`${this.systemName}: 处理失败`,e),e}}}async processWithSharedArrayBuffer(e){if(!this.sharedFloatArray)throw new Error("SharedArrayBuffer not initialized");this.writeEntitiesToSharedBuffer(e);const t=this.createSharedArrayBufferTasks(e.length);await Promise.all(t),this.readResultsFromSharedBuffer(e)}async processWithWorker(e){const t=[];for(let n=0;n<e.length;n++)t[n]=this.extractEntityData(e[n]);const n=this.createBatches(t),i=s.deltaTime,r=n.map((e=>this.workerPool.execute({entities:e,deltaTime:i,systemConfig:this.config.systemConfig}))),o=await Promise.all(r);let a=0;for(const t of o)for(const n of t){if(a<e.length){const t=e[a];t&&n&&this.applyResult(t,n)}a++}}processSynchronously(e){const t=e.map((e=>this.extractEntityData(e))),n=s.deltaTime,i=this.workerProcess(t,n,this.config.systemConfig);i&&"function"==typeof i.then?i.then((t=>{e.forEach(((e,n)=>{this.applyResult(e,t[n])}))})):e.forEach(((e,t)=>{this.applyResult(e,i[t])}))}createBatches(e){const t=this.config.workerCount,n=[];if(this.config.entitiesPerWorker){const s=this.config.entitiesPerWorker;for(let t=0;t<e.length;t+=s){const i=Math.min(t+s,e.length);n.push(e.slice(t,i))}n.length>t&&this.logger.warn(`${this.systemName}: 创建了 ${n.length} 个批次,但只有 ${t} 个Worker。某些Worker将依次处理多个批次。`)}else{const s=Math.ceil(e.length/t);for(let i=0;i<t;i++){const t=i*s,r=Math.min(t+s,e.length);t<e.length&&n.push(e.slice(t,r))}}return n}writeEntitiesToSharedBuffer(e){if(this.sharedFloatArray)for(let t=0;t<e.length&&t<this.config.maxEntities;t++){const n=e[t],s=this.extractEntityData(n),i=t*this.config.entityDataSize;this.writeEntityToBuffer(s,i)}}createSharedArrayBufferTasks(e){const t=[];if(this.config.entitiesPerWorker){const n=this.config.entitiesPerWorker,i=Math.ceil(e/n),r=this.config.workerCount;i>r&&this.logger.warn(`${this.systemName}: 需要 ${i} 个任务处理 ${e} 个实体(每任务 ${n} 个),但只有 ${r} 个Worker。某些Worker将依次处理多个任务。`);for(let i=0;i<e;i+=n){const r=i,o=Math.min(i+n,e),a=this.workerPool.executeSharedBuffer({startIndex:r,endIndex:o,deltaTime:s.deltaTime,systemConfig:this.config.systemConfig});t.push(a)}}else{const n=Math.ceil(e/this.config.workerCount);for(let i=0;i<this.config.workerCount;i++){const r=i*n,o=Math.min(r+n,e);if(r<e){const e=this.workerPool.executeSharedBuffer({startIndex:r,endIndex:o,deltaTime:s.deltaTime,systemConfig:this.config.systemConfig});t.push(e)}}}return t}readResultsFromSharedBuffer(e){if(this.sharedFloatArray)for(let t=0;t<e.length&&t<this.config.maxEntities;t++){const n=e[t],s=t*this.config.entityDataSize,i=this.readEntityFromBuffer(s);i&&this.applyResult(n,i)}}updateConfig(e){const t={...this.config};if(void 0!==e.workerCount){const t=this.getMaxSystemWorkerCount(),n=Math.min(e.workerCount,t);e.workerCount>t&&this.logger.warn(`请求 ${e.workerCount} 个Worker,但系统最多支持 ${t} 个。实际使用 ${n} 个Worker。`),e.workerCount=n}Object.assign(this.config,e),t.useSharedArrayBuffer===this.config.useSharedArrayBuffer?t.workerCount===this.config.workerCount?(!this.config.enableWorker&&this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.config.enableWorker&&!this.workerPool&&this.isWorkerSupported()&&this.initializeWorkerPool()):this.reinitializeWorkerPool():this.reinitializeWorkerSystem()}reinitializeWorkerSystem(){this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.sharedBuffer=null,this.sharedFloatArray=null,this.config.useSharedArrayBuffer||(this.config.workerCount=1),this.config.enableWorker&&this.isWorkerSupported()&&(this.config.useSharedArrayBuffer&&this.initializeSharedArrayBuffer(),this.initializeWorkerPool())}reinitializeWorkerPool(){this.workerPool&&(this.workerPool.destroy(),this.workerPool=null),this.config.enableWorker&&this.isWorkerSupported()&&this.initializeWorkerPool()}getWorkerInfo(){let e="sync";return this.config.enableWorker&&this.workerPool&&(e=this.config.useSharedArrayBuffer&&this.sharedFloatArray&&this.isSharedArrayBufferSupported()?"shared-buffer":"worker"),{enabled:this.config.enableWorker,workerCount:this.config.workerCount,...void 0!==this.config.entitiesPerWorker&&{entitiesPerWorker:this.config.entitiesPerWorker},maxSystemWorkerCount:this.getMaxSystemWorkerCount(),isProcessing:this.isProcessing,sharedArrayBufferSupported:this.isSharedArrayBufferSupported(),sharedArrayBufferEnabled:this.config.useSharedArrayBuffer,currentMode:e}}onDestroy(){super.onDestroy(),this.workerPool&&(this.workerPool.destroy(),this.workerPool=null)}getLoggerName(){return A(this)}},exports.World=Ve,exports.WorldManager=et,exports.addAndConfigure=function(e,t,n){return e.addComponent(t),n(t),e},exports.buildEntity=function(e){return new pt(e)},exports.createECSAPI=je,exports.createInstance=d,exports.createLogger=N,exports.createQuery=function(){return new Ae},exports.getBasicWorkerConfig=function(){return ht.getInstance().getBasicWorkerConfig()},exports.getComponentInstanceTypeName=w,exports.getComponentTypeName=b,exports.getComponents=function(e,...t){return t.map((t=>e.getComponent(t)))},exports.getCurrentAdapter=function(){return ht.getInstance().getAdapter()},exports.getEntityRefMetadata=F,exports.getFullPlatformConfig=function(){return ht.getInstance().getFullPlatformConfig()},exports.getOrAddComponent=function(e,t,n){let s=e.getComponent(t);return s||(s=n(),e.addComponent(s)),s},exports.getSceneByEntityId=x,exports.getSerializationMetadata=ke,exports.getSystemInstanceTypeName=A,exports.getSystemMetadata=E,exports.getSystemTypeName=T,exports.getUpdatableMetadata=g,exports.hasAdapter=function(){return ht.getInstance().hasAdapter()},exports.hasAnyComponent=function(e,...t){return t.some((t=>e.hasComponent(t)))},exports.hasComponents=function(e,...t){return t.every((t=>e.hasComponent(t)))},exports.hasEntityRef=function(e){return null!==F(e)},exports.isComponentArray=function(e){return e.every(mt)},exports.isComponentType=mt,exports.isSerializable=function(e){return null!==ke(e)},exports.isUpdatable=m,exports.queryFor=function(e){return new Ae([e])},exports.queryForAll=function(...e){return new Ae(e)},exports.registerInjectable=function(e,t,n=!0){if(!u(t))throw new Error(`${t.name} is not marked as @Injectable(). Please add @Injectable() decorator to the class.`);const s=e=>d(t,e);n?e.registerSingleton(t,s):e.registerTransient(t,s)},exports.registerPlatformAdapter=function(e){return ht.getInstance().registerAdapter(e)},exports.requireComponent=function(e,t){const n=e.getComponent(t);if(!n)throw new Error(`Component ${t.name} not found on entity ${e.name} (id: ${e.id})`);return n},exports.resetLoggerColors=function(){z.getInstance().resetColors()},exports.setGlobalLogLevel=function(e){z.getInstance().setGlobalLevel(e)},exports.setLoggerColors=function(e){z.getInstance().setGlobalColors(e)},exports.setLoggerFactory=function(e){z.getInstance().setLoggerFactory(e)},exports.supportsFeature=function(e){return ht.getInstance().supportsFeature(e)},exports.tryGetComponent=function(e,t){const n=e.getComponent(t);return null!==n?n:void 0},exports.updateComponent=function(e,t,n){const s=e.getComponent(t);return!!s&&(Object.assign(s,n),!0)};
4
2
  //# sourceMappingURL=index.cjs.map