@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,585 @@
1
+ import { Vector2 } from '../Math/Vector2';
2
+ import { Transform } from './Transform';
3
+ import { Component } from './Component';
4
+ import { ComponentType } from './Core/ComponentStorage';
5
+ /**
6
+ * 实体比较器
7
+ *
8
+ * 用于比较两个实体的优先级,首先按更新顺序比较,然后按ID比较。
9
+ */
10
+ export declare class EntityComparer {
11
+ /**
12
+ * 比较两个实体
13
+ *
14
+ * @param self - 第一个实体
15
+ * @param other - 第二个实体
16
+ * @returns 比较结果,负数表示self优先级更高,正数表示other优先级更高,0表示相等
17
+ */
18
+ compare(self: Entity, other: Entity): number;
19
+ }
20
+ /**
21
+ * 组件缓存配置
22
+ */
23
+ interface ComponentCacheConfig {
24
+ maxSize: number;
25
+ ttl: number;
26
+ enableLRU: boolean;
27
+ }
28
+ /**
29
+ * 高性能组件缓存
30
+ */
31
+ declare class ComponentCache {
32
+ private cache;
33
+ private accessOrder;
34
+ private config;
35
+ constructor(config?: ComponentCacheConfig);
36
+ get<T extends Component>(type: ComponentType<T>): T | null;
37
+ set<T extends Component>(type: ComponentType<T>, component: T): void;
38
+ delete(type: ComponentType): boolean;
39
+ clear(): void;
40
+ has(type: ComponentType): boolean;
41
+ private evictLeastRecentlyUsed;
42
+ private updateAccessOrder;
43
+ private removeFromAccessOrder;
44
+ getStats(): {
45
+ size: number;
46
+ maxSize: number;
47
+ hitRate: number;
48
+ averageAccessCount: number;
49
+ };
50
+ }
51
+ /**
52
+ * 游戏实体类
53
+ *
54
+ * ECS架构中的实体(Entity),作为组件的容器。
55
+ * 实体本身不包含游戏逻辑,所有功能都通过组件来实现。
56
+ * 支持父子关系,可以构建实体层次结构。
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // 创建实体
61
+ * const entity = new Entity("Player", 1);
62
+ *
63
+ * // 添加组件
64
+ * const healthComponent = entity.addComponent(new HealthComponent(100));
65
+ *
66
+ * // 获取组件
67
+ * const health = entity.getComponent(HealthComponent);
68
+ *
69
+ * // 设置位置
70
+ * entity.position = new Vector2(100, 200);
71
+ *
72
+ * // 添加子实体
73
+ * const weapon = new Entity("Weapon", 2);
74
+ * entity.addChild(weapon);
75
+ * ```
76
+ */
77
+ export declare class Entity {
78
+ /**
79
+ * 实体比较器实例
80
+ */
81
+ static entityComparer: EntityComparer;
82
+ /**
83
+ * 实体名称
84
+ *
85
+ * 用于标识和调试的友好名称。
86
+ */
87
+ name: string;
88
+ /**
89
+ * 实体唯一标识符
90
+ *
91
+ * 在整个游戏生命周期中唯一的数字ID。
92
+ */
93
+ readonly id: number;
94
+ /**
95
+ * 变换组件
96
+ *
97
+ * 管理实体的位置、旋转和缩放信息。
98
+ */
99
+ readonly transform: Transform;
100
+ /**
101
+ * 组件集合
102
+ *
103
+ * 存储附加到此实体的所有组件。
104
+ */
105
+ readonly components: Component[];
106
+ /**
107
+ * 所属场景
108
+ *
109
+ * 实体所在的场景引用。
110
+ */
111
+ scene: any;
112
+ /**
113
+ * 更新间隔
114
+ *
115
+ * 控制实体更新的频率。
116
+ */
117
+ updateInterval: number;
118
+ /**
119
+ * 销毁状态标志
120
+ *
121
+ * 标记实体是否已被销毁。
122
+ */
123
+ _isDestroyed: boolean;
124
+ /**
125
+ * 父实体
126
+ *
127
+ * 此实体的父实体引用,如果为null则表示是根实体。
128
+ */
129
+ private _parent;
130
+ /**
131
+ * 子实体集合
132
+ *
133
+ * 存储此实体的所有子实体。
134
+ */
135
+ private _children;
136
+ /**
137
+ * 活跃状态
138
+ *
139
+ * 控制实体及其子实体是否参与更新和渲染。
140
+ */
141
+ private _active;
142
+ /**
143
+ * 实体标签
144
+ *
145
+ * 用于分类和快速查找的数字标签。
146
+ */
147
+ private _tag;
148
+ /**
149
+ * 启用状态
150
+ *
151
+ * 控制实体是否参与更新循环。
152
+ */
153
+ private _enabled;
154
+ /**
155
+ * 更新顺序
156
+ *
157
+ * 决定实体在更新循环中的执行顺序。
158
+ */
159
+ private _updateOrder;
160
+ /**
161
+ * 组件位掩码
162
+ *
163
+ * 用于快速检查实体拥有哪些组件类型。
164
+ */
165
+ private _componentMask;
166
+ /**
167
+ * 组件类型到索引的映射表
168
+ */
169
+ private _componentTypeToIndex;
170
+ /**
171
+ * 组件缓存系统
172
+ */
173
+ private _componentCache;
174
+ /**
175
+ * 组件访问统计
176
+ */
177
+ private _componentAccessStats;
178
+ /**
179
+ * 创建实体实例
180
+ *
181
+ * @param name - 实体名称
182
+ * @param id - 实体唯一标识符
183
+ */
184
+ constructor(name: string, id: number);
185
+ /**
186
+ * 获取销毁状态
187
+ *
188
+ * @returns 如果实体已被销毁则返回true
189
+ */
190
+ get isDestroyed(): boolean;
191
+ /**
192
+ * 获取父实体
193
+ *
194
+ * @returns 父实体,如果没有父实体则返回null
195
+ */
196
+ get parent(): Entity | null;
197
+ /**
198
+ * 获取子实体数组的只读副本
199
+ *
200
+ * @returns 子实体数组的副本
201
+ */
202
+ get children(): readonly Entity[];
203
+ /**
204
+ * 获取子实体数量
205
+ *
206
+ * @returns 子实体的数量
207
+ */
208
+ get childCount(): number;
209
+ /**
210
+ * 获取活跃状态
211
+ *
212
+ * @returns 如果实体处于活跃状态则返回true
213
+ */
214
+ get active(): boolean;
215
+ /**
216
+ * 设置活跃状态
217
+ *
218
+ * 设置实体的活跃状态,会影响子实体的有效活跃状态。
219
+ *
220
+ * @param value - 新的活跃状态
221
+ */
222
+ set active(value: boolean);
223
+ /**
224
+ * 获取实体的有效活跃状态
225
+ *
226
+ * 考虑父实体的活跃状态,只有当实体本身和所有父实体都处于活跃状态时才返回true。
227
+ *
228
+ * @returns 有效的活跃状态
229
+ */
230
+ get activeInHierarchy(): boolean;
231
+ /**
232
+ * 获取实体标签
233
+ *
234
+ * @returns 实体的数字标签
235
+ */
236
+ get tag(): number;
237
+ /**
238
+ * 设置实体标签
239
+ *
240
+ * @param value - 新的标签值
241
+ */
242
+ set tag(value: number);
243
+ /**
244
+ * 获取启用状态
245
+ *
246
+ * @returns 如果实体已启用则返回true
247
+ */
248
+ get enabled(): boolean;
249
+ /**
250
+ * 设置启用状态
251
+ *
252
+ * @param value - 新的启用状态
253
+ */
254
+ set enabled(value: boolean);
255
+ /**
256
+ * 获取更新顺序
257
+ *
258
+ * @returns 实体的更新顺序值
259
+ */
260
+ get updateOrder(): number;
261
+ /**
262
+ * 设置更新顺序
263
+ *
264
+ * @param value - 新的更新顺序值
265
+ */
266
+ set updateOrder(value: number);
267
+ /**
268
+ * 获取组件位掩码
269
+ *
270
+ * @returns 实体的组件位掩码
271
+ */
272
+ get componentMask(): bigint;
273
+ /**
274
+ * 获取实体位置
275
+ *
276
+ * @returns 实体的位置向量
277
+ */
278
+ get position(): Vector2;
279
+ /**
280
+ * 设置实体位置
281
+ *
282
+ * @param value - 新的位置向量
283
+ */
284
+ set position(value: Vector2);
285
+ /**
286
+ * 获取实体旋转角度
287
+ *
288
+ * @returns 实体的旋转角度(弧度)
289
+ */
290
+ get rotation(): number;
291
+ /**
292
+ * 设置实体旋转角度
293
+ *
294
+ * @param value - 新的旋转角度(弧度)
295
+ */
296
+ set rotation(value: number);
297
+ /**
298
+ * 获取实体缩放
299
+ *
300
+ * @returns 实体的缩放向量
301
+ */
302
+ get scale(): Vector2;
303
+ /**
304
+ * 设置实体缩放
305
+ *
306
+ * @param value - 新的缩放向量
307
+ */
308
+ set scale(value: Vector2);
309
+ /**
310
+ * 创建并添加组件
311
+ *
312
+ * @param componentType - 组件类型
313
+ * @param args - 组件构造函数参数
314
+ * @returns 创建的组件实例
315
+ */
316
+ createComponent<T extends Component>(componentType: ComponentType<T>, ...args: any[]): T;
317
+ /**
318
+ * 内部添加组件方法(不进行重复检查,用于初始化)
319
+ *
320
+ * @param component - 要添加的组件实例
321
+ * @returns 添加的组件实例
322
+ */
323
+ private addComponentInternal;
324
+ /**
325
+ * 添加组件到实体
326
+ *
327
+ * @param component - 要添加的组件实例
328
+ * @returns 添加的组件实例
329
+ * @throws {Error} 如果组件类型已存在
330
+ */
331
+ addComponent<T extends Component>(component: T): T;
332
+ /**
333
+ * 获取指定类型的组件
334
+ *
335
+ * @param type - 组件类型
336
+ * @returns 组件实例或null
337
+ */
338
+ getComponent<T extends Component>(type: ComponentType<T>): T | null;
339
+ /**
340
+ * 更新组件访问统计
341
+ *
342
+ * @param type - 组件类型
343
+ */
344
+ private updateComponentAccessStats;
345
+ /**
346
+ * 记录缓存命中
347
+ *
348
+ * @param type - 组件类型
349
+ */
350
+ private recordCacheHit;
351
+ /**
352
+ * 记录缓存未命中
353
+ *
354
+ * @param type - 组件类型
355
+ */
356
+ private recordCacheMiss;
357
+ /**
358
+ * 重建组件索引映射
359
+ */
360
+ private rebuildComponentIndex;
361
+ /**
362
+ * 检查实体是否有指定类型的组件
363
+ *
364
+ * @param type - 组件类型
365
+ * @returns 如果有该组件则返回true
366
+ */
367
+ hasComponent<T extends Component>(type: ComponentType<T>): boolean;
368
+ /**
369
+ * 获取或创建指定类型的组件
370
+ *
371
+ * @param type - 组件类型
372
+ * @param args - 组件构造函数参数(仅在创建时使用)
373
+ * @returns 组件实例
374
+ */
375
+ getOrCreateComponent<T extends Component>(type: ComponentType<T>, ...args: any[]): T;
376
+ /**
377
+ * 移除指定的组件
378
+ *
379
+ * @param component - 要移除的组件实例
380
+ */
381
+ removeComponent(component: Component): void;
382
+ /**
383
+ * 移除指定类型的组件
384
+ *
385
+ * @param type - 组件类型
386
+ * @returns 被移除的组件实例或null
387
+ */
388
+ removeComponentByType<T extends Component>(type: ComponentType<T>): T | null;
389
+ /**
390
+ * 移除所有组件
391
+ */
392
+ removeAllComponents(): void;
393
+ /**
394
+ * 批量添加组件
395
+ *
396
+ * @param components - 要添加的组件数组
397
+ * @returns 添加的组件数组
398
+ */
399
+ addComponents<T extends Component>(components: T[]): T[];
400
+ /**
401
+ * 批量移除组件类型
402
+ *
403
+ * @param componentTypes - 要移除的组件类型数组
404
+ * @returns 被移除的组件数组
405
+ */
406
+ removeComponentsByTypes<T extends Component>(componentTypes: ComponentType<T>[]): (T | null)[];
407
+ /**
408
+ * 获取组件缓存统计信息
409
+ *
410
+ * @returns 缓存统计信息
411
+ */
412
+ getComponentCacheStats(): {
413
+ cacheStats: ReturnType<ComponentCache['getStats']>;
414
+ accessStats: Map<string, {
415
+ accessCount: number;
416
+ lastAccessed: number;
417
+ cacheHits: number;
418
+ cacheMisses: number;
419
+ hitRate: number;
420
+ }>;
421
+ indexMappingSize: number;
422
+ totalComponents: number;
423
+ };
424
+ /**
425
+ * 预热组件缓存
426
+ *
427
+ * 将所有组件添加到缓存中,提升后续访问性能
428
+ */
429
+ warmUpComponentCache(): void;
430
+ /**
431
+ * 清理组件缓存
432
+ *
433
+ * 清除过期的缓存项,释放内存
434
+ */
435
+ cleanupComponentCache(): void;
436
+ /**
437
+ * 获取所有指定类型的组件
438
+ *
439
+ * @param type - 组件类型
440
+ * @returns 组件实例数组
441
+ */
442
+ getComponents<T extends Component>(type: ComponentType<T>): T[];
443
+ /**
444
+ * 添加子实体
445
+ *
446
+ * @param child - 要添加的子实体
447
+ * @returns 添加的子实体
448
+ */
449
+ addChild(child: Entity): Entity;
450
+ /**
451
+ * 移除子实体
452
+ *
453
+ * @param child - 要移除的子实体
454
+ * @returns 是否成功移除
455
+ */
456
+ removeChild(child: Entity): boolean;
457
+ /**
458
+ * 移除所有子实体
459
+ */
460
+ removeAllChildren(): void;
461
+ /**
462
+ * 根据名称查找子实体
463
+ *
464
+ * @param name - 子实体名称
465
+ * @param recursive - 是否递归查找
466
+ * @returns 找到的子实体或null
467
+ */
468
+ findChild(name: string, recursive?: boolean): Entity | null;
469
+ /**
470
+ * 根据标签查找子实体
471
+ *
472
+ * @param tag - 标签
473
+ * @param recursive - 是否递归查找
474
+ * @returns 找到的子实体数组
475
+ */
476
+ findChildrenByTag(tag: number, recursive?: boolean): Entity[];
477
+ /**
478
+ * 获取根实体
479
+ *
480
+ * @returns 层次结构的根实体
481
+ */
482
+ getRoot(): Entity;
483
+ /**
484
+ * 检查是否是指定实体的祖先
485
+ *
486
+ * @param entity - 要检查的实体
487
+ * @returns 如果是祖先则返回true
488
+ */
489
+ isAncestorOf(entity: Entity): boolean;
490
+ /**
491
+ * 检查是否是指定实体的后代
492
+ *
493
+ * @param entity - 要检查的实体
494
+ * @returns 如果是后代则返回true
495
+ */
496
+ isDescendantOf(entity: Entity): boolean;
497
+ /**
498
+ * 获取层次深度
499
+ *
500
+ * @returns 在层次结构中的深度(根实体为0)
501
+ */
502
+ getDepth(): number;
503
+ /**
504
+ * 遍历所有子实体(深度优先)
505
+ *
506
+ * @param callback - 对每个子实体执行的回调函数
507
+ * @param recursive - 是否递归遍历
508
+ */
509
+ forEachChild(callback: (child: Entity, index: number) => void, recursive?: boolean): void;
510
+ /**
511
+ * 活跃状态改变时的回调
512
+ */
513
+ private onActiveChanged;
514
+ /**
515
+ * 更新实体
516
+ *
517
+ * 调用所有组件的更新方法,并更新子实体。
518
+ */
519
+ update(): void;
520
+ /**
521
+ * 销毁实体
522
+ *
523
+ * 移除所有组件、子实体并标记为已销毁。
524
+ */
525
+ destroy(): void;
526
+ /**
527
+ * 比较实体
528
+ *
529
+ * @param other - 另一个实体
530
+ * @returns 比较结果
531
+ */
532
+ compareTo(other: Entity): number;
533
+ /**
534
+ * 获取实体的字符串表示
535
+ *
536
+ * @returns 实体的字符串描述
537
+ */
538
+ toString(): string;
539
+ /**
540
+ * 获取实体的调试信息(包含组件缓存信息)
541
+ *
542
+ * @returns 包含实体详细信息的对象
543
+ */
544
+ getDebugInfo(): {
545
+ name: string;
546
+ id: number;
547
+ enabled: boolean;
548
+ active: boolean;
549
+ activeInHierarchy: boolean;
550
+ destroyed: boolean;
551
+ componentCount: number;
552
+ componentTypes: string[];
553
+ componentMask: string;
554
+ position: {
555
+ x: number;
556
+ y: number;
557
+ };
558
+ rotation: number;
559
+ scale: {
560
+ x: number;
561
+ y: number;
562
+ };
563
+ parentId: number | null;
564
+ childCount: number;
565
+ childIds: number[];
566
+ depth: number;
567
+ componentCache: {
568
+ size: number;
569
+ maxSize: number;
570
+ hitRate: number;
571
+ averageAccessCount: number;
572
+ };
573
+ componentAccessStats: Array<{
574
+ componentType: string;
575
+ accessCount: number;
576
+ cacheHits: number;
577
+ cacheMisses: number;
578
+ hitRate: number;
579
+ lastAccessed: string;
580
+ }>;
581
+ indexMappingSize: number;
582
+ };
583
+ }
584
+ export {};
585
+ //# sourceMappingURL=Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/ECS/Entity.ts"],"names":[],"mappings":"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"}