@esengine/ecs-framework 2.0.5 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/bin/Core.js +23 -21
  2. package/bin/Core.js.map +1 -1
  3. package/bin/ECS/Component.js +5 -1
  4. package/bin/ECS/Component.js.map +1 -1
  5. package/bin/ECS/Components/IUpdatable.js +7 -2
  6. package/bin/ECS/Components/IUpdatable.js.map +1 -1
  7. package/bin/ECS/Components/SceneComponent.js +5 -1
  8. package/bin/ECS/Components/SceneComponent.js.map +1 -1
  9. package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
  10. package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
  11. package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
  12. package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
  13. package/bin/ECS/Core/ComponentPool.d.ts +72 -0
  14. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  15. package/bin/ECS/Core/ComponentPool.js +128 -0
  16. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  17. package/bin/ECS/Core/ComponentStorage.js +9 -3
  18. package/bin/ECS/Core/ComponentStorage.js.map +1 -1
  19. package/bin/ECS/Core/EventSystem.js +13 -7
  20. package/bin/ECS/Core/EventSystem.js.map +1 -1
  21. package/bin/ECS/Core/FluentAPI.js +24 -17
  22. package/bin/ECS/Core/FluentAPI.js.map +1 -1
  23. package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
  24. package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
  25. package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
  26. package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
  27. package/bin/ECS/Core/QuerySystem.d.ts +292 -444
  28. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
  29. package/bin/ECS/Core/QuerySystem.js +661 -1075
  30. package/bin/ECS/Core/QuerySystem.js.map +1 -1
  31. package/bin/ECS/CoreEvents.js +5 -2
  32. package/bin/ECS/CoreEvents.js.map +1 -1
  33. package/bin/ECS/Entity.js +18 -14
  34. package/bin/ECS/Entity.js.map +1 -1
  35. package/bin/ECS/Scene.d.ts +18 -2
  36. package/bin/ECS/Scene.d.ts.map +1 -1
  37. package/bin/ECS/Scene.js +72 -27
  38. package/bin/ECS/Scene.js.map +1 -1
  39. package/bin/ECS/Systems/EntitySystem.js +9 -5
  40. package/bin/ECS/Systems/EntitySystem.js.map +1 -1
  41. package/bin/ECS/Systems/IntervalSystem.js +8 -4
  42. package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
  43. package/bin/ECS/Systems/PassiveSystem.js +6 -2
  44. package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
  45. package/bin/ECS/Systems/ProcessingSystem.js +6 -2
  46. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
  47. package/bin/ECS/Systems/index.js +11 -4
  48. package/bin/ECS/Systems/index.js.map +1 -1
  49. package/bin/ECS/Utils/Bits.js +5 -1
  50. package/bin/ECS/Utils/Bits.js.map +1 -1
  51. package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
  52. package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
  53. package/bin/ECS/Utils/EntityList.js +5 -1
  54. package/bin/ECS/Utils/EntityList.js.map +1 -1
  55. package/bin/ECS/Utils/EntityProcessorList.js +5 -1
  56. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
  57. package/bin/ECS/Utils/IdentifierPool.js +5 -1
  58. package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
  59. package/bin/ECS/Utils/Matcher.js +8 -4
  60. package/bin/ECS/Utils/Matcher.js.map +1 -1
  61. package/bin/ECS/Utils/index.js +15 -6
  62. package/bin/ECS/Utils/index.js.map +1 -1
  63. package/bin/ECS/index.js +27 -6
  64. package/bin/ECS/index.js.map +1 -1
  65. package/bin/Testing/Performance/benchmark.d.ts +6 -0
  66. package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
  67. package/bin/Testing/Performance/benchmark.js +639 -0
  68. package/bin/Testing/Performance/benchmark.js.map +1 -0
  69. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
  70. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
  71. package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
  72. package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
  73. package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
  74. package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
  75. package/bin/Testing/Unit/component-pool.test.js +149 -0
  76. package/bin/Testing/Unit/component-pool.test.js.map +1 -0
  77. package/bin/Testing/test-runner.d.ts +51 -0
  78. package/bin/Testing/test-runner.d.ts.map +1 -0
  79. package/bin/Testing/test-runner.js +159 -0
  80. package/bin/Testing/test-runner.js.map +1 -0
  81. package/bin/Types/index.js +7 -4
  82. package/bin/Types/index.js.map +1 -1
  83. package/bin/Utils/Emitter.js +7 -2
  84. package/bin/Utils/Emitter.js.map +1 -1
  85. package/bin/Utils/Extensions/NumberExtension.js +5 -1
  86. package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
  87. package/bin/Utils/Extensions/TypeUtils.js +5 -1
  88. package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
  89. package/bin/Utils/Extensions/index.js +7 -2
  90. package/bin/Utils/Extensions/index.js.map +1 -1
  91. package/bin/Utils/GlobalManager.js +5 -1
  92. package/bin/Utils/GlobalManager.js.map +1 -1
  93. package/bin/Utils/PerformanceMonitor.js +9 -5
  94. package/bin/Utils/PerformanceMonitor.js.map +1 -1
  95. package/bin/Utils/Pool.js +9 -3
  96. package/bin/Utils/Pool.js.map +1 -1
  97. package/bin/Utils/Time.js +5 -1
  98. package/bin/Utils/Time.js.map +1 -1
  99. package/bin/Utils/Timers/ITimer.js +2 -1
  100. package/bin/Utils/Timers/Timer.js +7 -3
  101. package/bin/Utils/Timers/Timer.js.map +1 -1
  102. package/bin/Utils/Timers/TimerManager.js +8 -4
  103. package/bin/Utils/Timers/TimerManager.js.map +1 -1
  104. package/bin/Utils/WasmCore.d.ts +234 -0
  105. package/bin/Utils/WasmCore.d.ts.map +1 -0
  106. package/bin/Utils/WasmCore.js +634 -0
  107. package/bin/Utils/WasmCore.js.map +1 -0
  108. package/bin/Utils/index.d.ts +10 -0
  109. package/bin/Utils/index.d.ts.map +1 -1
  110. package/bin/Utils/index.js +36 -5
  111. package/bin/Utils/index.js.map +1 -1
  112. package/bin/index.d.ts +1 -2
  113. package/bin/index.d.ts.map +1 -1
  114. package/bin/index.js +42 -14
  115. package/bin/index.js.map +1 -1
  116. package/package.json +54 -74
