@esengine/ecs-framework 2.1.30 → 2.1.31

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 (286) hide show
  1. package/index.cjs +2 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +6357 -0
  4. package/index.mjs +2 -0
  5. package/index.mjs.map +1 -0
  6. package/package.json +24 -50
  7. package/bin/Core.d.ts +0 -279
  8. package/bin/Core.d.ts.map +0 -1
  9. package/bin/Core.js +0 -400
  10. package/bin/Core.js.map +0 -1
  11. package/bin/ECS/Component.d.ts +0 -120
  12. package/bin/ECS/Component.d.ts.map +0 -1
  13. package/bin/ECS/Component.js +0 -129
  14. package/bin/ECS/Component.js.map +0 -1
  15. package/bin/ECS/Components/IUpdatable.d.ts +0 -22
  16. package/bin/ECS/Components/IUpdatable.d.ts.map +0 -1
  17. package/bin/ECS/Components/IUpdatable.js +0 -17
  18. package/bin/ECS/Components/IUpdatable.js.map +0 -1
  19. package/bin/ECS/Components/SceneComponent.d.ts +0 -40
  20. package/bin/ECS/Components/SceneComponent.d.ts.map +0 -1
  21. package/bin/ECS/Components/SceneComponent.js +0 -57
  22. package/bin/ECS/Components/SceneComponent.js.map +0 -1
  23. package/bin/ECS/Core/ArchetypeSystem.d.ts +0 -100
  24. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +0 -1
  25. package/bin/ECS/Core/ArchetypeSystem.js +0 -193
  26. package/bin/ECS/Core/ArchetypeSystem.js.map +0 -1
  27. package/bin/ECS/Core/ComponentIndex.d.ts +0 -151
  28. package/bin/ECS/Core/ComponentIndex.d.ts.map +0 -1
  29. package/bin/ECS/Core/ComponentIndex.js +0 -405
  30. package/bin/ECS/Core/ComponentIndex.js.map +0 -1
  31. package/bin/ECS/Core/ComponentPool.d.ts +0 -88
  32. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  33. package/bin/ECS/Core/ComponentPool.js +0 -159
  34. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  35. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +0 -92
  36. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +0 -1
  37. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +0 -167
  38. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +0 -1
  39. package/bin/ECS/Core/ComponentStorage.d.ts +0 -233
  40. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  41. package/bin/ECS/Core/ComponentStorage.js +0 -463
  42. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  43. package/bin/ECS/Core/DirtyTrackingSystem.d.ts +0 -197
  44. package/bin/ECS/Core/DirtyTrackingSystem.d.ts.map +0 -1
  45. package/bin/ECS/Core/DirtyTrackingSystem.js +0 -297
  46. package/bin/ECS/Core/DirtyTrackingSystem.js.map +0 -1
  47. package/bin/ECS/Core/EntityManager.d.ts +0 -379
  48. package/bin/ECS/Core/EntityManager.d.ts.map +0 -1
  49. package/bin/ECS/Core/EntityManager.js +0 -686
  50. package/bin/ECS/Core/EntityManager.js.map +0 -1
  51. package/bin/ECS/Core/EventBus.d.ts +0 -218
  52. package/bin/ECS/Core/EventBus.d.ts.map +0 -1
  53. package/bin/ECS/Core/EventBus.js +0 -402
  54. package/bin/ECS/Core/EventBus.js.map +0 -1
  55. package/bin/ECS/Core/EventSystem.d.ts +0 -237
  56. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  57. package/bin/ECS/Core/EventSystem.js +0 -478
  58. package/bin/ECS/Core/EventSystem.js.map +0 -1
  59. package/bin/ECS/Core/Events/index.d.ts +0 -3
  60. package/bin/ECS/Core/Events/index.d.ts.map +0 -1
  61. package/bin/ECS/Core/Events/index.js +0 -3
  62. package/bin/ECS/Core/Events/index.js.map +0 -1
  63. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +0 -35
  64. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +0 -1
  65. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +0 -48
  66. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +0 -1
  67. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +0 -135
  68. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +0 -1
  69. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +0 -166
  70. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +0 -1
  71. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +0 -58
  72. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +0 -1
  73. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +0 -85
  74. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +0 -1
  75. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +0 -110
  76. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +0 -1
  77. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +0 -174
  78. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +0 -1
  79. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +0 -53
  80. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +0 -1
  81. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +0 -79
  82. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +0 -1
  83. package/bin/ECS/Core/FluentAPI/index.d.ts +0 -6
  84. package/bin/ECS/Core/FluentAPI/index.d.ts.map +0 -1
  85. package/bin/ECS/Core/FluentAPI/index.js +0 -6
  86. package/bin/ECS/Core/FluentAPI/index.js.map +0 -1
  87. package/bin/ECS/Core/FluentAPI.d.ts +0 -2
  88. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  89. package/bin/ECS/Core/FluentAPI.js +0 -3
  90. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  91. package/bin/ECS/Core/Performance/index.d.ts +0 -4
  92. package/bin/ECS/Core/Performance/index.d.ts.map +0 -1
  93. package/bin/ECS/Core/Performance/index.js +0 -4
  94. package/bin/ECS/Core/Performance/index.js.map +0 -1
  95. package/bin/ECS/Core/Query/index.d.ts +0 -4
  96. package/bin/ECS/Core/Query/index.d.ts.map +0 -1
  97. package/bin/ECS/Core/Query/index.js +0 -4
  98. package/bin/ECS/Core/Query/index.js.map +0 -1
  99. package/bin/ECS/Core/QuerySystem.d.ts +0 -438
  100. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  101. package/bin/ECS/Core/QuerySystem.js +0 -974
  102. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  103. package/bin/ECS/Core/SoAStorage.d.ts +0 -97
  104. package/bin/ECS/Core/SoAStorage.d.ts.map +0 -1
  105. package/bin/ECS/Core/SoAStorage.js +0 -548
  106. package/bin/ECS/Core/SoAStorage.js.map +0 -1
  107. package/bin/ECS/Core/Storage/index.d.ts +0 -4
  108. package/bin/ECS/Core/Storage/index.d.ts.map +0 -1
  109. package/bin/ECS/Core/Storage/index.js +0 -4
  110. package/bin/ECS/Core/Storage/index.js.map +0 -1
  111. package/bin/ECS/CoreEvents.d.ts +0 -131
  112. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  113. package/bin/ECS/CoreEvents.js +0 -163
  114. package/bin/ECS/CoreEvents.js.map +0 -1
  115. package/bin/ECS/Entity.d.ts +0 -455
  116. package/bin/ECS/Entity.d.ts.map +0 -1
  117. package/bin/ECS/Entity.js +0 -837
  118. package/bin/ECS/Entity.js.map +0 -1
  119. package/bin/ECS/Scene.d.ts +0 -225
  120. package/bin/ECS/Scene.d.ts.map +0 -1
  121. package/bin/ECS/Scene.js +0 -325
  122. package/bin/ECS/Scene.js.map +0 -1
  123. package/bin/ECS/Systems/EntitySystem.d.ts +0 -200
  124. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  125. package/bin/ECS/Systems/EntitySystem.js +0 -431
  126. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  127. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  128. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  129. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  130. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  131. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -17
  132. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  133. package/bin/ECS/Systems/PassiveSystem.js +0 -19
  134. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  135. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -21
  136. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  137. package/bin/ECS/Systems/ProcessingSystem.js +0 -20
  138. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  139. package/bin/ECS/Systems/index.d.ts +0 -5
  140. package/bin/ECS/Systems/index.d.ts.map +0 -1
  141. package/bin/ECS/Systems/index.js +0 -6
  142. package/bin/ECS/Systems/index.js.map +0 -1
  143. package/bin/ECS/Utils/BigIntCompatibility.d.ts +0 -164
  144. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +0 -1
  145. package/bin/ECS/Utils/BigIntCompatibility.js +0 -578
  146. package/bin/ECS/Utils/BigIntCompatibility.js.map +0 -1
  147. package/bin/ECS/Utils/Bits.d.ts +0 -163
  148. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  149. package/bin/ECS/Utils/Bits.js +0 -286
  150. package/bin/ECS/Utils/Bits.js.map +0 -1
  151. package/bin/ECS/Utils/ComponentTypeManager.d.ts +0 -50
  152. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +0 -1
  153. package/bin/ECS/Utils/ComponentTypeManager.js +0 -84
  154. package/bin/ECS/Utils/ComponentTypeManager.js.map +0 -1
  155. package/bin/ECS/Utils/EntityList.d.ts +0 -108
  156. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  157. package/bin/ECS/Utils/EntityList.js +0 -262
  158. package/bin/ECS/Utils/EntityList.js.map +0 -1
  159. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -56
  160. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  161. package/bin/ECS/Utils/EntityProcessorList.js +0 -102
  162. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  163. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -203
  164. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  165. package/bin/ECS/Utils/IdentifierPool.js +0 -325
  166. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  167. package/bin/ECS/Utils/Matcher.d.ts +0 -143
  168. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  169. package/bin/ECS/Utils/Matcher.js +0 -249
  170. package/bin/ECS/Utils/Matcher.js.map +0 -1
  171. package/bin/ECS/Utils/index.d.ts +0 -8
  172. package/bin/ECS/Utils/index.d.ts.map +0 -1
  173. package/bin/ECS/Utils/index.js +0 -9
  174. package/bin/ECS/Utils/index.js.map +0 -1
  175. package/bin/ECS/index.d.ts +0 -12
  176. package/bin/ECS/index.d.ts.map +0 -1
  177. package/bin/ECS/index.js +0 -12
  178. package/bin/ECS/index.js.map +0 -1
  179. package/bin/Types/index.d.ts +0 -471
  180. package/bin/Types/index.d.ts.map +0 -1
  181. package/bin/Types/index.js +0 -5
  182. package/bin/Types/index.js.map +0 -1
  183. package/bin/Utils/Debug/ComponentDataCollector.d.ts +0 -28
  184. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +0 -1
  185. package/bin/Utils/Debug/ComponentDataCollector.js +0 -248
  186. package/bin/Utils/Debug/ComponentDataCollector.js.map +0 -1
  187. package/bin/Utils/Debug/DebugDataFormatter.d.ts +0 -22
  188. package/bin/Utils/Debug/DebugDataFormatter.d.ts.map +0 -1
  189. package/bin/Utils/Debug/DebugDataFormatter.js +0 -117
  190. package/bin/Utils/Debug/DebugDataFormatter.js.map +0 -1
  191. package/bin/Utils/Debug/DebugManager.d.ts +0 -104
  192. package/bin/Utils/Debug/DebugManager.d.ts.map +0 -1
  193. package/bin/Utils/Debug/DebugManager.js +0 -647
  194. package/bin/Utils/Debug/DebugManager.js.map +0 -1
  195. package/bin/Utils/Debug/EntityDataCollector.d.ts +0 -92
  196. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +0 -1
  197. package/bin/Utils/Debug/EntityDataCollector.js +0 -864
  198. package/bin/Utils/Debug/EntityDataCollector.js.map +0 -1
  199. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +0 -32
  200. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +0 -1
  201. package/bin/Utils/Debug/PerformanceDataCollector.js +0 -217
  202. package/bin/Utils/Debug/PerformanceDataCollector.js.map +0 -1
  203. package/bin/Utils/Debug/SceneDataCollector.d.ts +0 -16
  204. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +0 -1
  205. package/bin/Utils/Debug/SceneDataCollector.js +0 -46
  206. package/bin/Utils/Debug/SceneDataCollector.js.map +0 -1
  207. package/bin/Utils/Debug/SystemDataCollector.d.ts +0 -11
  208. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +0 -1
  209. package/bin/Utils/Debug/SystemDataCollector.js +0 -59
  210. package/bin/Utils/Debug/SystemDataCollector.js.map +0 -1
  211. package/bin/Utils/Debug/WebSocketManager.d.ts +0 -59
  212. package/bin/Utils/Debug/WebSocketManager.d.ts.map +0 -1
  213. package/bin/Utils/Debug/WebSocketManager.js +0 -148
  214. package/bin/Utils/Debug/WebSocketManager.js.map +0 -1
  215. package/bin/Utils/Debug/index.d.ts +0 -8
  216. package/bin/Utils/Debug/index.d.ts.map +0 -1
  217. package/bin/Utils/Debug/index.js +0 -8
  218. package/bin/Utils/Debug/index.js.map +0 -1
  219. package/bin/Utils/Emitter.d.ts +0 -43
  220. package/bin/Utils/Emitter.d.ts.map +0 -1
  221. package/bin/Utils/Emitter.js +0 -69
  222. package/bin/Utils/Emitter.js.map +0 -1
  223. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  224. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  225. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  226. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  227. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  228. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  229. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  230. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  231. package/bin/Utils/Extensions/index.d.ts +0 -3
  232. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  233. package/bin/Utils/Extensions/index.js +0 -4
  234. package/bin/Utils/Extensions/index.js.map +0 -1
  235. package/bin/Utils/GlobalManager.d.ts +0 -32
  236. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  237. package/bin/Utils/GlobalManager.js +0 -53
  238. package/bin/Utils/GlobalManager.js.map +0 -1
  239. package/bin/Utils/Logger.d.ts +0 -156
  240. package/bin/Utils/Logger.d.ts.map +0 -1
  241. package/bin/Utils/Logger.js +0 -256
  242. package/bin/Utils/Logger.js.map +0 -1
  243. package/bin/Utils/PerformanceMonitor.d.ts +0 -211
  244. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  245. package/bin/Utils/PerformanceMonitor.js +0 -270
  246. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  247. package/bin/Utils/Pool/IPoolable.d.ts +0 -29
  248. package/bin/Utils/Pool/IPoolable.d.ts.map +0 -1
  249. package/bin/Utils/Pool/IPoolable.js +0 -2
  250. package/bin/Utils/Pool/IPoolable.js.map +0 -1
  251. package/bin/Utils/Pool/Pool.d.ts +0 -109
  252. package/bin/Utils/Pool/Pool.d.ts.map +0 -1
  253. package/bin/Utils/Pool/Pool.js +0 -238
  254. package/bin/Utils/Pool/Pool.js.map +0 -1
  255. package/bin/Utils/Pool/PoolManager.d.ts +0 -91
  256. package/bin/Utils/Pool/PoolManager.d.ts.map +0 -1
  257. package/bin/Utils/Pool/PoolManager.js +0 -197
  258. package/bin/Utils/Pool/PoolManager.js.map +0 -1
  259. package/bin/Utils/Pool/index.d.ts +0 -4
  260. package/bin/Utils/Pool/index.d.ts.map +0 -1
  261. package/bin/Utils/Pool/index.js +0 -4
  262. package/bin/Utils/Pool/index.js.map +0 -1
  263. package/bin/Utils/Time.d.ts +0 -47
  264. package/bin/Utils/Time.d.ts.map +0 -1
  265. package/bin/Utils/Time.js +0 -64
  266. package/bin/Utils/Time.js.map +0 -1
  267. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  268. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  269. package/bin/Utils/Timers/ITimer.js +0 -2
  270. package/bin/Utils/Timers/ITimer.js.map +0 -1
  271. package/bin/Utils/Timers/Timer.d.ts +0 -30
  272. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  273. package/bin/Utils/Timers/Timer.js +0 -58
  274. package/bin/Utils/Timers/Timer.js.map +0 -1
  275. package/bin/Utils/Timers/TimerManager.d.ts +0 -19
  276. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  277. package/bin/Utils/Timers/TimerManager.js +0 -33
  278. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  279. package/bin/Utils/index.d.ts +0 -9
  280. package/bin/Utils/index.d.ts.map +0 -1
  281. package/bin/Utils/index.js +0 -9
  282. package/bin/Utils/index.js.map +0 -1
  283. package/bin/index.d.ts +0 -16
  284. package/bin/index.d.ts.map +0 -1
  285. package/bin/index.js +0 -19
  286. package/bin/index.js.map +0 -1
