@esengine/ecs-framework 2.1.4 → 2.1.5

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 (201) hide show
  1. package/README.md +385 -0
  2. package/{bin/index.d.ts → index.d.ts} +9 -6
  3. package/index.js +7 -0
  4. package/index.js.map +7 -0
  5. package/package.json +20 -46
  6. package/bin/Core.d.ts +0 -198
  7. package/bin/Core.d.ts.map +0 -1
  8. package/bin/Core.js +0 -247
  9. package/bin/Core.js.map +0 -1
  10. package/bin/ECS/Component.d.ts +0 -119
  11. package/bin/ECS/Component.d.ts.map +0 -1
  12. package/bin/ECS/Component.js +0 -129
  13. package/bin/ECS/Component.js.map +0 -1
  14. package/bin/ECS/Components/IUpdatable.d.ts +0 -22
  15. package/bin/ECS/Components/IUpdatable.d.ts.map +0 -1
  16. package/bin/ECS/Components/IUpdatable.js +0 -22
  17. package/bin/ECS/Components/IUpdatable.js.map +0 -1
  18. package/bin/ECS/Components/SceneComponent.d.ts +0 -40
  19. package/bin/ECS/Components/SceneComponent.d.ts.map +0 -1
  20. package/bin/ECS/Components/SceneComponent.js +0 -61
  21. package/bin/ECS/Components/SceneComponent.js.map +0 -1
  22. package/bin/ECS/Core/BitMaskOptimizer.d.ts +0 -75
  23. package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +0 -1
  24. package/bin/ECS/Core/BitMaskOptimizer.js +0 -161
  25. package/bin/ECS/Core/BitMaskOptimizer.js.map +0 -1
  26. package/bin/ECS/Core/ComponentPool.d.ts +0 -72
  27. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  28. package/bin/ECS/Core/ComponentPool.js +0 -123
  29. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  30. package/bin/ECS/Core/ComponentStorage.d.ts +0 -182
  31. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  32. package/bin/ECS/Core/ComponentStorage.js +0 -346
  33. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  34. package/bin/ECS/Core/EventSystem.d.ts +0 -236
  35. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  36. package/bin/ECS/Core/EventSystem.js +0 -476
  37. package/bin/ECS/Core/EventSystem.js.map +0 -1
  38. package/bin/ECS/Core/FluentAPI.d.ts +0 -371
  39. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  40. package/bin/ECS/Core/FluentAPI.js +0 -543
  41. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  42. package/bin/ECS/Core/IndexUpdateBatcher.d.ts +0 -100
  43. package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +0 -1
  44. package/bin/ECS/Core/IndexUpdateBatcher.js +0 -219
  45. package/bin/ECS/Core/IndexUpdateBatcher.js.map +0 -1
  46. package/bin/ECS/Core/QuerySystem.d.ts +0 -422
  47. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  48. package/bin/ECS/Core/QuerySystem.js +0 -937
  49. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  50. package/bin/ECS/CoreEvents.d.ts +0 -19
  51. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  52. package/bin/ECS/CoreEvents.js +0 -20
  53. package/bin/ECS/CoreEvents.js.map +0 -1
  54. package/bin/ECS/Entity.d.ts +0 -538
  55. package/bin/ECS/Entity.d.ts.map +0 -1
  56. package/bin/ECS/Entity.js +0 -1030
  57. package/bin/ECS/Entity.js.map +0 -1
  58. package/bin/ECS/Scene.d.ts +0 -226
  59. package/bin/ECS/Scene.d.ts.map +0 -1
  60. package/bin/ECS/Scene.js +0 -308
  61. package/bin/ECS/Scene.js.map +0 -1
  62. package/bin/ECS/Systems/EntitySystem.d.ts +0 -185
  63. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  64. package/bin/ECS/Systems/EntitySystem.js +0 -278
  65. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  66. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  67. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  68. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  69. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  70. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -20
  71. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  72. package/bin/ECS/Systems/PassiveSystem.js +0 -21
  73. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  74. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -24
  75. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  76. package/bin/ECS/Systems/ProcessingSystem.js +0 -22
  77. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  78. package/bin/ECS/Systems/index.d.ts +0 -5
  79. package/bin/ECS/Systems/index.d.ts.map +0 -1
  80. package/bin/ECS/Systems/index.js +0 -6
  81. package/bin/ECS/Systems/index.js.map +0 -1
  82. package/bin/ECS/Utils/Bits.d.ts +0 -74
  83. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  84. package/bin/ECS/Utils/Bits.js +0 -142
  85. package/bin/ECS/Utils/Bits.js.map +0 -1
  86. package/bin/ECS/Utils/ComponentTypeManager.d.ts +0 -50
  87. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +0 -1
  88. package/bin/ECS/Utils/ComponentTypeManager.js +0 -84
  89. package/bin/ECS/Utils/ComponentTypeManager.js.map +0 -1
  90. package/bin/ECS/Utils/EntityList.d.ts +0 -108
  91. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  92. package/bin/ECS/Utils/EntityList.js +0 -249
  93. package/bin/ECS/Utils/EntityList.js.map +0 -1
  94. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -53
  95. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  96. package/bin/ECS/Utils/EntityProcessorList.js +0 -96
  97. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  98. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -18
  99. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  100. package/bin/ECS/Utils/IdentifierPool.js +0 -27
  101. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  102. package/bin/ECS/Utils/Matcher.d.ts +0 -63
  103. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  104. package/bin/ECS/Utils/Matcher.js +0 -140
  105. package/bin/ECS/Utils/Matcher.js.map +0 -1
  106. package/bin/ECS/Utils/index.d.ts +0 -7
  107. package/bin/ECS/Utils/index.d.ts.map +0 -1
  108. package/bin/ECS/Utils/index.js +0 -8
  109. package/bin/ECS/Utils/index.js.map +0 -1
  110. package/bin/ECS/index.d.ts +0 -7
  111. package/bin/ECS/index.d.ts.map +0 -1
  112. package/bin/ECS/index.js +0 -29
  113. package/bin/ECS/index.js.map +0 -1
  114. package/bin/Testing/Performance/benchmark.d.ts +0 -6
  115. package/bin/Testing/Performance/benchmark.d.ts.map +0 -1
  116. package/bin/Testing/Performance/benchmark.js +0 -639
  117. package/bin/Testing/Performance/benchmark.js.map +0 -1
  118. package/bin/Testing/Performance/component-performance.d.ts +0 -2
  119. package/bin/Testing/Performance/component-performance.d.ts.map +0 -1
  120. package/bin/Testing/Performance/component-performance.js +0 -43
  121. package/bin/Testing/Performance/component-performance.js.map +0 -1
  122. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +0 -2
  123. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +0 -1
  124. package/bin/Testing/Unit/bitmask-optimizer.test.js +0 -164
  125. package/bin/Testing/Unit/bitmask-optimizer.test.js.map +0 -1
  126. package/bin/Testing/Unit/component-pool.test.d.ts +0 -5
  127. package/bin/Testing/Unit/component-pool.test.d.ts.map +0 -1
  128. package/bin/Testing/Unit/component-pool.test.js +0 -149
  129. package/bin/Testing/Unit/component-pool.test.js.map +0 -1
  130. package/bin/Testing/test-runner.d.ts +0 -51
  131. package/bin/Testing/test-runner.d.ts.map +0 -1
  132. package/bin/Testing/test-runner.js +0 -159
  133. package/bin/Testing/test-runner.js.map +0 -1
  134. package/bin/Types/index.d.ts +0 -22
  135. package/bin/Types/index.d.ts.map +0 -1
  136. package/bin/Types/index.js +0 -20
  137. package/bin/Types/index.js.map +0 -1
  138. package/bin/Utils/Emitter.d.ts +0 -43
  139. package/bin/Utils/Emitter.d.ts.map +0 -1
  140. package/bin/Utils/Emitter.js +0 -69
  141. package/bin/Utils/Emitter.js.map +0 -1
  142. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  143. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  144. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  145. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  146. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  147. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  148. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  149. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  150. package/bin/Utils/Extensions/index.d.ts +0 -3
  151. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  152. package/bin/Utils/Extensions/index.js +0 -4
  153. package/bin/Utils/Extensions/index.js.map +0 -1
  154. package/bin/Utils/GlobalManager.d.ts +0 -32
  155. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  156. package/bin/Utils/GlobalManager.js +0 -53
  157. package/bin/Utils/GlobalManager.js.map +0 -1
  158. package/bin/Utils/PerformanceMonitor.d.ts +0 -211
  159. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  160. package/bin/Utils/PerformanceMonitor.js +0 -270
  161. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  162. package/bin/Utils/Pool.d.ts +0 -239
  163. package/bin/Utils/Pool.d.ts.map +0 -1
  164. package/bin/Utils/Pool.js +0 -449
  165. package/bin/Utils/Pool.js.map +0 -1
  166. package/bin/Utils/Time.d.ts +0 -55
  167. package/bin/Utils/Time.d.ts.map +0 -1
  168. package/bin/Utils/Time.js +0 -78
  169. package/bin/Utils/Time.js.map +0 -1
  170. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  171. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  172. package/bin/Utils/Timers/ITimer.js +0 -2
  173. package/bin/Utils/Timers/ITimer.js.map +0 -1
  174. package/bin/Utils/Timers/Timer.d.ts +0 -22
  175. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  176. package/bin/Utils/Timers/Timer.js +0 -46
  177. package/bin/Utils/Timers/Timer.js.map +0 -1
  178. package/bin/Utils/Timers/TimerManager.d.ts +0 -19
  179. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  180. package/bin/Utils/Timers/TimerManager.js +0 -33
  181. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  182. package/bin/Utils/WasmCore.d.ts +0 -234
  183. package/bin/Utils/WasmCore.d.ts.map +0 -1
  184. package/bin/Utils/WasmCore.js +0 -596
  185. package/bin/Utils/WasmCore.js.map +0 -1
  186. package/bin/Utils/index.d.ts +0 -16
  187. package/bin/Utils/index.d.ts.map +0 -1
  188. package/bin/Utils/index.js +0 -37
  189. package/bin/Utils/index.js.map +0 -1
  190. package/bin/index.cjs +0 -51
  191. package/bin/index.d.ts.map +0 -1
  192. package/bin/index.esm.d.ts +0 -45
  193. package/bin/index.esm.d.ts.map +0 -1
  194. package/bin/index.esm.js +0 -46
  195. package/bin/index.esm.js.map +0 -1
  196. package/bin/index.js.map +0 -1
  197. package/bin/wasm/ecs_wasm_core.d.ts +0 -141
  198. package/bin/wasm/ecs_wasm_core.js +0 -415
  199. package/bin/wasm/ecs_wasm_core_bg.wasm +0 -0
  200. package/bin/wasm/ecs_wasm_core_bg.wasm.d.ts +0 -29
  201. package/bin/wasm/package.json +0 -15