@@ -0,0 +1,634 @@
1
+ "use strict";
2
+ /**
3
+ * 统一的WASM ECS核心模块
4
+ *
5
+ * 为小游戏优化的高性能ECS引擎,提供简洁的API和自动回退机制
6
+ * 适用于NPM包发布和多种部署环境
7
+ *
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.Query = exports.ecsCore = exports.WasmEcsCore = void 0;
44
+ exports.initializeEcs = initializeEcs;
45
+ /**
46
+ * 统一的WASM ECS核心类
47
+ *
48
+ * 提供高性能的ECS操作,自动选择WASM或JavaScript实现
49
+ * 针对小游戏场景优化,易于使用且性能卓越
50
+ * 支持NPM包发布和多种部署环境
51
+ */
52
+ class WasmEcsCore {
53
+ constructor() {
54
+ /** WASM核心实例 */
55
+ this.wasmCore = null;
56
+ /** WASM模块 */
57
+ this.wasmModule = null;
58
+ /** 是否已初始化 */
59
+ this.initialized = false;
60
+ /** 是否使用WASM */
61
+ this.usingWasm = false;
62
+ this.silent = false;
63
+ // JavaScript回退实现
64
+ this.jsEntityMasks = new Map();
65
+ this.jsNextEntityId = 1;
66
+ this.jsQueryCount = 0;
67
+ this.jsUpdateCount = 0;
68
+ }
69
+ /**
70
+ * 设置静默模式
71
+ */
72
+ setSilent(silent) {
73
+ this.silent = silent;
74
+ }
75
+ /**
76
+ * 初始化ECS核心
77
+ *
78
+ * 尝试加载WASM模块,失败时自动回退到JavaScript实现
79
+ *
80
+ * @returns 初始化是否成功
81
+ */
82
+ async initialize() {
83
+ if (this.initialized)
84
+ return true;
85
+ if (!this.silent) {
86
+ console.log('🔄 初始化ECS核心...');
87
+ }
88
+ try {
89
+ // 尝试从bin目录加载WASM模块
90
+ const wasmPath = '../../bin/wasm/ecs_wasm_core';
91
+ if (!this.silent) {
92
+ console.log(`🔍 尝试加载WASM模块: ${wasmPath}`);
93
+ console.log(`📁 当前文件位置: ${typeof __filename !== 'undefined' ? __filename : 'unknown'}`);
94
+ console.log(`📂 工作目录: ${typeof process !== 'undefined' ? process.cwd() : 'unknown'}`);
95
+ // 计算绝对路径
96
+ if (typeof __filename !== 'undefined' && typeof require !== 'undefined') {
97
+ const path = require('path');
98
+ const fs = require('fs');
99
+ const currentDir = path.dirname(__filename);
100
+ const absoluteWasmPath = path.resolve(currentDir, wasmPath);
101
+ console.log(`📍 计算的绝对路径: ${absoluteWasmPath}`);
102
+ // 检查文件是否存在
103
+ const jsFile = absoluteWasmPath + '.js';
104
+ const wasmFile = path.resolve(currentDir, '../../bin/wasm/ecs_wasm_core_bg.wasm');
105
+ console.log(`📄 检查JS文件: ${jsFile} - ${fs.existsSync(jsFile) ? '存在' : '不存在'}`);
106
+ console.log(`📄 检查WASM文件: ${wasmFile} - ${fs.existsSync(wasmFile) ? '存在' : '不存在'}`);
107
+ }
108
+ }
109
+ this.wasmModule = await Promise.resolve(`${wasmPath}`).then(s => __importStar(require(s)));
110
+ if (!this.silent) {
111
+ console.log('✅ WASM模块导入成功,正在初始化...');
112
+ }
113
+ if (this.wasmModule) {
114
+ // 在初始化前,先检查.wasm文件的加载路径
115
+ if (!this.silent) {
116
+ console.log('🔍 WASM模块将尝试加载 .wasm 文件...');
117
+ // 模拟WASM模块内部的路径计算
118
+ if (typeof __filename !== 'undefined' && typeof require !== 'undefined') {
119
+ const path = require('path');
120
+ const { pathToFileURL } = require('url');
121
+ const currentDir = path.dirname(__filename);
122
+ const wasmJsFile = path.resolve(currentDir, '../../bin/wasm/ecs_wasm_core.js');
123
+ const wasmBgFile = path.resolve(currentDir, '../../bin/wasm/ecs_wasm_core_bg.wasm');
124
+ const wasmJsUrl = pathToFileURL(wasmJsFile).href;
125
+ const expectedWasmUrl = new URL('ecs_wasm_core_bg.wasm', wasmJsUrl).href;
126
+ console.log(`📍 WASM JS文件URL: ${wasmJsUrl}`);
127
+ console.log(`📍 预期的.wasm文件URL: ${expectedWasmUrl}`);
128
+ console.log(`📍 实际.wasm文件路径: ${wasmBgFile}`);
129
+ const fs = require('fs');
130
+ console.log(`📄 .wasm文件是否存在: ${fs.existsSync(wasmBgFile) ? '存在' : '不存在'}`);
131
+ }
132
+ }
133
+ // 在Node.js环境中,需要手动读取WASM文件
134
+ if (typeof require !== 'undefined') {
135
+ const fs = require('fs');
136
+ const path = require('path');
137
+ const currentDir = path.dirname(__filename);
138
+ const wasmPath = path.resolve(currentDir, '../../bin/wasm/ecs_wasm_core_bg.wasm');
139
+ if (!this.silent) {
140
+ console.log(`🔧 在Node.js环境中手动加载WASM文件: ${wasmPath}`);
141
+ }
142
+ if (fs.existsSync(wasmPath)) {
143
+ const wasmBytes = fs.readFileSync(wasmPath);
144
+ // 使用initSync同步初始化WASM模块
145
+ if (this.wasmModule.initSync) {
146
+ this.wasmModule.initSync(wasmBytes);
147
+ }
148
+ else {
149
+ await this.wasmModule.default({ module_or_path: wasmBytes });
150
+ }
151
+ }
152
+ else {
153
+ throw new Error(`WASM文件不存在: ${wasmPath}`);
154
+ }
155
+ }
156
+ else {
157
+ await this.wasmModule.default();
158
+ }
159
+ this.wasmCore = new this.wasmModule.EcsCore();
160
+ }
161
+ this.usingWasm = true;
162
+ if (!this.silent) {
163
+ console.log('✅ WASM模块加载成功');
164
+ }
165
+ }
166
+ catch (error) {
167
+ if (!this.silent) {
168
+ console.warn('⚠️ WASM加载失败,使用JavaScript实现');
169
+ console.warn(`❌ 错误详情: ${error}`);
170
+ }
171
+ this.usingWasm = false;
172
+ }
173
+ this.initialized = true;
174
+ if (!this.silent) {
175
+ console.log(`🎮 ECS核心初始化完成 (${this.usingWasm ? 'WASM' : 'JavaScript'})`);
176
+ }
177
+ return true;
178
+ }
179
+ /**
180
+ * 创建新实体
181
+ *
182
+ * @returns 新实体的ID
183
+ */
184
+ createEntity() {
185
+ this.ensureInitialized();
186
+ if (this.usingWasm && this.wasmCore) {
187
+ return this.wasmCore.create_entity();
188
+ }
189
+ else {
190
+ const entityId = this.jsNextEntityId++;
191
+ this.jsEntityMasks.set(entityId, BigInt(0));
192
+ return entityId;
193
+ }
194
+ }
195
+ /**
196
+ * 删除实体
197
+ *
198
+ * @param entityId 实体ID
199
+ * @returns 是否删除成功
200
+ */
201
+ destroyEntity(entityId) {
202
+ this.ensureInitialized();
203
+ if (this.usingWasm && this.wasmCore) {
204
+ return this.wasmCore.destroy_entity(entityId);
205
+ }
206
+ else {
207
+ return this.jsEntityMasks.delete(entityId);
208
+ }
209
+ }
210
+ /**
211
+ * 更新实体的组件掩码
212
+ *
213
+ * @param entityId 实体ID
214
+ * @param mask 组件掩码
215
+ */
216
+ updateEntityMask(entityId, mask) {
217
+ this.ensureInitialized();
218
+ if (this.usingWasm && this.wasmCore) {
219
+ this.wasmCore.update_entity_mask(entityId, mask);
220
+ }
221
+ else {
222
+ this.jsEntityMasks.set(entityId, mask);
223
+ this.jsUpdateCount++;
224
+ }
225
+ }
226
+ /**
227
+ * 批量更新实体掩码(高性能)
228
+ *
229
+ * @param entityIds 实体ID数组
230
+ * @param masks 组件掩码数组
231
+ */
232
+ batchUpdateMasks(entityIds, masks) {
233
+ this.ensureInitialized();
234
+ if (entityIds.length !== masks.length) {
235
+ throw new Error('实体ID和掩码数组长度必须相同');
236
+ }
237
+ if (this.usingWasm && this.wasmCore) {
238
+ const entityIdsArray = new Uint32Array(entityIds);
239
+ const masksArray = new BigUint64Array(masks);
240
+ this.wasmCore.batch_update_masks(entityIdsArray, masksArray);
241
+ }
242
+ else {
243
+ for (let i = 0; i < entityIds.length; i++) {
244
+ this.jsEntityMasks.set(entityIds[i], masks[i]);
245
+ }
246
+ this.jsUpdateCount += entityIds.length;
247
+ }
248
+ }
249
+ /**
250
+ * 查询包含指定组件的实体
251
+ *
252
+ * @param mask 组件掩码
253
+ * @param maxResults 最大结果数
254
+ * @returns 查询结果
255
+ */
256
+ queryEntities(mask, maxResults = 10000) {
257
+ this.ensureInitialized();
258
+ if (this.usingWasm && this.wasmCore) {
259
+ try {
260
+ const ptr = this.wasmCore.query_entities(mask, maxResults);
261
+ const count = this.wasmCore.get_query_result_count();
262
+ if (ptr && count > 0 && this.wasmModule?.memory) {
263
+ const entities = new Uint32Array(this.wasmModule.memory.buffer, ptr, count);
264
+ return {
265
+ entities: new Uint32Array(entities), // 创建副本以确保数据安全
266
+ count
267
+ };
268
+ }
269
+ else {
270
+ return { entities: new Uint32Array(0), count: 0 };
271
+ }
272
+ }
273
+ catch (error) {
274
+ if (!this.silent) {
275
+ console.warn('WASM查询失败,回退到JavaScript实现:', error);
276
+ }
277
+ // 回退到JavaScript实现
278
+ }
279
+ }
280
+ // JavaScript实现
281
+ this.jsQueryCount++;
282
+ const entities = [];
283
+ for (const [entityId, entityMask] of this.jsEntityMasks) {
284
+ if ((entityMask & mask) === mask) {
285
+ entities.push(entityId);
286
+ if (entities.length >= maxResults)
287
+ break;
288
+ }
289
+ }
290
+ return {
291
+ entities: new Uint32Array(entities),
292
+ count: entities.length
293
+ };
294
+ }
295
+ /**
296
+ * 查询指定掩码的实体(带缓存优化)
297
+ *
298
+ * @param mask 组件掩码
299
+ * @returns 查询结果
300
+ */
301
+ queryCached(mask) {
302
+ this.ensureInitialized();
303
+ if (this.usingWasm && this.wasmCore) {
304
+ try {
305
+ const ptr = this.wasmCore.query_cached(mask);
306
+ const count = this.wasmCore.get_cached_query_count(mask);
307
+ if (ptr && count > 0 && this.wasmModule?.memory) {
308
+ const entities = new Uint32Array(this.wasmModule.memory.buffer, ptr, count);
309
+ return {
310
+ entities: new Uint32Array(entities), // 复制数据
311
+ count
312
+ };
313
+ }
314
+ return { entities: new Uint32Array(0), count: 0 };
315
+ }
316
+ catch (error) {
317
+ if (!this.silent) {
318
+ console.warn('WASM缓存查询失败,回退到通用查询:', error);
319
+ }
320
+ // 回退到通用查询
321
+ return this.queryEntities(mask);
322
+ }
323
+ }
324
+ // JavaScript实现 - 直接使用通用查询
325
+ return this.queryEntities(mask);
326
+ }
327
+ /**
328
+ * 查询包含多个组件的实体
329
+ *
330
+ * @param masks 组件掩码数组
331
+ * @param maxResults 最大结果数
332
+ * @returns 查询结果
333
+ */
334
+ queryMultipleComponents(masks, maxResults = 10000) {
335
+ this.ensureInitialized();
336
+ if (this.usingWasm && this.wasmCore) {
337
+ try {
338
+ const masksArray = new BigUint64Array(masks);
339
+ const ptr = this.wasmCore.query_multiple_components(masksArray, maxResults);
340
+ if (ptr && this.wasmModule?.memory) {
341
+ // 暂时返回空结果,需要实现内存访问
342
+ return { entities: new Uint32Array(0), count: 0 };
343
+ }
344
+ return { entities: new Uint32Array(0), count: 0 };
345
+ }
346
+ catch (error) {
347
+ if (!this.silent) {
348
+ console.warn('WASM多组件查询失败,回退到JavaScript实现:', error);
349
+ }
350
+ // 回退到JavaScript实现
351
+ }
352
+ }
353
+ // JavaScript实现
354
+ this.jsQueryCount++;
355
+ const entities = [];
356
+ for (const [entityId, entityMask] of this.jsEntityMasks) {
357
+ let hasAll = true;
358
+ for (const mask of masks) {
359
+ if ((entityMask & mask) !== mask) {
360
+ hasAll = false;
361
+ break;
362
+ }
363
+ }
364
+ if (hasAll) {
365
+ entities.push(entityId);
366
+ if (entities.length >= maxResults)
367
+ break;
368
+ }
369
+ }
370
+ return {
371
+ entities: new Uint32Array(entities),
372
+ count: entities.length
373
+ };
374
+ }
375
+ /**
376
+ * 排除查询:包含某些组件但不包含其他组件
377
+ *
378
+ * @param includeMask 必须包含的组件掩码
379
+ * @param excludeMask 必须排除的组件掩码
380
+ * @param maxResults 最大结果数
381
+ * @returns 查询结果
382
+ */
383
+ queryWithExclusion(includeMask, excludeMask, maxResults = 10000) {
384
+ this.ensureInitialized();
385
+ if (this.usingWasm && this.wasmCore) {
386
+ try {
387
+ const ptr = this.wasmCore.query_with_exclusion(includeMask, excludeMask, maxResults);
388
+ if (ptr && this.wasmModule?.memory) {
389
+ // 暂时返回空结果,需要实现内存访问
390
+ return { entities: new Uint32Array(0), count: 0 };
391
+ }
392
+ return { entities: new Uint32Array(0), count: 0 };
393
+ }
394
+ catch (error) {
395
+ if (!this.silent) {
396
+ console.warn('WASM排除查询失败,回退到JavaScript实现:', error);
397
+ }
398
+ // 回退到JavaScript实现
399
+ }
400
+ }
401
+ // JavaScript实现
402
+ this.jsQueryCount++;
403
+ const entities = [];
404
+ for (const [entityId, entityMask] of this.jsEntityMasks) {
405
+ if ((entityMask & includeMask) === includeMask && (entityMask & excludeMask) === BigInt(0)) {
406
+ entities.push(entityId);
407
+ if (entities.length >= maxResults)
408
+ break;
409
+ }
410
+ }
411
+ return {
412
+ entities: new Uint32Array(entities),
413
+ count: entities.length
414
+ };
415
+ }
416
+ /**
417
+ * 获取实体的组件掩码
418
+ *
419
+ * @param entityId 实体ID
420
+ * @returns 组件掩码,如果实体不存在则返回null
421
+ */
422
+ getEntityMask(entityId) {
423
+ this.ensureInitialized();
424
+ if (this.usingWasm && this.wasmCore) {
425
+ return this.wasmCore.get_entity_mask(entityId) || null;
426
+ }
427
+ else {
428
+ return this.jsEntityMasks.get(entityId) || null;
429
+ }
430
+ }
431
+ /**
432
+ * 检查实体是否存在
433
+ *
434
+ * @param entityId 实体ID
435
+ * @returns 是否存在
436
+ */
437
+ entityExists(entityId) {
438
+ this.ensureInitialized();
439
+ if (this.usingWasm && this.wasmCore) {
440
+ return this.wasmCore.entity_exists(entityId);
441
+ }
442
+ else {
443
+ return this.jsEntityMasks.has(entityId);
444
+ }
445
+ }
446
+ /**
447
+ * 创建组件掩码
448
+ *
449
+ * @param componentIds 组件ID数组
450
+ * @returns 组件掩码
451
+ */
452
+ createComponentMask(componentIds) {
453
+ if (this.usingWasm && this.wasmModule) {
454
+ return this.wasmModule.create_component_mask(new Uint32Array(componentIds));
455
+ }
456
+ else {
457
+ let mask = BigInt(0);
458
+ for (const id of componentIds) {
459
+ if (id < 64) {
460
+ mask |= BigInt(1) << BigInt(id);
461
+ }
462
+ }
463
+ return mask;
464
+ }
465
+ }
466
+ /**
467
+ * 检查掩码是否包含组件
468
+ *
469
+ * @param mask 组件掩码
470
+ * @param componentId 组件ID
471
+ * @returns 是否包含
472
+ */
473
+ maskContainsComponent(mask, componentId) {
474
+ if (this.usingWasm && this.wasmModule) {
475
+ return this.wasmModule.mask_contains_component(mask, componentId);
476
+ }
477
+ else {
478
+ if (componentId >= 64)
479
+ return false;
480
+ return (mask & (BigInt(1) << BigInt(componentId))) !== BigInt(0);
481
+ }
482
+ }
483
+ /**
484
+ * 获取性能统计信息
485
+ *
486
+ * @returns 性能统计
487
+ */
488
+ getPerformanceStats() {
489
+ this.ensureInitialized();
490
+ if (this.usingWasm && this.wasmCore) {
491
+ const stats = Array.from(this.wasmCore.get_performance_stats());
492
+ return {
493
+ entityCount: stats[0],
494
+ indexCount: stats[1],
495
+ queryCount: stats[2],
496
+ updateCount: stats[3],
497
+ wasmEnabled: true
498
+ };
499
+ }
500
+ else {
501
+ return {
502
+ entityCount: this.jsEntityMasks.size,
503
+ indexCount: 0,
504
+ queryCount: this.jsQueryCount,
505
+ updateCount: this.jsUpdateCount,
506
+ wasmEnabled: false
507
+ };
508
+ }
509
+ }
510
+ /**
511
+ * 清空所有数据
512
+ */
513
+ clear() {
514
+ this.ensureInitialized();
515
+ if (this.usingWasm && this.wasmCore) {
516
+ this.wasmCore.clear();
517
+ }
518
+ else {
519
+ this.jsEntityMasks.clear();
520
+ this.jsNextEntityId = 1;
521
+ this.jsQueryCount = 0;
522
+ this.jsUpdateCount = 0;
523
+ }
524
+ }
525
+ /**
526
+ * 是否使用WASM实现
527
+ *
528
+ * @returns 是否使用WASM
529
+ */
530
+ isUsingWasm() {
531
+ return this.usingWasm;
532
+ }
533
+ /**
534
+ * 是否已初始化
535
+ *
536
+ * @returns 是否已初始化
537
+ */
538
+ isInitialized() {
539
+ return this.initialized;
540
+ }
541
+ /**
542
+ * 确保已初始化
543
+ */
544
+ ensureInitialized() {
545
+ if (!this.initialized) {
546
+ throw new Error('ECS核心未初始化,请先调用 initialize()');
547
+ }
548
+ }
549
+ /**
550
+ * 清理资源
551
+ */
552
+ cleanup() {
553
+ if (this.usingWasm && this.wasmCore) {
554
+ try {
555
+ this.wasmCore.free?.();
556
+ }
557
+ catch (error) {
558
+ if (!this.silent) {
559
+ console.warn('⚠️ 清理WASM资源时出错:', error);
560
+ }
561
+ }
562
+ }
563
+ this.wasmCore = null;
564
+ this.wasmModule = null;
565
+ this.jsEntityMasks.clear();
566
+ this.initialized = false;
567
+ this.usingWasm = false;
568
+ }
569
+ }
570
+ exports.WasmEcsCore = WasmEcsCore;
571
+ /**
572
+ * 全局ECS核心实例
573
+ *
574
+ * 提供单例模式的ECS核心,确保整个应用使用同一个实例
575
+ */
576
+ exports.ecsCore = new WasmEcsCore();
577
+ /**
578
+ * 初始化ECS引擎
579
+ *
580
+ * 便捷的初始化函数,推荐在应用启动时调用
581
+ *
582
+ * @param silent 是否静默模式
583
+ * @returns 初始化是否成功
584
+ *
585
+ * @example
586
+ * ```typescript
587
+ * import { initializeEcs } from 'ecs-framework';
588
+ *
589
+ * async function main() {
590
+ * // 使用默认配置(JavaScript实现)
591
+ * await initializeEcs();
592
+ *
593
+ * // 或者自定义配置
594
+ * await initializeEcs({
595
+ * enabled: false, // 禁用WASM
596
+ * silent: true // 静默模式
597
+ * });
598
+ * }
599
+ * ```
600
+ */
601
+ async function initializeEcs(silent = false) {
602
+ exports.ecsCore.setSilent(silent);
603
+ return exports.ecsCore.initialize();
604
+ }
605
+ /**
606
+ * 快速查询工具函数
607
+ *
608
+ * 为常见查询操作提供便捷的API
609
+ */
610
+ exports.Query = {
611
+ /**
612
+ * 查询拥有指定组件的所有实体
613
+ */
614
+ withComponent: (componentId, maxResults) => {
615
+ const mask = exports.ecsCore.createComponentMask([componentId]);
616
+ return exports.ecsCore.queryEntities(mask, maxResults);
617
+ },
618
+ /**
619
+ * 查询拥有多个组件的实体
620
+ */
621
+ withComponents: (componentIds, maxResults) => {
622
+ const masks = componentIds.map(id => exports.ecsCore.createComponentMask([id]));
623
+ return exports.ecsCore.queryMultipleComponents(masks, maxResults);
624
+ },
625
+ /**
626
+ * 查询拥有某些组件但不拥有其他组件的实体
627
+ */
628
+ withExclusion: (includeIds, excludeIds, maxResults) => {
629
+ const includeMask = exports.ecsCore.createComponentMask(includeIds);
630
+ const excludeMask = exports.ecsCore.createComponentMask(excludeIds);
631
+ return exports.ecsCore.queryWithExclusion(includeMask, excludeMask, maxResults);
632
+ }
633
+ };
634
+ //# sourceMappingURL=WasmCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmCore.js","sourceRoot":"","sources":["../../src/Utils/WasmCore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
+ /**
2
+ * 工具模块导出
3
+ */
1
4
  export * from './Extensions';
2
5
  export * from './Pool';
6
+ export * from './Emitter';
7
+ export * from './GlobalManager';
3
8
  export * from './PerformanceMonitor';
4
9
  export { Time } from './Time';
10
+ /**
11
+ * WebAssembly核心模块
12
+ * 提供高性能的ECS查询和计算功能
13
+ */
14
+ export { WasmEcsCore, ecsCore, initializeEcs, Query, EntityId, ComponentMask, QueryResult, PerformanceStats } from './WasmCore';
5
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B;;;GAGG;AACH,OAAO,EACH,WAAW,EACX,OAAO,EACP,aAAa,EACb,KAAK,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,gBAAgB,EACnB,MAAM,YAAY,CAAC"}