@esengine/ecs-framework 2.0.3

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 (187) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +277 -0
  3. package/bin/Core.d.ts +198 -0
  4. package/bin/Core.d.ts.map +1 -0
  5. package/bin/Core.js +249 -0
  6. package/bin/Core.js.map +1 -0
  7. package/bin/ECS/Component.d.ts +119 -0
  8. package/bin/ECS/Component.d.ts.map +1 -0
  9. package/bin/ECS/Component.js +129 -0
  10. package/bin/ECS/Component.js.map +1 -0
  11. package/bin/ECS/Components/IUpdatable.d.ts +22 -0
  12. package/bin/ECS/Components/IUpdatable.d.ts.map +1 -0
  13. package/bin/ECS/Components/IUpdatable.js +17 -0
  14. package/bin/ECS/Components/IUpdatable.js.map +1 -0
  15. package/bin/ECS/Components/SceneComponent.d.ts +40 -0
  16. package/bin/ECS/Components/SceneComponent.d.ts.map +1 -0
  17. package/bin/ECS/Components/SceneComponent.js +57 -0
  18. package/bin/ECS/Components/SceneComponent.js.map +1 -0
  19. package/bin/ECS/Core/ComponentStorage.d.ts +182 -0
  20. package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
  21. package/bin/ECS/Core/ComponentStorage.js +346 -0
  22. package/bin/ECS/Core/ComponentStorage.js.map +1 -0
  23. package/bin/ECS/Core/EventSystem.d.ts +236 -0
  24. package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
  25. package/bin/ECS/Core/EventSystem.js +476 -0
  26. package/bin/ECS/Core/EventSystem.js.map +1 -0
  27. package/bin/ECS/Core/FluentAPI.d.ts +392 -0
  28. package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
  29. package/bin/ECS/Core/FluentAPI.js +575 -0
  30. package/bin/ECS/Core/FluentAPI.js.map +1 -0
  31. package/bin/ECS/Core/QuerySystem.d.ts +574 -0
  32. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
  33. package/bin/ECS/Core/QuerySystem.js +1356 -0
  34. package/bin/ECS/Core/QuerySystem.js.map +1 -0
  35. package/bin/ECS/CoreEvents.d.ts +19 -0
  36. package/bin/ECS/CoreEvents.d.ts.map +1 -0
  37. package/bin/ECS/CoreEvents.js +20 -0
  38. package/bin/ECS/CoreEvents.js.map +1 -0
  39. package/bin/ECS/Entity.d.ts +585 -0
  40. package/bin/ECS/Entity.d.ts.map +1 -0
  41. package/bin/ECS/Entity.js +1079 -0
  42. package/bin/ECS/Entity.js.map +1 -0
  43. package/bin/ECS/Scene.d.ts +210 -0
  44. package/bin/ECS/Scene.d.ts.map +1 -0
  45. package/bin/ECS/Scene.js +267 -0
  46. package/bin/ECS/Scene.js.map +1 -0
  47. package/bin/ECS/Systems/EntitySystem.d.ts +185 -0
  48. package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
  49. package/bin/ECS/Systems/EntitySystem.js +278 -0
  50. package/bin/ECS/Systems/EntitySystem.js.map +1 -0
  51. package/bin/ECS/Systems/IntervalSystem.d.ts +33 -0
  52. package/bin/ECS/Systems/IntervalSystem.d.ts.map +1 -0
  53. package/bin/ECS/Systems/IntervalSystem.js +50 -0
  54. package/bin/ECS/Systems/IntervalSystem.js.map +1 -0
  55. package/bin/ECS/Systems/PassiveSystem.d.ts +20 -0
  56. package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
  57. package/bin/ECS/Systems/PassiveSystem.js +21 -0
  58. package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
  59. package/bin/ECS/Systems/ProcessingSystem.d.ts +24 -0
  60. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
  61. package/bin/ECS/Systems/ProcessingSystem.js +22 -0
  62. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -0
  63. package/bin/ECS/Systems/index.d.ts +5 -0
  64. package/bin/ECS/Systems/index.d.ts.map +1 -0
  65. package/bin/ECS/Systems/index.js +6 -0
  66. package/bin/ECS/Systems/index.js.map +1 -0
  67. package/bin/ECS/Transform.d.ts +178 -0
  68. package/bin/ECS/Transform.d.ts.map +1 -0
  69. package/bin/ECS/Transform.js +249 -0
  70. package/bin/ECS/Transform.js.map +1 -0
  71. package/bin/ECS/Utils/Bits.d.ts +74 -0
  72. package/bin/ECS/Utils/Bits.d.ts.map +1 -0
  73. package/bin/ECS/Utils/Bits.js +142 -0
  74. package/bin/ECS/Utils/Bits.js.map +1 -0
  75. package/bin/ECS/Utils/ComponentTypeManager.d.ts +50 -0
  76. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +1 -0
  77. package/bin/ECS/Utils/ComponentTypeManager.js +84 -0
  78. package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -0
  79. package/bin/ECS/Utils/EntityList.d.ts +108 -0
  80. package/bin/ECS/Utils/EntityList.d.ts.map +1 -0
  81. package/bin/ECS/Utils/EntityList.js +249 -0
  82. package/bin/ECS/Utils/EntityList.js.map +1 -0
  83. package/bin/ECS/Utils/EntityProcessorList.d.ts +53 -0
  84. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
  85. package/bin/ECS/Utils/EntityProcessorList.js +96 -0
  86. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
  87. package/bin/ECS/Utils/IdentifierPool.d.ts +18 -0
  88. package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
  89. package/bin/ECS/Utils/IdentifierPool.js +27 -0
  90. package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
  91. package/bin/ECS/Utils/Matcher.d.ts +63 -0
  92. package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
  93. package/bin/ECS/Utils/Matcher.js +140 -0
  94. package/bin/ECS/Utils/Matcher.js.map +1 -0
  95. package/bin/ECS/Utils/index.d.ts +7 -0
  96. package/bin/ECS/Utils/index.d.ts.map +1 -0
  97. package/bin/ECS/Utils/index.js +8 -0
  98. package/bin/ECS/Utils/index.js.map +1 -0
  99. package/bin/ECS/index.d.ts +8 -0
  100. package/bin/ECS/index.d.ts.map +1 -0
  101. package/bin/ECS/index.js +9 -0
  102. package/bin/ECS/index.js.map +1 -0
  103. package/bin/Math/Edge.d.ts +23 -0
  104. package/bin/Math/Edge.d.ts.map +1 -0
  105. package/bin/Math/Edge.js +24 -0
  106. package/bin/Math/Edge.js.map +1 -0
  107. package/bin/Math/MathHelper.d.ts +75 -0
  108. package/bin/Math/MathHelper.d.ts.map +1 -0
  109. package/bin/Math/MathHelper.js +91 -0
  110. package/bin/Math/MathHelper.js.map +1 -0
  111. package/bin/Math/Rectangle.d.ts +126 -0
  112. package/bin/Math/Rectangle.d.ts.map +1 -0
  113. package/bin/Math/Rectangle.js +181 -0
  114. package/bin/Math/Rectangle.js.map +1 -0
  115. package/bin/Math/Vector2.d.ts +229 -0
  116. package/bin/Math/Vector2.d.ts.map +1 -0
  117. package/bin/Math/Vector2.js +338 -0
  118. package/bin/Math/Vector2.js.map +1 -0
  119. package/bin/Math/index.d.ts +5 -0
  120. package/bin/Math/index.d.ts.map +1 -0
  121. package/bin/Math/index.js +6 -0
  122. package/bin/Math/index.js.map +1 -0
  123. package/bin/Types/index.d.ts +22 -0
  124. package/bin/Types/index.d.ts.map +1 -0
  125. package/bin/Types/index.js +20 -0
  126. package/bin/Types/index.js.map +1 -0
  127. package/bin/Utils/Emitter.d.ts +43 -0
  128. package/bin/Utils/Emitter.d.ts.map +1 -0
  129. package/bin/Utils/Emitter.js +69 -0
  130. package/bin/Utils/Emitter.js.map +1 -0
  131. package/bin/Utils/Extensions/EdgeExt.d.ts +26 -0
  132. package/bin/Utils/Extensions/EdgeExt.d.ts.map +1 -0
  133. package/bin/Utils/Extensions/EdgeExt.js +41 -0
  134. package/bin/Utils/Extensions/EdgeExt.js.map +1 -0
  135. package/bin/Utils/Extensions/NumberExtension.d.ts +13 -0
  136. package/bin/Utils/Extensions/NumberExtension.d.ts.map +1 -0
  137. package/bin/Utils/Extensions/NumberExtension.js +17 -0
  138. package/bin/Utils/Extensions/NumberExtension.js.map +1 -0
  139. package/bin/Utils/Extensions/TypeUtils.d.ts +13 -0
  140. package/bin/Utils/Extensions/TypeUtils.d.ts.map +1 -0
  141. package/bin/Utils/Extensions/TypeUtils.js +15 -0
  142. package/bin/Utils/Extensions/TypeUtils.js.map +1 -0
  143. package/bin/Utils/Extensions/index.d.ts +4 -0
  144. package/bin/Utils/Extensions/index.d.ts.map +1 -0
  145. package/bin/Utils/Extensions/index.js +5 -0
  146. package/bin/Utils/Extensions/index.js.map +1 -0
  147. package/bin/Utils/GlobalManager.d.ts +32 -0
  148. package/bin/Utils/GlobalManager.d.ts.map +1 -0
  149. package/bin/Utils/GlobalManager.js +53 -0
  150. package/bin/Utils/GlobalManager.js.map +1 -0
  151. package/bin/Utils/PerformanceMonitor.d.ts +211 -0
  152. package/bin/Utils/PerformanceMonitor.d.ts.map +1 -0
  153. package/bin/Utils/PerformanceMonitor.js +270 -0
  154. package/bin/Utils/PerformanceMonitor.js.map +1 -0
  155. package/bin/Utils/Pool.d.ts +239 -0
  156. package/bin/Utils/Pool.d.ts.map +1 -0
  157. package/bin/Utils/Pool.js +449 -0
  158. package/bin/Utils/Pool.js.map +1 -0
  159. package/bin/Utils/Screen.d.ts +12 -0
  160. package/bin/Utils/Screen.d.ts.map +1 -0
  161. package/bin/Utils/Screen.js +14 -0
  162. package/bin/Utils/Screen.js.map +1 -0
  163. package/bin/Utils/Time.d.ts +55 -0
  164. package/bin/Utils/Time.d.ts.map +1 -0
  165. package/bin/Utils/Time.js +78 -0
  166. package/bin/Utils/Time.js.map +1 -0
  167. package/bin/Utils/Timers/ITimer.d.ts +16 -0
  168. package/bin/Utils/Timers/ITimer.d.ts.map +1 -0
  169. package/bin/Utils/Timers/ITimer.js +2 -0
  170. package/bin/Utils/Timers/ITimer.js.map +1 -0
  171. package/bin/Utils/Timers/Timer.d.ts +22 -0
  172. package/bin/Utils/Timers/Timer.d.ts.map +1 -0
  173. package/bin/Utils/Timers/Timer.js +46 -0
  174. package/bin/Utils/Timers/Timer.js.map +1 -0
  175. package/bin/Utils/Timers/TimerManager.d.ts +19 -0
  176. package/bin/Utils/Timers/TimerManager.d.ts.map +1 -0
  177. package/bin/Utils/Timers/TimerManager.js +33 -0
  178. package/bin/Utils/Timers/TimerManager.js.map +1 -0
  179. package/bin/Utils/index.d.ts +6 -0
  180. package/bin/Utils/index.d.ts.map +1 -0
  181. package/bin/Utils/index.js +7 -0
  182. package/bin/Utils/index.js.map +1 -0
  183. package/bin/index.d.ts +21 -0
  184. package/bin/index.d.ts.map +1 -0
  185. package/bin/index.js +26 -0
  186. package/bin/index.js.map +1 -0
  187. package/package.json +68 -0