@@ -1,249 +0,0 @@
1
- /**
2
- * 高性能实体列表管理器
3
- * 管理场景中的所有实体,支持快速查找和批量操作
4
- */
5
- export class EntityList {
6
- get count() {
7
- return this.buffer.length;
8
- }
9
- constructor(scene) {
10
- this.buffer = [];
11
- // 索引映射,提升查找性能
12
- this._idToEntity = new Map();
13
- this._nameToEntities = new Map();
14
- // 延迟操作队列
15
- this._entitiesToAdd = [];
16
- this._entitiesToRemove = [];
17
- this._isUpdating = false;
18
- this._scene = scene;
19
- }
20
- /**
21
- * 添加实体(立即添加或延迟添加)
22
- * @param entity 要添加的实体
23
- */
24
- add(entity) {
25
- if (this._isUpdating) {
26
- // 如果正在更新中,延迟添加
27
- this._entitiesToAdd.push(entity);
28
- }
29
- else {
30
- this.addImmediate(entity);
31
- }
32
- }
33
- /**
34
- * 立即添加实体
35
- * @param entity 要添加的实体
36
- */
37
- addImmediate(entity) {
38
- // 检查是否已存在
39
- if (this._idToEntity.has(entity.id)) {
40
- return;
41
- }
42
- this.buffer.push(entity);
43
- this._idToEntity.set(entity.id, entity);
44
- // 更新名称索引
45
- this.updateNameIndex(entity, true);
46
- }
47
- /**
48
- * 移除实体(立即移除或延迟移除)
49
- * @param entity 要移除的实体
50
- */
51
- remove(entity) {
52
- if (this._isUpdating) {
53
- // 如果正在更新中,延迟移除
54
- this._entitiesToRemove.push(entity);
55
- }
56
- else {
57
- this.removeImmediate(entity);
58
- }
59
- }
60
- /**
61
- * 立即移除实体
62
- * @param entity 要移除的实体
63
- */
64
- removeImmediate(entity) {
65
- const index = this.buffer.indexOf(entity);
66
- if (index !== -1) {
67
- this.buffer.splice(index, 1);
68
- this._idToEntity.delete(entity.id);
69
- // 更新名称索引
70
- this.updateNameIndex(entity, false);
71
- }
72
- }
73
- /**
74
- * 移除所有实体
75
- */
76
- removeAllEntities() {
77
- for (let i = this.buffer.length - 1; i >= 0; i--) {
78
- this.buffer[i].destroy();
79
- }
80
- this.buffer.length = 0;
81
- this._idToEntity.clear();
82
- this._nameToEntities.clear();
83
- this._entitiesToAdd.length = 0;
84
- this._entitiesToRemove.length = 0;
85
- }
86
- /**
87
- * 更新实体列表,处理延迟操作
88
- */
89
- updateLists() {
90
- // 处理延迟添加的实体
91
- if (this._entitiesToAdd.length > 0) {
92
- for (const entity of this._entitiesToAdd) {
93
- this.addImmediate(entity);
94
- }
95
- this._entitiesToAdd.length = 0;
96
- }
97
- // 处理延迟移除的实体
98
- if (this._entitiesToRemove.length > 0) {
99
- for (const entity of this._entitiesToRemove) {
100
- this.removeImmediate(entity);
101
- }
102
- this._entitiesToRemove.length = 0;
103
- }
104
- }
105
- /**
106
- * 更新所有实体
107
- */
108
- update() {
109
- this._isUpdating = true;
110
- try {
111
- for (let i = 0; i < this.buffer.length; i++) {
112
- const entity = this.buffer[i];
113
- if (entity.enabled && !entity.isDestroyed) {
114
- entity.update();
115
- }
116
- }
117
- }
118
- finally {
119
- this._isUpdating = false;
120
- }
121
- // 处理延迟操作
122
- this.updateLists();
123
- }
124
- /**
125
- * 根据名称查找实体(使用索引,O(1)复杂度)
126
- * @param name 实体名称
127
- * @returns 找到的第一个实体或null
128
- */
129
- findEntity(name) {
130
- const entities = this._nameToEntities.get(name);
131
- return entities && entities.length > 0 ? entities[0] : null;
132
- }
133
- /**
134
- * 根据名称查找所有实体
135
- * @param name 实体名称
136
- * @returns 找到的所有实体数组
137
- */
138
- findEntitiesByName(name) {
139
- return this._nameToEntities.get(name) || [];
140
- }
141
- /**
142
- * 根据ID查找实体(使用索引,O(1)复杂度)
143
- * @param id 实体ID
144
- * @returns 找到的实体或null
145
- */
146
- findEntityById(id) {
147
- return this._idToEntity.get(id) || null;
148
- }
149
- /**
150
- * 根据标签查找实体
151
- * @param tag 标签
152
- * @returns 找到的所有实体数组
153
- */
154
- findEntitiesByTag(tag) {
155
- const result = [];
156
- for (const entity of this.buffer) {
157
- if (entity.tag === tag) {
158
- result.push(entity);
159
- }
160
- }
161
- return result;
162
- }
163
- /**
164
- * 根据组件类型查找实体
165
- * @param componentType 组件类型
166
- * @returns 找到的所有实体数组
167
- */
168
- findEntitiesWithComponent(componentType) {
169
- const result = [];
170
- for (const entity of this.buffer) {
171
- if (entity.hasComponent(componentType)) {
172
- result.push(entity);
173
- }
174
- }
175
- return result;
176
- }
177
- /**
178
- * 批量操作:对所有实体执行指定操作
179
- * @param action 要执行的操作
180
- */
181
- forEach(action) {
182
- for (const entity of this.buffer) {
183
- action(entity);
184
- }
185
- }
186
- /**
187
- * 批量操作:对符合条件的实体执行指定操作
188
- * @param predicate 筛选条件
189
- * @param action 要执行的操作
190
- */
191
- forEachWhere(predicate, action) {
192
- for (const entity of this.buffer) {
193
- if (predicate(entity)) {
194
- action(entity);
195
- }
196
- }
197
- }
198
- /**
199
- * 更新名称索引
200
- * @param entity 实体
201
- * @param isAdd 是否为添加操作
202
- */
203
- updateNameIndex(entity, isAdd) {
204
- if (!entity.name) {
205
- return;
206
- }
207
- if (isAdd) {
208
- let entities = this._nameToEntities.get(entity.name);
209
- if (!entities) {
210
- entities = [];
211
- this._nameToEntities.set(entity.name, entities);
212
- }
213
- entities.push(entity);
214
- }
215
- else {
216
- const entities = this._nameToEntities.get(entity.name);
217
- if (entities) {
218
- const index = entities.indexOf(entity);
219
- if (index !== -1) {
220
- entities.splice(index, 1);
221
- // 如果数组为空,删除映射
222
- if (entities.length === 0) {
223
- this._nameToEntities.delete(entity.name);
224
- }
225
- }
226
- }
227
- }
228
- }
229
- /**
230
- * 获取实体列表的统计信息
231
- * @returns 统计信息
232
- */
233
- getStats() {
234
- let activeCount = 0;
235
- for (const entity of this.buffer) {
236
- if (entity.enabled && !entity.isDestroyed) {
237
- activeCount++;
238
- }
239
- }
240
- return {
241
- totalEntities: this.buffer.length,
242
- activeEntities: activeCount,
243
- pendingAdd: this._entitiesToAdd.length,
244
- pendingRemove: this._entitiesToRemove.length,
245
- nameIndexSize: this._nameToEntities.size
246
- };
247
- }
248
- }
249
- //# sourceMappingURL=EntityList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityList.js","sourceRoot":"","sources":["../../../src/ECS/Utils/EntityList.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import { EntitySystem } from '../Systems/EntitySystem';
2
- /**
3
- * 实体处理器列表管理器
4
- * 管理场景中的所有实体系统
5
- */
6
- export declare class EntityProcessorList {
7
- private _processors;
8
- private _isDirty;
9
- /**
10
- * 设置为脏状态,需要重新排序
11
- */
12
- setDirty(): void;
13
- /**
14
- * 添加实体处理器
15
- * @param processor 要添加的处理器
16
- */
17
- add(processor: EntitySystem): void;
18
- /**
19
- * 移除实体处理器
20
- * @param processor 要移除的处理器
21
- */
22
- remove(processor: EntitySystem): void;
23
- /**
24
- * 获取指定类型的处理器
25
- * @param type 处理器类型
26
- */
27
- getProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T | null;
28
- /**
29
- * 开始处理
30
- */
31
- begin(): void;
32
- /**
33
- * 结束处理
34
- */
35
- end(): void;
36
- /**
37
- * 更新所有处理器
38
- */
39
- update(): void;
40
- /**
41
- * 后期更新所有处理器
42
- */
43
- lateUpdate(): void;
44
- /**
45
- * 排序处理器
46
- */
47
- private sortProcessors;
48
- /** 获取处理器列表 */
49
- get processors(): EntitySystem[];
50
- /** 获取处理器数量 */
51
- get count(): number;
52
- }
53
- //# sourceMappingURL=EntityProcessorList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityProcessorList.d.ts","sourceRoot":"","sources":["../../../src/ECS/Utils/EntityProcessorList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;;OAGG;IACI,GAAG,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAKzC;;;OAGG;IACI,MAAM,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAO5C;;;OAGG;IACI,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;IAStF;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACI,GAAG,IAAI,IAAI;IAIlB;;OAEG;IACI,MAAM,IAAI,IAAI;IAOrB;;OAEG;IACI,UAAU,IAAI,IAAI;IAMzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB,cAAc;IACd,IAAW,UAAU,mBAEpB;IAED,cAAc;IACd,IAAW,KAAK,WAEf;CAGJ"}
@@ -1,96 +0,0 @@
1
- /**
2
- * 实体处理器列表管理器
3
- * 管理场景中的所有实体系统
4
- */
5
- export class EntityProcessorList {
6
- constructor() {
7
- this._processors = [];
8
- this._isDirty = false;
9
- }
10
- /**
11
- * 设置为脏状态,需要重新排序
12
- */
13
- setDirty() {
14
- this._isDirty = true;
15
- }
16
- /**
17
- * 添加实体处理器
18
- * @param processor 要添加的处理器
19
- */
20
- add(processor) {
21
- this._processors.push(processor);
22
- this.setDirty();
23
- }
24
- /**
25
- * 移除实体处理器
26
- * @param processor 要移除的处理器
27
- */
28
- remove(processor) {
29
- const index = this._processors.indexOf(processor);
30
- if (index !== -1) {
31
- this._processors.splice(index, 1);
32
- }
33
- }
34
- /**
35
- * 获取指定类型的处理器
36
- * @param type 处理器类型
37
- */
38
- getProcessor(type) {
39
- for (const processor of this._processors) {
40
- if (processor instanceof type) {
41
- return processor;
42
- }
43
- }
44
- return null;
45
- }
46
- /**
47
- * 开始处理
48
- */
49
- begin() {
50
- this.sortProcessors();
51
- for (const processor of this._processors) {
52
- processor.initialize();
53
- }
54
- }
55
- /**
56
- * 结束处理
57
- */
58
- end() {
59
- // 清理处理器
60
- }
61
- /**
62
- * 更新所有处理器
63
- */
64
- update() {
65
- this.sortProcessors();
66
- for (const processor of this._processors) {
67
- processor.update();
68
- }
69
- }
70
- /**
71
- * 后期更新所有处理器
72
- */
73
- lateUpdate() {
74
- for (const processor of this._processors) {
75
- processor.lateUpdate();
76
- }
77
- }
78
- /**
79
- * 排序处理器
80
- */
81
- sortProcessors() {
82
- if (this._isDirty) {
83
- this._processors.sort((a, b) => a.updateOrder - b.updateOrder);
84
- this._isDirty = false;
85
- }
86
- }
87
- /** 获取处理器列表 */
88
- get processors() {
89
- return this._processors;
90
- }
91
- /** 获取处理器数量 */
92
- get count() {
93
- return this._processors.length;
94
- }
95
- }
96
- //# sourceMappingURL=EntityProcessorList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityProcessorList.js","sourceRoot":"","sources":["../../../src/ECS/Utils/EntityProcessorList.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAAhC;QACY,gBAAW,GAAmB,EAAE,CAAC;QACjC,aAAQ,GAAG,KAAK,CAAC;IAmG7B,CAAC;IAjGG;;OAEG;IACI,QAAQ;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,SAAuB;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,SAAuB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,YAAY,CAAyB,IAA+B;QACvE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,SAAS,YAAY,IAAI,EAAE,CAAC;gBAC5B,OAAO,SAAc,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAED;;OAEG;IACI,GAAG;QACN,QAAQ;IACZ,CAAC;IAED;;OAEG;IACI,MAAM;QACT,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,UAAU;QACb,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,cAAc;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,cAAc;IACd,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,cAAc;IACd,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACnC,CAAC;CAGJ"}
@@ -1,18 +0,0 @@
1
- /**
2
- * ID池管理器
3
- * 用于管理实体ID的分配和回收
4
- */
5
- export declare class IdentifierPool {
6
- private _nextAvailableId;
7
- private _ids;
8
- /**
9
- * 获取一个可用的ID
10
- */
11
- checkOut(): number;
12
- /**
13
- * 回收一个ID
14
- * @param id 要回收的ID
15
- */
16
- checkIn(id: number): void;
17
- }
18
- //# sourceMappingURL=IdentifierPool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IdentifierPool.d.ts","sourceRoot":"","sources":["../../../src/ECS/Utils/IdentifierPool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,IAAI,CAAgB;IAE5B;;OAEG;IACI,QAAQ,IAAI,MAAM;IAOzB;;;OAGG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGnC"}
@@ -1,27 +0,0 @@
1
- /**
2
- * ID池管理器
3
- * 用于管理实体ID的分配和回收
4
- */
5
- export class IdentifierPool {
6
- constructor() {
7
- this._nextAvailableId = 0;
8
- this._ids = [];
9
- }
10
- /**
11
- * 获取一个可用的ID
12
- */
13
- checkOut() {
14
- if (this._ids.length > 0) {
15
- return this._ids.pop();
16
- }
17
- return this._nextAvailableId++;
18
- }
19
- /**
20
- * 回收一个ID
21
- * @param id 要回收的ID
22
- */
23
- checkIn(id) {
24
- this._ids.push(id);
25
- }
26
- }
27
- //# sourceMappingURL=IdentifierPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IdentifierPool.js","sourceRoot":"","sources":["../../../src/ECS/Utils/IdentifierPool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAA3B;QACY,qBAAgB,GAAG,CAAC,CAAC;QACrB,SAAI,GAAa,EAAE,CAAC;IAmBhC,CAAC;IAjBG;;OAEG;IACI,QAAQ;QACX,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,EAAU;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;CACJ"}
@@ -1,63 +0,0 @@
1
- import { Entity } from '../Entity';
2
- import { Component } from '../Component';
3
- import { Bits } from './Bits';
4
- /**
5
- * 高性能实体匹配器
6
- * 用于快速匹配符合条件的实体
7
- */
8
- export declare class Matcher {
9
- protected allSet: (new (...args: any[]) => Component)[];
10
- protected exclusionSet: (new (...args: any[]) => Component)[];
11
- protected oneSet: (new (...args: any[]) => Component)[];
12
- private _allBits?;
13
- private _exclusionBits?;
14
- private _oneBits?;
15
- private _isDirty;
16
- static empty(): Matcher;
17
- getAllSet(): (new (...args: any[]) => Component)[];
18
- getExclusionSet(): (new (...args: any[]) => Component)[];
19
- getOneSet(): (new (...args: any[]) => Component)[];
20
- /**
21
- * 检查实体是否匹配条件
22
- * @param entity 要检查的实体
23
- * @returns 是否匹配
24
- */
25
- isInterestedEntity(entity: Entity): boolean;
26
- /**
27
- * 检查组件位掩码是否匹配条件
28
- * @param componentBits 组件位掩码
29
- * @returns 是否匹配
30
- */
31
- isInterested(componentBits: Bits): boolean;
32
- /**
33
- * 添加所有包含的组件类型
34
- * @param types 所有包含的组件类型列表
35
- */
36
- all(...types: (new (...args: any[]) => Component)[]): Matcher;
37
- /**
38
- * 添加排除包含的组件类型
39
- * @param types 排除包含的组件类型列表
40
- */
41
- exclude(...types: (new (...args: any[]) => Component)[]): Matcher;
42
- /**
43
- * 添加至少包含其中之一的组件类型
44
- * @param types 至少包含其中之一的组件类型列表
45
- */
46
- one(...types: (new (...args: any[]) => Component)[]): Matcher;
47
- /**
48
- * 获取实体的组件位掩码
49
- * @param entity 实体
50
- * @returns 组件位掩码
51
- */
52
- private getEntityBits;
53
- /**
54
- * 如果位掩码已过期,则更新它们
55
- */
56
- private updateBitsIfDirty;
57
- /**
58
- * 创建匹配器的字符串表示(用于调试)
59
- * @returns 字符串表示
60
- */
61
- toString(): string;
62
- }
63
- //# sourceMappingURL=Matcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matcher.d.ts","sourceRoot":"","sources":["../../../src/ECS/Utils/Matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B;;;GAGG;AACH,qBAAa,OAAO;IAChB,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,CAAM;IAC7D,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,CAAM;IACnE,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,CAAM;IAG7D,OAAO,CAAC,QAAQ,CAAC,CAAO;IACxB,OAAO,CAAC,cAAc,CAAC,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAO;IACxB,OAAO,CAAC,QAAQ,CAAQ;WAEV,KAAK,IAAI,OAAO;IAIvB,SAAS,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE;IAIlD,eAAe,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE;IAIxD,SAAS,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE;IAIzD;;;;OAIG;IACI,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD;;;;OAIG;IACI,YAAY,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO;IAqBjD;;;OAGG;IACI,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,GAAG,OAAO;IAMpE;;;OAGG;IACI,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,GAAG,OAAO;IAMxE;;;OAGG;IACI,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,GAAG,OAAO;IAMpE;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAiB5B"}
@@ -1,140 +0,0 @@
1
- import { ComponentTypeManager } from './ComponentTypeManager';
2
- /**
3
- * 高性能实体匹配器
4
- * 用于快速匹配符合条件的实体
5
- */
6
- export class Matcher {
7
- constructor() {
8
- this.allSet = [];
9
- this.exclusionSet = [];
10
- this.oneSet = [];
11
- this._isDirty = true;
12
- }
13
- static empty() {
14
- return new Matcher();
15
- }
16
- getAllSet() {
17
- return this.allSet;
18
- }
19
- getExclusionSet() {
20
- return this.exclusionSet;
21
- }
22
- getOneSet() {
23
- return this.oneSet;
24
- }
25
- /**
26
- * 检查实体是否匹配条件
27
- * @param entity 要检查的实体
28
- * @returns 是否匹配
29
- */
30
- isInterestedEntity(entity) {
31
- const entityBits = this.getEntityBits(entity);
32
- return this.isInterested(entityBits);
33
- }
34
- /**
35
- * 检查组件位掩码是否匹配条件
36
- * @param componentBits 组件位掩码
37
- * @returns 是否匹配
38
- */
39
- isInterested(componentBits) {
40
- this.updateBitsIfDirty();
41
- // 检查必须包含的组件
42
- if (this._allBits && !componentBits.containsAll(this._allBits)) {
43
- return false;
44
- }
45
- // 检查排除的组件
46
- if (this._exclusionBits && componentBits.intersects(this._exclusionBits)) {
47
- return false;
48
- }
49
- // 检查至少包含其中之一的组件
50
- if (this._oneBits && !componentBits.intersects(this._oneBits)) {
51
- return false;
52
- }
53
- return true;
54
- }
55
- /**
56
- * 添加所有包含的组件类型
57
- * @param types 所有包含的组件类型列表
58
- */
59
- all(...types) {
60
- this.allSet.push(...types);
61
- this._isDirty = true;
62
- return this;
63
- }
64
- /**
65
- * 添加排除包含的组件类型
66
- * @param types 排除包含的组件类型列表
67
- */
68
- exclude(...types) {
69
- this.exclusionSet.push(...types);
70
- this._isDirty = true;
71
- return this;
72
- }
73
- /**
74
- * 添加至少包含其中之一的组件类型
75
- * @param types 至少包含其中之一的组件类型列表
76
- */
77
- one(...types) {
78
- this.oneSet.push(...types);
79
- this._isDirty = true;
80
- return this;
81
- }
82
- /**
83
- * 获取实体的组件位掩码
84
- * @param entity 实体
85
- * @returns 组件位掩码
86
- */
87
- getEntityBits(entity) {
88
- const components = entity.components;
89
- return ComponentTypeManager.instance.getEntityBits(components);
90
- }
91
- /**
92
- * 如果位掩码已过期,则更新它们
93
- */
94
- updateBitsIfDirty() {
95
- if (!this._isDirty) {
96
- return;
97
- }
98
- const typeManager = ComponentTypeManager.instance;
99
- // 更新必须包含的组件位掩码
100
- if (this.allSet.length > 0) {
101
- this._allBits = typeManager.createBits(...this.allSet);
102
- }
103
- else {
104
- this._allBits = undefined;
105
- }
106
- // 更新排除的组件位掩码
107
- if (this.exclusionSet.length > 0) {
108
- this._exclusionBits = typeManager.createBits(...this.exclusionSet);
109
- }
110
- else {
111
- this._exclusionBits = undefined;
112
- }
113
- // 更新至少包含其中之一的组件位掩码
114
- if (this.oneSet.length > 0) {
115
- this._oneBits = typeManager.createBits(...this.oneSet);
116
- }
117
- else {
118
- this._oneBits = undefined;
119
- }
120
- this._isDirty = false;
121
- }
122
- /**
123
- * 创建匹配器的字符串表示(用于调试)
124
- * @returns 字符串表示
125
- */
126
- toString() {
127
- const parts = [];
128
- if (this.allSet.length > 0) {
129
- parts.push(`all: [${this.allSet.map(t => t.name).join(', ')}]`);
130
- }
131
- if (this.exclusionSet.length > 0) {
132
- parts.push(`exclude: [${this.exclusionSet.map(t => t.name).join(', ')}]`);
133
- }
134
- if (this.oneSet.length > 0) {
135
- parts.push(`one: [${this.oneSet.map(t => t.name).join(', ')}]`);
136
- }
137
- return `Matcher(${parts.join(', ')})`;
138
- }
139
- }
140
- //# sourceMappingURL=Matcher.js.map