@@ -1,17 +0,0 @@
1
- /**
2
- * 用于比较组件更新排序的比较器
3
- */
4
- export class IUpdatableComparer {
5
- compare(a, b) {
6
- return a.updateOrder - b.updateOrder;
7
- }
8
- }
9
- /**
10
- * 检查对象是否实现了IUpdatable接口
11
- * @param props 要检查的对象
12
- * @returns 如果实现了IUpdatable接口返回true,否则返回false
13
- */
14
- export function isIUpdatable(props) {
15
- return typeof props['update'] !== 'undefined';
16
- }
17
- //# sourceMappingURL=IUpdatable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IUpdatable.js","sourceRoot":"","sources":["../../../src/ECS/Components/IUpdatable.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACpB,OAAO,CAAC,CAAa,EAAE,CAAa;QACvC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAU;IACnC,OAAO,OAAQ,KAAoB,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC;AAClE,CAAC"}
@@ -1,40 +0,0 @@
1
- import type { Scene } from '../Scene';
2
- /**
3
- * 场景组件基类
4
- * 附加到场景的组件,用于实现场景级别的功能
5
- */
6
- export declare class SceneComponent {
7
- /** 组件所属的场景 */
8
- scene: Scene;
9
- /** 更新顺序 */
10
- updateOrder: number;
11
- /** 是否启用 */
12
- private _enabled;
13
- /** 获取是否启用 */
14
- get enabled(): boolean;
15
- /** 设置是否启用 */
16
- set enabled(value: boolean);
17
- /**
18
- * 当组件启用时调用
19
- */
20
- onEnabled(): void;
21
- /**
22
- * 当组件禁用时调用
23
- */
24
- onDisabled(): void;
25
- /**
26
- * 当组件从场景中移除时调用
27
- */
28
- onRemovedFromScene(): void;
29
- /**
30
- * 每帧更新
31
- */
32
- update(): void;
33
- /**
34
- * 比较组件的更新顺序
35
- * @param other 其他组件
36
- * @returns 比较结果
37
- */
38
- compare(other: SceneComponent): number;
39
- }
40
- //# sourceMappingURL=SceneComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SceneComponent.d.ts","sourceRoot":"","sources":["../../../src/ECS/Components/SceneComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;GAGG;AACH,qBAAa,cAAc;IACvB,cAAc;IACP,KAAK,EAAG,KAAK,CAAC;IACrB,WAAW;IACJ,WAAW,EAAE,MAAM,CAAK;IAC/B,WAAW;IACX,OAAO,CAAC,QAAQ,CAAiB;IAEjC,aAAa;IACb,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,aAAa;IACb,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAShC;IAED;;OAEG;IACI,SAAS,IAAI,IAAI;IAGxB;;OAEG;IACI,UAAU,IAAI,IAAI;IAGzB;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAGjC;;OAEG;IACI,MAAM,IAAI,IAAI;IAGrB;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;CAGhD"}
@@ -1,57 +0,0 @@
1
- /**
2
- * 场景组件基类
3
- * 附加到场景的组件,用于实现场景级别的功能
4
- */
5
- export class SceneComponent {
6
- constructor() {
7
- /** 更新顺序 */
8
- this.updateOrder = 0;
9
- /** 是否启用 */
10
- this._enabled = true;
11
- }
12
- /** 获取是否启用 */
13
- get enabled() {
14
- return this._enabled;
15
- }
16
- /** 设置是否启用 */
17
- set enabled(value) {
18
- if (this._enabled !== value) {
19
- this._enabled = value;
20
- if (this._enabled) {
21
- this.onEnabled();
22
- }
23
- else {
24
- this.onDisabled();
25
- }
26
- }
27
- }
28
- /**
29
- * 当组件启用时调用
30
- */
31
- onEnabled() {
32
- }
33
- /**
34
- * 当组件禁用时调用
35
- */
36
- onDisabled() {
37
- }
38
- /**
39
- * 当组件从场景中移除时调用
40
- */
41
- onRemovedFromScene() {
42
- }
43
- /**
44
- * 每帧更新
45
- */
46
- update() {
47
- }
48
- /**
49
- * 比较组件的更新顺序
50
- * @param other 其他组件
51
- * @returns 比较结果
52
- */
53
- compare(other) {
54
- return this.updateOrder - other.updateOrder;
55
- }
56
- }
57
- //# sourceMappingURL=SceneComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SceneComponent.js","sourceRoot":"","sources":["../../../src/ECS/Components/SceneComponent.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAA3B;QAGI,WAAW;QACJ,gBAAW,GAAW,CAAC,CAAC;QAC/B,WAAW;QACH,aAAQ,GAAY,IAAI,CAAC;IAmDrC,CAAC;IAjDG,aAAa;IACb,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,aAAa;IACb,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,SAAS;IAChB,CAAC;IAED;;OAEG;IACI,UAAU;IACjB,CAAC;IAED;;OAEG;IACI,kBAAkB;IACzB,CAAC;IAED;;OAEG;IACI,MAAM;IACb,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,KAAqB;QAChC,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,CAAC;CACJ"}
@@ -1,100 +0,0 @@
1
- import { Entity } from '../Entity';
2
- import { ComponentType } from './ComponentStorage';
3
- /**
4
- * 原型标识符
5
- */
6
- export type ArchetypeId = string;
7
- /**
8
- * 原型数据结构
9
- */
10
- export interface Archetype {
11
- /** 原型唯一标识符 */
12
- id: ArchetypeId;
13
- /** 包含的组件类型 */
14
- componentTypes: ComponentType[];
15
- /** 属于该原型的实体列表 */
16
- entities: Entity[];
17
- /** 原型创建时间 */
18
- createdAt: number;
19
- /** 最后更新时间 */
20
- updatedAt: number;
21
- }
22
- /**
23
- * 原型查询结果
24
- */
25
- export interface ArchetypeQueryResult {
26
- /** 匹配的原型列表 */
27
- archetypes: Archetype[];
28
- /** 所有匹配实体的总数 */
29
- totalEntities: number;
30
- /** 查询执行时间(毫秒) */
31
- executionTime: number;
32
- /** 是否使用了缓存 */
33
- fromCache: boolean;
34
- }
35
- /**
36
- * Archetype系统
37
- *
38
- * 根据实体的组件组合将实体分组到不同的原型中,提供高效的查询性能。
39
- */
40
- export declare class ArchetypeSystem {
41
- /** 所有原型的映射表 */
42
- private _archetypes;
43
- /** 实体到原型的映射 */
44
- private _entityToArchetype;
45
- /** 组件类型到原型的映射 */
46
- private _componentToArchetypes;
47
- /** 查询缓存 */
48
- private _queryCache;
49
- private _cacheTimeout;
50
- private _maxCacheSize;
51
- /**
52
- * 添加实体到原型系统
53
- */
54
- addEntity(entity: Entity): void;
55
- /**
56
- * 从原型系统中移除实体
57
- */
58
- removeEntity(entity: Entity): void;
59
- /**
60
- * 查询包含指定组件组合的原型
61
- */
62
- queryArchetypes(componentTypes: ComponentType[], operation?: 'AND' | 'OR'): ArchetypeQueryResult;
63
- /**
64
- * 获取实体所属的原型
65
- */
66
- getEntityArchetype(entity: Entity): Archetype | undefined;
67
- /**
68
- * 获取所有原型
69
- */
70
- getAllArchetypes(): Archetype[];
71
- /**
72
- * 清空所有数据
73
- */
74
- clear(): void;
75
- /**
76
- * 获取实体的组件类型列表
77
- */
78
- private getEntityComponentTypes;
79
- /**
80
- * 生成原型ID
81
- */
82
- private generateArchetypeId;
83
- /**
84
- * 创建新原型
85
- */
86
- private createArchetype;
87
- /**
88
- * 检查原型是否包含所有指定组件
89
- */
90
- private archetypeContainsAllComponents;
91
- /**
92
- * 更新组件索引
93
- */
94
- private updateComponentIndexes;
95
- /**
96
- * 使查询缓存失效
97
- */
98
- private invalidateQueryCache;
99
- }
100
- //# sourceMappingURL=ArchetypeSystem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArchetypeSystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Core/ArchetypeSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,cAAc;IACd,EAAE,EAAE,WAAW,CAAC;IAChB,cAAc;IACd,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iBAAiB;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,cAAc;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc;IACd,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACxB,eAAe;IACf,OAAO,CAAC,WAAW,CAAqC;IAExD,eAAe;IACf,OAAO,CAAC,kBAAkB,CAAgC;IAE1D,iBAAiB;IACjB,OAAO,CAAC,sBAAsB,CAA4C;IAE1E,WAAW;IACX,OAAO,CAAC,WAAW,CAGd;IAEL,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,aAAa,CAAO;IAE5B;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiBtC;;OAEG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAczC;;OAEG;IACI,eAAe,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,SAAS,GAAE,KAAK,GAAG,IAAY,GAAG,oBAAoB;IA2D9G;;OAEG;IACI,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIhE;;OAEG;IACI,gBAAgB,IAAI,SAAS,EAAE;IAItC;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAI/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAStC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAG/B"}
@@ -1,193 +0,0 @@
1
- /**
2
- * Archetype系统
3
- *
4
- * 根据实体的组件组合将实体分组到不同的原型中,提供高效的查询性能。
5
- */
6
- export class ArchetypeSystem {
7
- constructor() {
8
- /** 所有原型的映射表 */
9
- this._archetypes = new Map();
10
- /** 实体到原型的映射 */
11
- this._entityToArchetype = new Map();
12
- /** 组件类型到原型的映射 */
13
- this._componentToArchetypes = new Map();
14
- /** 查询缓存 */
15
- this._queryCache = new Map();
16
- this._cacheTimeout = 5000;
17
- this._maxCacheSize = 100;
18
- }
19
- /**
20
- * 添加实体到原型系统
21
- */
22
- addEntity(entity) {
23
- const componentTypes = this.getEntityComponentTypes(entity);
24
- const archetypeId = this.generateArchetypeId(componentTypes);
25
- let archetype = this._archetypes.get(archetypeId);
26
- if (!archetype) {
27
- archetype = this.createArchetype(componentTypes);
28
- }
29
- archetype.entities.push(entity);
30
- archetype.updatedAt = Date.now();
31
- this._entityToArchetype.set(entity, archetype);
32
- this.updateComponentIndexes(archetype, componentTypes, true);
33
- this.invalidateQueryCache();
34
- }
35
- /**
36
- * 从原型系统中移除实体
37
- */
38
- removeEntity(entity) {
39
- const archetype = this._entityToArchetype.get(entity);
40
- if (!archetype)
41
- return;
42
- const index = archetype.entities.indexOf(entity);
43
- if (index !== -1) {
44
- archetype.entities.splice(index, 1);
45
- archetype.updatedAt = Date.now();
46
- }
47
- this._entityToArchetype.delete(entity);
48
- this.invalidateQueryCache();
49
- }
50
- /**
51
- * 查询包含指定组件组合的原型
52
- */
53
- queryArchetypes(componentTypes, operation = 'AND') {
54
- const startTime = performance.now();
55
- const cacheKey = `${operation}:${componentTypes.map(t => t.name).sort().join(',')}`;
56
- // 检查缓存
57
- const cached = this._queryCache.get(cacheKey);
58
- if (cached && (Date.now() - cached.timestamp < this._cacheTimeout)) {
59
- return {
60
- ...cached.result,
61
- executionTime: performance.now() - startTime,
62
- fromCache: true
63
- };
64
- }
65
- const matchingArchetypes = [];
66
- let totalEntities = 0;
67
- if (operation === 'AND') {
68
- for (const archetype of this._archetypes.values()) {
69
- if (this.archetypeContainsAllComponents(archetype, componentTypes)) {
70
- matchingArchetypes.push(archetype);
71
- totalEntities += archetype.entities.length;
72
- }
73
- }
74
- }
75
- else {
76
- const foundArchetypes = new Set();
77
- for (const componentType of componentTypes) {
78
- const archetypes = this._componentToArchetypes.get(componentType);
79
- if (archetypes) {
80
- for (const archetype of archetypes) {
81
- foundArchetypes.add(archetype);
82
- }
83
- }
84
- }
85
- for (const archetype of foundArchetypes) {
86
- matchingArchetypes.push(archetype);
87
- totalEntities += archetype.entities.length;
88
- }
89
- }
90
- const result = {
91
- archetypes: matchingArchetypes,
92
- totalEntities,
93
- executionTime: performance.now() - startTime,
94
- fromCache: false
95
- };
96
- // 缓存结果
97
- this._queryCache.set(cacheKey, {
98
- result,
99
- timestamp: Date.now()
100
- });
101
- return result;
102
- }
103
- /**
104
- * 获取实体所属的原型
105
- */
106
- getEntityArchetype(entity) {
107
- return this._entityToArchetype.get(entity);
108
- }
109
- /**
110
- * 获取所有原型
111
- */
112
- getAllArchetypes() {
113
- return Array.from(this._archetypes.values());
114
- }
115
- /**
116
- * 清空所有数据
117
- */
118
- clear() {
119
- this._archetypes.clear();
120
- this._entityToArchetype.clear();
121
- this._componentToArchetypes.clear();
122
- this._queryCache.clear();
123
- }
124
- /**
125
- * 获取实体的组件类型列表
126
- */
127
- getEntityComponentTypes(entity) {
128
- return entity.components.map(component => component.constructor);
129
- }
130
- /**
131
- * 生成原型ID
132
- */
133
- generateArchetypeId(componentTypes) {
134
- return componentTypes
135
- .map(type => type.name)
136
- .sort()
137
- .join('|');
138
- }
139
- /**
140
- * 创建新原型
141
- */
142
- createArchetype(componentTypes) {
143
- const id = this.generateArchetypeId(componentTypes);
144
- const archetype = {
145
- id,
146
- componentTypes: [...componentTypes],
147
- entities: [],
148
- createdAt: Date.now(),
149
- updatedAt: Date.now()
150
- };
151
- this._archetypes.set(id, archetype);
152
- return archetype;
153
- }
154
- /**
155
- * 检查原型是否包含所有指定组件
156
- */
157
- archetypeContainsAllComponents(archetype, componentTypes) {
158
- for (const componentType of componentTypes) {
159
- if (!archetype.componentTypes.includes(componentType)) {
160
- return false;
161
- }
162
- }
163
- return true;
164
- }
165
- /**
166
- * 更新组件索引
167
- */
168
- updateComponentIndexes(archetype, componentTypes, add) {
169
- for (const componentType of componentTypes) {
170
- let archetypes = this._componentToArchetypes.get(componentType);
171
- if (!archetypes) {
172
- archetypes = new Set();
173
- this._componentToArchetypes.set(componentType, archetypes);
174
- }
175
- if (add) {
176
- archetypes.add(archetype);
177
- }
178
- else {
179
- archetypes.delete(archetype);
180
- if (archetypes.size === 0) {
181
- this._componentToArchetypes.delete(componentType);
182
- }
183
- }
184
- }
185
- }
186
- /**
187
- * 使查询缓存失效
188
- */
189
- invalidateQueryCache() {
190
- this._queryCache.clear();
191
- }
192
- }
193
- //# sourceMappingURL=ArchetypeSystem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArchetypeSystem.js","sourceRoot":"","sources":["../../../src/ECS/Core/ArchetypeSystem.ts"],"names":[],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- import { Entity } from '../Entity';
2
- import { ComponentType } from './ComponentStorage';
3
- /**
4
- * 组件索引类型
5
- */
6
- export declare enum IndexType {
7
- /** 哈希索引 - 最快查找 */
8
- HASH = "hash",
9
- /** 位图索引 - 内存高效 */
10
- BITMAP = "bitmap",
11
- /** 排序索引 - 支持范围查询 */
12
- SORTED = "sorted"
13
- }
14
- /**
15
- * 索引统计信息
16
- */
17
- export interface IndexStats {
18
- /** 索引类型 */
19
- type: IndexType;
20
- /** 索引大小 */
21
- size: number;
22
- /** 内存使用量(字节) */
23
- memoryUsage: number;
24
- /** 查询次数 */
25
- queryCount: number;
26
- /** 平均查询时间(毫秒) */
27
- avgQueryTime: number;
28
- /** 最后更新时间 */
29
- lastUpdated: number;
30
- }
31
- /**
32
- * 组件索引接口
33
- */
34
- export interface IComponentIndex {
35
- /** 索引类型 */
36
- readonly type: IndexType;
37
- /** 添加实体到索引 */
38
- addEntity(entity: Entity): void;
39
- /** 从索引中移除实体 */
40
- removeEntity(entity: Entity): void;
41
- /** 查询包含指定组件的实体 */
42
- query(componentType: ComponentType): Set<Entity>;
43
- /** 批量查询多个组件 */
44
- queryMultiple(componentTypes: ComponentType[], operation: 'AND' | 'OR'): Set<Entity>;
45
- /** 清空索引 */
46
- clear(): void;
47
- /** 获取索引统计信息 */
48
- getStats(): IndexStats;
49
- }
50
- /**
51
- * 哈希索引实现
52
- *
53
- * 使用Map数据结构,提供O(1)的查找性能。
54
- * 适合大多数查询场景。
55
- */
56
- export declare class HashComponentIndex implements IComponentIndex {
57
- readonly type = IndexType.HASH;
58
- private _componentToEntities;
59
- private _entityToComponents;
60
- private _queryCount;
61
- private _totalQueryTime;
62
- private _lastUpdated;
63
- private _setPool;
64
- private _componentTypeSetPool;
65
- addEntity(entity: Entity): void;
66
- removeEntity(entity: Entity): void;
67
- query(componentType: ComponentType): Set<Entity>;
68
- queryMultiple(componentTypes: ComponentType[], operation: 'AND' | 'OR'): Set<Entity>;
69
- clear(): void;
70
- getStats(): IndexStats;
71
- }
72
- /**
73
- * 位图索引实现
74
- *
75
- * 使用位操作进行快速集合运算,内存效率高。
76
- * 适合有限组件类型和大量实体的场景。
77
- */
78
- export declare class BitmapComponentIndex implements IComponentIndex {
79
- readonly type = IndexType.BITMAP;
80
- private _componentTypeToBit;
81
- private _entityToBitmap;
82
- private _bitToEntities;
83
- private _nextBit;
84
- private _queryCount;
85
- private _totalQueryTime;
86
- private _lastUpdated;
87
- addEntity(entity: Entity): void;
88
- removeEntity(entity: Entity): void;
89
- query(componentType: ComponentType): Set<Entity>;
90
- queryMultiple(componentTypes: ComponentType[], operation: 'AND' | 'OR'): Set<Entity>;
91
- clear(): void;
92
- getStats(): IndexStats;
93
- }
94
- /**
95
- * 智能组件索引管理器
96
- *
97
- * 根据使用模式自动选择最优的索引策略。
98
- * 支持动态切换索引类型以获得最佳性能。
99
- */
100
- export declare class ComponentIndexManager {
101
- private _activeIndex;
102
- private _indexHistory;
103
- private _autoOptimize;
104
- private _optimizationThreshold;
105
- constructor(initialType?: IndexType);
106
- /**
107
- * 添加实体到索引
108
- */
109
- addEntity(entity: Entity): void;
110
- /**
111
- * 从索引中移除实体
112
- */
113
- removeEntity(entity: Entity): void;
114
- /**
115
- * 查询包含指定组件的实体
116
- */
117
- query(componentType: ComponentType): Set<Entity>;
118
- /**
119
- * 批量查询多个组件
120
- */
121
- queryMultiple(componentTypes: ComponentType[], operation: 'AND' | 'OR'): Set<Entity>;
122
- /**
123
- * 手动切换索引类型
124
- */
125
- switchIndexType(type: IndexType): void;
126
- /**
127
- * 启用/禁用自动优化
128
- */
129
- setAutoOptimize(enabled: boolean): void;
130
- /**
131
- * 获取当前索引统计信息
132
- */
133
- getStats(): IndexStats;
134
- /**
135
- * 获取所有索引类型的历史统计信息
136
- */
137
- getAllStats(): Map<IndexType, IndexStats>;
138
- /**
139
- * 清空索引
140
- */
141
- clear(): void;
142
- /**
143
- * 创建指定类型的索引
144
- */
145
- private createIndex;
146
- /**
147
- * 检查是否需要优化索引
148
- */
149
- private checkOptimization;
150
- }
151
- //# sourceMappingURL=ComponentIndex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComponentIndex.d.ts","sourceRoot":"","sources":["../../../src/ECS/Core/ComponentIndex.ts"],"names":[],"mappings":"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"}