@@ -0,0 +1,575 @@
1
+ import { Entity } from '../Entity';
2
+ import { Scene } from '../Scene';
3
+ /**
4
+ * 实体构建器 - 提供流式API创建和配置实体
5
+ */
6
+ export class EntityBuilder {
7
+ constructor(scene, storageManager) {
8
+ this.scene = scene;
9
+ this.storageManager = storageManager;
10
+ this.entity = new Entity("", scene.identifierPool.checkOut());
11
+ }
12
+ /**
13
+ * 设置实体名称
14
+ * @param name 实体名称
15
+ * @returns 实体构建器
16
+ */
17
+ named(name) {
18
+ this.entity.name = name;
19
+ return this;
20
+ }
21
+ /**
22
+ * 设置实体标签
23
+ * @param tag 标签
24
+ * @returns 实体构建器
25
+ */
26
+ tagged(tag) {
27
+ this.entity.tag = tag;
28
+ return this;
29
+ }
30
+ /**
31
+ * 添加组件
32
+ * @param component 组件实例
33
+ * @returns 实体构建器
34
+ */
35
+ with(component) {
36
+ this.entity.addComponent(component);
37
+ return this;
38
+ }
39
+ /**
40
+ * 添加多个组件
41
+ * @param components 组件数组
42
+ * @returns 实体构建器
43
+ */
44
+ withComponents(...components) {
45
+ for (const component of components) {
46
+ this.entity.addComponent(component);
47
+ }
48
+ return this;
49
+ }
50
+ /**
51
+ * 条件性添加组件
52
+ * @param condition 条件
53
+ * @param component 组件实例
54
+ * @returns 实体构建器
55
+ */
56
+ withIf(condition, component) {
57
+ if (condition) {
58
+ this.entity.addComponent(component);
59
+ }
60
+ return this;
61
+ }
62
+ /**
63
+ * 使用工厂函数创建并添加组件
64
+ * @param factory 组件工厂函数
65
+ * @returns 实体构建器
66
+ */
67
+ withFactory(factory) {
68
+ const component = factory();
69
+ this.entity.addComponent(component);
70
+ return this;
71
+ }
72
+ /**
73
+ * 配置组件属性
74
+ * @param componentType 组件类型
75
+ * @param configurator 配置函数
76
+ * @returns 实体构建器
77
+ */
78
+ configure(componentType, configurator) {
79
+ const component = this.entity.getComponent(componentType);
80
+ if (component) {
81
+ configurator(component);
82
+ }
83
+ return this;
84
+ }
85
+ /**
86
+ * 设置实体位置(如果有Transform组件)
87
+ * @param x X坐标
88
+ * @param y Y坐标
89
+ * @param z Z坐标(可选)
90
+ * @returns 实体构建器
91
+ */
92
+ at(x, y, z = 0) {
93
+ // 直接使用Entity的position属性
94
+ this.entity.position.x = x;
95
+ this.entity.position.y = y;
96
+ return this;
97
+ }
98
+ /**
99
+ * 设置实体旋转(如果有Transform组件)
100
+ * @param rotation 旋转角度
101
+ * @returns 实体构建器
102
+ */
103
+ rotated(rotation) {
104
+ this.entity.rotation = rotation;
105
+ return this;
106
+ }
107
+ /**
108
+ * 设置实体缩放(如果有Transform组件)
109
+ * @param scaleX X轴缩放
110
+ * @param scaleY Y轴缩放(可选,默认与X轴相同)
111
+ * @returns 实体构建器
112
+ */
113
+ scaled(scaleX, scaleY) {
114
+ this.entity.scale.x = scaleX;
115
+ this.entity.scale.y = scaleY !== undefined ? scaleY : scaleX;
116
+ return this;
117
+ }
118
+ /**
119
+ * 设置实体为启用状态
120
+ * @param enabled 是否启用
121
+ * @returns 实体构建器
122
+ */
123
+ enabled(enabled = true) {
124
+ this.entity.enabled = enabled;
125
+ return this;
126
+ }
127
+ /**
128
+ * 设置实体为活跃状态
129
+ * @param active 是否活跃
130
+ * @returns 实体构建器
131
+ */
132
+ active(active = true) {
133
+ this.entity.active = active;
134
+ return this;
135
+ }
136
+ /**
137
+ * 添加子实体
138
+ * @param childBuilder 子实体构建器
139
+ * @returns 实体构建器
140
+ */
141
+ withChild(childBuilder) {
142
+ const child = childBuilder.build();
143
+ this.entity.addChild(child);
144
+ return this;
145
+ }
146
+ /**
147
+ * 批量添加子实体
148
+ * @param childBuilders 子实体构建器数组
149
+ * @returns 实体构建器
150
+ */
151
+ withChildren(...childBuilders) {
152
+ for (const childBuilder of childBuilders) {
153
+ const child = childBuilder.build();
154
+ this.entity.addChild(child);
155
+ }
156
+ return this;
157
+ }
158
+ /**
159
+ * 使用工厂函数创建子实体
160
+ * @param childFactory 子实体工厂函数
161
+ * @returns 实体构建器
162
+ */
163
+ withChildFactory(childFactory) {
164
+ const childBuilder = childFactory(this.entity);
165
+ const child = childBuilder.build();
166
+ this.entity.addChild(child);
167
+ return this;
168
+ }
169
+ /**
170
+ * 条件性添加子实体
171
+ * @param condition 条件
172
+ * @param childBuilder 子实体构建器
173
+ * @returns 实体构建器
174
+ */
175
+ withChildIf(condition, childBuilder) {
176
+ if (condition) {
177
+ const child = childBuilder.build();
178
+ this.entity.addChild(child);
179
+ }
180
+ return this;
181
+ }
182
+ /**
183
+ * 构建并返回实体
184
+ * @returns 构建的实体
185
+ */
186
+ build() {
187
+ return this.entity;
188
+ }
189
+ /**
190
+ * 构建实体并添加到场景
191
+ * @returns 构建的实体
192
+ */
193
+ spawn() {
194
+ this.scene.addEntity(this.entity);
195
+ return this.entity;
196
+ }
197
+ /**
198
+ * 克隆当前构建器
199
+ * @returns 新的实体构建器
200
+ */
201
+ clone() {
202
+ const newBuilder = new EntityBuilder(this.scene, this.storageManager);
203
+ // 这里需要深度克隆实体,简化实现
204
+ newBuilder.entity = this.entity; // 实际应该是深度克隆
205
+ return newBuilder;
206
+ }
207
+ }
208
+ /**
209
+ * 场景构建器 - 提供流式API创建和配置场景
210
+ */
211
+ export class SceneBuilder {
212
+ constructor() {
213
+ this.scene = new Scene();
214
+ }
215
+ /**
216
+ * 设置场景名称
217
+ * @param name 场景名称
218
+ * @returns 场景构建器
219
+ */
220
+ named(name) {
221
+ this.scene.name = name;
222
+ return this;
223
+ }
224
+ /**
225
+ * 添加实体
226
+ * @param entity 实体
227
+ * @returns 场景构建器
228
+ */
229
+ withEntity(entity) {
230
+ this.scene.addEntity(entity);
231
+ return this;
232
+ }
233
+ /**
234
+ * 使用实体构建器添加实体
235
+ * @param builderFn 实体构建器函数
236
+ * @returns 场景构建器
237
+ */
238
+ withEntityBuilder(builderFn) {
239
+ const builder = new EntityBuilder(this.scene, this.scene.componentStorageManager);
240
+ const configuredBuilder = builderFn(builder);
241
+ const entity = configuredBuilder.build();
242
+ this.scene.addEntity(entity);
243
+ return this;
244
+ }
245
+ /**
246
+ * 批量添加实体
247
+ * @param entities 实体数组
248
+ * @returns 场景构建器
249
+ */
250
+ withEntities(...entities) {
251
+ for (const entity of entities) {
252
+ this.scene.addEntity(entity);
253
+ }
254
+ return this;
255
+ }
256
+ /**
257
+ * 添加系统
258
+ * @param system 系统实例
259
+ * @returns 场景构建器
260
+ */
261
+ withSystem(system) {
262
+ this.scene.addSystem(system);
263
+ return this;
264
+ }
265
+ /**
266
+ * 批量添加系统
267
+ * @param systems 系统数组
268
+ * @returns 场景构建器
269
+ */
270
+ withSystems(...systems) {
271
+ for (const system of systems) {
272
+ this.scene.addSystem(system);
273
+ }
274
+ return this;
275
+ }
276
+ /**
277
+ * 构建并返回场景
278
+ * @returns 构建的场景
279
+ */
280
+ build() {
281
+ return this.scene;
282
+ }
283
+ }
284
+ /**
285
+ * 组件构建器 - 提供流式API创建组件
286
+ */
287
+ export class ComponentBuilder {
288
+ constructor(componentClass, ...args) {
289
+ this.component = new componentClass(...args);
290
+ }
291
+ /**
292
+ * 设置组件属性
293
+ * @param property 属性名
294
+ * @param value 属性值
295
+ * @returns 组件构建器
296
+ */
297
+ set(property, value) {
298
+ this.component[property] = value;
299
+ return this;
300
+ }
301
+ /**
302
+ * 使用配置函数设置组件
303
+ * @param configurator 配置函数
304
+ * @returns 组件构建器
305
+ */
306
+ configure(configurator) {
307
+ configurator(this.component);
308
+ return this;
309
+ }
310
+ /**
311
+ * 条件性设置属性
312
+ * @param condition 条件
313
+ * @param property 属性名
314
+ * @param value 属性值
315
+ * @returns 组件构建器
316
+ */
317
+ setIf(condition, property, value) {
318
+ if (condition) {
319
+ this.component[property] = value;
320
+ }
321
+ return this;
322
+ }
323
+ /**
324
+ * 构建并返回组件
325
+ * @returns 构建的组件
326
+ */
327
+ build() {
328
+ return this.component;
329
+ }
330
+ }
331
+ /**
332
+ * ECS流式API主入口
333
+ * 提供统一的流式接口
334
+ */
335
+ export class ECSFluentAPI {
336
+ constructor(scene, querySystem, eventSystem) {
337
+ this.scene = scene;
338
+ this.querySystem = querySystem;
339
+ this.eventSystem = eventSystem;
340
+ }
341
+ /**
342
+ * 创建实体构建器
343
+ * @returns 实体构建器
344
+ */
345
+ createEntity() {
346
+ return new EntityBuilder(this.scene, this.scene.componentStorageManager);
347
+ }
348
+ /**
349
+ * 创建场景构建器
350
+ * @returns 场景构建器
351
+ */
352
+ createScene() {
353
+ return new SceneBuilder();
354
+ }
355
+ /**
356
+ * 创建组件构建器
357
+ * @param componentClass 组件类
358
+ * @param args 构造参数
359
+ * @returns 组件构建器
360
+ */
361
+ createComponent(componentClass, ...args) {
362
+ return new ComponentBuilder(componentClass, ...args);
363
+ }
364
+ /**
365
+ * 创建查询构建器
366
+ * @returns 查询构建器
367
+ */
368
+ query() {
369
+ return this.querySystem.createQuery();
370
+ }
371
+ /**
372
+ * 查找实体(简化版)
373
+ * @param componentTypes 组件类型
374
+ * @returns 实体数组
375
+ */
376
+ find(...componentTypes) {
377
+ return this.querySystem.queryAll(...componentTypes).entities;
378
+ }
379
+ /**
380
+ * 查找第一个匹配的实体
381
+ * @param componentTypes 组件类型
382
+ * @returns 实体或null
383
+ */
384
+ findFirst(...componentTypes) {
385
+ const result = this.querySystem.queryAll(...componentTypes);
386
+ return result.entities.length > 0 ? result.entities[0] : null;
387
+ }
388
+ /**
389
+ * 按名称查找实体
390
+ * @param name 实体名称
391
+ * @returns 实体或null
392
+ */
393
+ findByName(name) {
394
+ return this.scene.getEntityByName(name);
395
+ }
396
+ /**
397
+ * 按标签查找实体
398
+ * @param tag 标签
399
+ * @returns 实体数组
400
+ */
401
+ findByTag(tag) {
402
+ return this.scene.getEntitiesByTag(tag);
403
+ }
404
+ /**
405
+ * 触发事件
406
+ * @param eventType 事件类型
407
+ * @param event 事件数据
408
+ */
409
+ emit(eventType, event) {
410
+ this.eventSystem.emitSync(eventType, event);
411
+ }
412
+ /**
413
+ * 异步触发事件
414
+ * @param eventType 事件类型
415
+ * @param event 事件数据
416
+ */
417
+ async emitAsync(eventType, event) {
418
+ await this.eventSystem.emit(eventType, event);
419
+ }
420
+ /**
421
+ * 监听事件
422
+ * @param eventType 事件类型
423
+ * @param handler 事件处理器
424
+ * @returns 监听器ID
425
+ */
426
+ on(eventType, handler) {
427
+ return this.eventSystem.on(eventType, handler);
428
+ }
429
+ /**
430
+ * 一次性监听事件
431
+ * @param eventType 事件类型
432
+ * @param handler 事件处理器
433
+ * @returns 监听器ID
434
+ */
435
+ once(eventType, handler) {
436
+ return this.eventSystem.once(eventType, handler);
437
+ }
438
+ /**
439
+ * 移除事件监听器
440
+ * @param eventType 事件类型
441
+ * @param listenerId 监听器ID
442
+ */
443
+ off(eventType, listenerId) {
444
+ this.eventSystem.off(eventType, listenerId);
445
+ }
446
+ /**
447
+ * 批量操作实体
448
+ * @param entities 实体数组
449
+ * @returns 批量操作器
450
+ */
451
+ batch(entities) {
452
+ return new EntityBatchOperator(entities);
453
+ }
454
+ /**
455
+ * 获取场景统计信息
456
+ * @returns 统计信息
457
+ */
458
+ getStats() {
459
+ return {
460
+ entityCount: this.scene.entities.count,
461
+ systemCount: this.scene.systems.length,
462
+ componentStats: this.scene.componentStorageManager.getAllStats(),
463
+ queryStats: this.querySystem.getStats(),
464
+ eventStats: this.eventSystem.getStats()
465
+ };
466
+ }
467
+ }
468
+ /**
469
+ * 实体批量操作器
470
+ * 提供对多个实体的批量操作
471
+ */
472
+ export class EntityBatchOperator {
473
+ constructor(entities) {
474
+ this.entities = entities;
475
+ }
476
+ /**
477
+ * 批量添加组件
478
+ * @param component 组件实例
479
+ * @returns 批量操作器
480
+ */
481
+ addComponent(component) {
482
+ for (const entity of this.entities) {
483
+ entity.addComponent(component);
484
+ }
485
+ return this;
486
+ }
487
+ /**
488
+ * 批量移除组件
489
+ * @param componentType 组件类型
490
+ * @returns 批量操作器
491
+ */
492
+ removeComponent(componentType) {
493
+ for (const entity of this.entities) {
494
+ entity.removeComponentByType(componentType);
495
+ }
496
+ return this;
497
+ }
498
+ /**
499
+ * 批量设置活跃状态
500
+ * @param active 是否活跃
501
+ * @returns 批量操作器
502
+ */
503
+ setActive(active) {
504
+ for (const entity of this.entities) {
505
+ entity.active = active;
506
+ }
507
+ return this;
508
+ }
509
+ /**
510
+ * 批量设置标签
511
+ * @param tag 标签
512
+ * @returns 批量操作器
513
+ */
514
+ setTag(tag) {
515
+ for (const entity of this.entities) {
516
+ entity.tag = tag;
517
+ }
518
+ return this;
519
+ }
520
+ /**
521
+ * 批量执行操作
522
+ * @param operation 操作函数
523
+ * @returns 批量操作器
524
+ */
525
+ forEach(operation) {
526
+ this.entities.forEach(operation);
527
+ return this;
528
+ }
529
+ /**
530
+ * 过滤实体
531
+ * @param predicate 过滤条件
532
+ * @returns 新的批量操作器
533
+ */
534
+ filter(predicate) {
535
+ return new EntityBatchOperator(this.entities.filter(predicate));
536
+ }
537
+ /**
538
+ * 获取实体数组
539
+ * @returns 实体数组
540
+ */
541
+ toArray() {
542
+ return this.entities.slice();
543
+ }
544
+ /**
545
+ * 获取实体数量
546
+ * @returns 实体数量
547
+ */
548
+ count() {
549
+ return this.entities.length;
550
+ }
551
+ }
552
+ /**
553
+ * 创建ECS流式API实例
554
+ * @param scene 场景
555
+ * @param querySystem 查询系统
556
+ * @param eventSystem 事件系统
557
+ * @returns ECS流式API实例
558
+ */
559
+ export function createECSAPI(scene, querySystem, eventSystem) {
560
+ return new ECSFluentAPI(scene, querySystem, eventSystem);
561
+ }
562
+ /**
563
+ * 全局ECS流式API实例(需要在使用前初始化)
564
+ */
565
+ export let ECS;
566
+ /**
567
+ * 初始化全局ECS API
568
+ * @param scene 场景
569
+ * @param querySystem 查询系统
570
+ * @param eventSystem 事件系统
571
+ */
572
+ export function initializeECS(scene, querySystem, eventSystem) {
573
+ ECS = createECSAPI(scene, querySystem, eventSystem);
574
+ }
575
+ //# sourceMappingURL=FluentAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentAPI.js","sourceRoot":"","sources":["../../../src/ECS/Core/FluentAPI.ts"],"names":[],"mappings":"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"}