@esengine/ecs-framework 2.0.6 → 2.0.8

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 (124) hide show
  1. package/bin/Core.js +21 -17
  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 +12 -6
  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 +17 -12
  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 +67 -19
  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 +7 -3
  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 +58 -74
  117. package/bin/Utils/AccelerationProvider.d.ts +0 -192
  118. package/bin/Utils/AccelerationProvider.d.ts.map +0 -1
  119. package/bin/Utils/AccelerationProvider.js +0 -261
  120. package/bin/Utils/AccelerationProvider.js.map +0 -1
  121. package/bin/Utils/WasmBridge.d.ts +0 -152
  122. package/bin/Utils/WasmBridge.d.ts.map +0 -1
  123. package/bin/Utils/WasmBridge.js +0 -336
  124. package/bin/Utils/WasmBridge.js.map +0 -1
@@ -0,0 +1,234 @@
1
+ /**
2
+ * 统一的WASM ECS核心模块
3
+ *
4
+ * 为小游戏优化的高性能ECS引擎,提供简洁的API和自动回退机制
5
+ * 适用于NPM包发布和多种部署环境
6
+ *
7
+ */
8
+ /** 实体ID类型 */
9
+ export type EntityId = number;
10
+ /** 组件掩码类型 */
11
+ export type ComponentMask = bigint;
12
+ /** 查询结果接口 */
13
+ export interface QueryResult {
14
+ /** 查询到的实体ID数组 */
15
+ entities: Uint32Array;
16
+ /** 实体数量 */
17
+ count: number;
18
+ }
19
+ /** 性能统计接口 */
20
+ export interface PerformanceStats {
21
+ /** 实体总数 */
22
+ entityCount: number;
23
+ /** 索引数量 */
24
+ indexCount: number;
25
+ /** 查询次数 */
26
+ queryCount: number;
27
+ /** 更新次数 */
28
+ updateCount: number;
29
+ /** 是否使用WASM */
30
+ wasmEnabled: boolean;
31
+ }
32
+ /**
33
+ * 统一的WASM ECS核心类
34
+ *
35
+ * 提供高性能的ECS操作,自动选择WASM或JavaScript实现
36
+ * 针对小游戏场景优化,易于使用且性能卓越
37
+ * 支持NPM包发布和多种部署环境
38
+ */
39
+ export declare class WasmEcsCore {
40
+ /** WASM核心实例 */
41
+ private wasmCore;
42
+ /** WASM模块 */
43
+ private wasmModule;
44
+ /** 是否已初始化 */
45
+ private initialized;
46
+ /** 是否使用WASM */
47
+ private usingWasm;
48
+ private silent;
49
+ private jsEntityMasks;
50
+ private jsNextEntityId;
51
+ private jsQueryCount;
52
+ private jsUpdateCount;
53
+ /**
54
+ * 设置静默模式
55
+ */
56
+ setSilent(silent: boolean): void;
57
+ /**
58
+ * 初始化ECS核心
59
+ *
60
+ * 尝试加载WASM模块,失败时自动回退到JavaScript实现
61
+ *
62
+ * @returns 初始化是否成功
63
+ */
64
+ initialize(): Promise<boolean>;
65
+ /**
66
+ * 创建新实体
67
+ *
68
+ * @returns 新实体的ID
69
+ */
70
+ createEntity(): EntityId;
71
+ /**
72
+ * 删除实体
73
+ *
74
+ * @param entityId 实体ID
75
+ * @returns 是否删除成功
76
+ */
77
+ destroyEntity(entityId: EntityId): boolean;
78
+ /**
79
+ * 更新实体的组件掩码
80
+ *
81
+ * @param entityId 实体ID
82
+ * @param mask 组件掩码
83
+ */
84
+ updateEntityMask(entityId: EntityId, mask: ComponentMask): void;
85
+ /**
86
+ * 批量更新实体掩码(高性能)
87
+ *
88
+ * @param entityIds 实体ID数组
89
+ * @param masks 组件掩码数组
90
+ */
91
+ batchUpdateMasks(entityIds: EntityId[], masks: ComponentMask[]): void;
92
+ /**
93
+ * 查询包含指定组件的实体
94
+ *
95
+ * @param mask 组件掩码
96
+ * @param maxResults 最大结果数
97
+ * @returns 查询结果
98
+ */
99
+ queryEntities(mask: ComponentMask, maxResults?: number): QueryResult;
100
+ /**
101
+ * 查询指定掩码的实体(带缓存优化)
102
+ *
103
+ * @param mask 组件掩码
104
+ * @returns 查询结果
105
+ */
106
+ queryCached(mask: ComponentMask): QueryResult;
107
+ /**
108
+ * 查询包含多个组件的实体
109
+ *
110
+ * @param masks 组件掩码数组
111
+ * @param maxResults 最大结果数
112
+ * @returns 查询结果
113
+ */
114
+ queryMultipleComponents(masks: ComponentMask[], maxResults?: number): QueryResult;
115
+ /**
116
+ * 排除查询:包含某些组件但不包含其他组件
117
+ *
118
+ * @param includeMask 必须包含的组件掩码
119
+ * @param excludeMask 必须排除的组件掩码
120
+ * @param maxResults 最大结果数
121
+ * @returns 查询结果
122
+ */
123
+ queryWithExclusion(includeMask: ComponentMask, excludeMask: ComponentMask, maxResults?: number): QueryResult;
124
+ /**
125
+ * 获取实体的组件掩码
126
+ *
127
+ * @param entityId 实体ID
128
+ * @returns 组件掩码,如果实体不存在则返回null
129
+ */
130
+ getEntityMask(entityId: EntityId): ComponentMask | null;
131
+ /**
132
+ * 检查实体是否存在
133
+ *
134
+ * @param entityId 实体ID
135
+ * @returns 是否存在
136
+ */
137
+ entityExists(entityId: EntityId): boolean;
138
+ /**
139
+ * 创建组件掩码
140
+ *
141
+ * @param componentIds 组件ID数组
142
+ * @returns 组件掩码
143
+ */
144
+ createComponentMask(componentIds: number[]): ComponentMask;
145
+ /**
146
+ * 检查掩码是否包含组件
147
+ *
148
+ * @param mask 组件掩码
149
+ * @param componentId 组件ID
150
+ * @returns 是否包含
151
+ */
152
+ maskContainsComponent(mask: ComponentMask, componentId: number): boolean;
153
+ /**
154
+ * 获取性能统计信息
155
+ *
156
+ * @returns 性能统计
157
+ */
158
+ getPerformanceStats(): PerformanceStats;
159
+ /**
160
+ * 清空所有数据
161
+ */
162
+ clear(): void;
163
+ /**
164
+ * 是否使用WASM实现
165
+ *
166
+ * @returns 是否使用WASM
167
+ */
168
+ isUsingWasm(): boolean;
169
+ /**
170
+ * 是否已初始化
171
+ *
172
+ * @returns 是否已初始化
173
+ */
174
+ isInitialized(): boolean;
175
+ /**
176
+ * 确保已初始化
177
+ */
178
+ private ensureInitialized;
179
+ /**
180
+ * 清理资源
181
+ */
182
+ cleanup(): void;
183
+ }
184
+ /**
185
+ * 全局ECS核心实例
186
+ *
187
+ * 提供单例模式的ECS核心,确保整个应用使用同一个实例
188
+ */
189
+ export declare const ecsCore: WasmEcsCore;
190
+ /**
191
+ * 初始化ECS引擎
192
+ *
193
+ * 便捷的初始化函数,推荐在应用启动时调用
194
+ *
195
+ * @param silent 是否静默模式
196
+ * @returns 初始化是否成功
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * import { initializeEcs } from 'ecs-framework';
201
+ *
202
+ * async function main() {
203
+ * // 使用默认配置(JavaScript实现)
204
+ * await initializeEcs();
205
+ *
206
+ * // 或者自定义配置
207
+ * await initializeEcs({
208
+ * enabled: false, // 禁用WASM
209
+ * silent: true // 静默模式
210
+ * });
211
+ * }
212
+ * ```
213
+ */
214
+ export declare function initializeEcs(silent?: boolean): Promise<boolean>;
215
+ /**
216
+ * 快速查询工具函数
217
+ *
218
+ * 为常见查询操作提供便捷的API
219
+ */
220
+ export declare const Query: {
221
+ /**
222
+ * 查询拥有指定组件的所有实体
223
+ */
224
+ withComponent: (componentId: number, maxResults?: number) => QueryResult;
225
+ /**
226
+ * 查询拥有多个组件的实体
227
+ */
228
+ withComponents: (componentIds: number[], maxResults?: number) => QueryResult;
229
+ /**
230
+ * 查询拥有某些组件但不拥有其他组件的实体
231
+ */
232
+ withExclusion: (includeIds: number[], excludeIds: number[], maxResults?: number) => QueryResult;
233
+ };
234
+ //# sourceMappingURL=WasmCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmCore.d.ts","sourceRoot":"","sources":["../../src/Utils/WasmCore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,aAAa;AACb,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,aAAa;AACb,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,aAAa;AACb,MAAM,WAAW,WAAW;IACxB,iBAAiB;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC7B,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,WAAW,EAAE,OAAO,CAAC;CACxB;AAgCD;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB,eAAe;IACf,OAAO,CAAC,QAAQ,CAAoC;IACpD,aAAa;IACb,OAAO,CAAC,UAAU,CAA2B;IAC7C,aAAa;IACb,OAAO,CAAC,WAAW,CAAS;IAC5B,eAAe;IACf,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IAIvB,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAE1B;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IA2GpC;;;;OAIG;IACH,YAAY,IAAI,QAAQ;IAYxB;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAU1C;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAW/D;;;;;OAKG;IACH,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI;IAmBrE;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,GAAE,MAAc,GAAG,WAAW;IA0C3E;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW;IA8B7C;;;;;;OAMG;IACH,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,UAAU,GAAE,MAAc,GAAG,WAAW;IA+CxF;;;;;;;OAOG;IACH,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,GAAE,MAAc,GAAG,WAAW;IAsCnH;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI;IAUvD;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAUzC;;;;;OAKG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,aAAa;IAc1D;;;;;;OAMG;IACH,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IASxE;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB;IAuBvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAiBlB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,aAAoB,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7E;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK;IACd;;OAEG;iCAC0B,MAAM,eAAe,MAAM,KAAG,WAAW;IAKtE;;OAEG;mCAC4B,MAAM,EAAE,eAAe,MAAM,KAAG,WAAW;IAK1E;;OAEG;gCACyB,MAAM,EAAE,cAAc,MAAM,EAAE,eAAe,MAAM,KAAG,WAAW;CAKhG,CAAC"}