@esengine/ecs-framework 2.1.29 → 2.1.30

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 (290) hide show
  1. package/bin/Core.d.ts +279 -0
  2. package/bin/Core.d.ts.map +1 -0
  3. package/bin/Core.js +400 -0
  4. package/bin/Core.js.map +1 -0
  5. package/bin/ECS/Component.d.ts +120 -0
  6. package/bin/ECS/Component.d.ts.map +1 -0
  7. package/bin/ECS/Component.js +129 -0
  8. package/bin/ECS/Component.js.map +1 -0
  9. package/bin/ECS/Components/IUpdatable.d.ts +22 -0
  10. package/bin/ECS/Components/IUpdatable.d.ts.map +1 -0
  11. package/bin/ECS/Components/IUpdatable.js +17 -0
  12. package/bin/ECS/Components/IUpdatable.js.map +1 -0
  13. package/bin/ECS/Components/SceneComponent.d.ts +40 -0
  14. package/bin/ECS/Components/SceneComponent.d.ts.map +1 -0
  15. package/bin/ECS/Components/SceneComponent.js +57 -0
  16. package/bin/ECS/Components/SceneComponent.js.map +1 -0
  17. package/bin/ECS/Core/ArchetypeSystem.d.ts +100 -0
  18. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +1 -0
  19. package/bin/ECS/Core/ArchetypeSystem.js +193 -0
  20. package/bin/ECS/Core/ArchetypeSystem.js.map +1 -0
  21. package/bin/ECS/Core/ComponentIndex.d.ts +151 -0
  22. package/bin/ECS/Core/ComponentIndex.d.ts.map +1 -0
  23. package/bin/ECS/Core/ComponentIndex.js +405 -0
  24. package/bin/ECS/Core/ComponentIndex.js.map +1 -0
  25. package/bin/ECS/Core/ComponentPool.d.ts +88 -0
  26. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  27. package/bin/ECS/Core/ComponentPool.js +159 -0
  28. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  29. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +92 -0
  30. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +1 -0
  31. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +167 -0
  32. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +1 -0
  33. package/bin/ECS/Core/ComponentStorage.d.ts +233 -0
  34. package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
  35. package/bin/ECS/Core/ComponentStorage.js +463 -0
  36. package/bin/ECS/Core/ComponentStorage.js.map +1 -0
  37. package/bin/ECS/Core/DirtyTrackingSystem.d.ts +197 -0
  38. package/bin/ECS/Core/DirtyTrackingSystem.d.ts.map +1 -0
  39. package/bin/ECS/Core/DirtyTrackingSystem.js +297 -0
  40. package/bin/ECS/Core/DirtyTrackingSystem.js.map +1 -0
  41. package/bin/ECS/Core/EntityManager.d.ts +379 -0
  42. package/bin/ECS/Core/EntityManager.d.ts.map +1 -0
  43. package/bin/ECS/Core/EntityManager.js +686 -0
  44. package/bin/ECS/Core/EntityManager.js.map +1 -0
  45. package/bin/ECS/Core/EventBus.d.ts +218 -0
  46. package/bin/ECS/Core/EventBus.d.ts.map +1 -0
  47. package/bin/ECS/Core/EventBus.js +402 -0
  48. package/bin/ECS/Core/EventBus.js.map +1 -0
  49. package/bin/ECS/Core/EventSystem.d.ts +237 -0
  50. package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
  51. package/bin/ECS/Core/EventSystem.js +478 -0
  52. package/bin/ECS/Core/EventSystem.js.map +1 -0
  53. package/bin/ECS/Core/Events/index.d.ts +3 -0
  54. package/bin/ECS/Core/Events/index.d.ts.map +1 -0
  55. package/bin/ECS/Core/Events/index.js +3 -0
  56. package/bin/ECS/Core/Events/index.js.map +1 -0
  57. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +35 -0
  58. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +1 -0
  59. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +48 -0
  60. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +1 -0
  61. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +135 -0
  62. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +1 -0
  63. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +166 -0
  64. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +1 -0
  65. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +58 -0
  66. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +1 -0
  67. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +85 -0
  68. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +1 -0
  69. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +110 -0
  70. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +1 -0
  71. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +174 -0
  72. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +1 -0
  73. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +53 -0
  74. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +1 -0
  75. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +79 -0
  76. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +1 -0
  77. package/bin/ECS/Core/FluentAPI/index.d.ts +6 -0
  78. package/bin/ECS/Core/FluentAPI/index.d.ts.map +1 -0
  79. package/bin/ECS/Core/FluentAPI/index.js +6 -0
  80. package/bin/ECS/Core/FluentAPI/index.js.map +1 -0
  81. package/bin/ECS/Core/FluentAPI.d.ts +2 -0
  82. package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
  83. package/bin/ECS/Core/FluentAPI.js +3 -0
  84. package/bin/ECS/Core/FluentAPI.js.map +1 -0
  85. package/bin/ECS/Core/Performance/index.d.ts +4 -0
  86. package/bin/ECS/Core/Performance/index.d.ts.map +1 -0
  87. package/bin/ECS/Core/Performance/index.js +4 -0
  88. package/bin/ECS/Core/Performance/index.js.map +1 -0
  89. package/bin/ECS/Core/Query/index.d.ts +4 -0
  90. package/bin/ECS/Core/Query/index.d.ts.map +1 -0
  91. package/bin/ECS/Core/Query/index.js +4 -0
  92. package/bin/ECS/Core/Query/index.js.map +1 -0
  93. package/bin/ECS/Core/QuerySystem.d.ts +438 -0
  94. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
  95. package/bin/ECS/Core/QuerySystem.js +974 -0
  96. package/bin/ECS/Core/QuerySystem.js.map +1 -0
  97. package/bin/ECS/Core/SoAStorage.d.ts +97 -0
  98. package/bin/ECS/Core/SoAStorage.d.ts.map +1 -0
  99. package/bin/ECS/Core/SoAStorage.js +548 -0
  100. package/bin/ECS/Core/SoAStorage.js.map +1 -0
  101. package/bin/ECS/Core/Storage/index.d.ts +4 -0
  102. package/bin/ECS/Core/Storage/index.d.ts.map +1 -0
  103. package/bin/ECS/Core/Storage/index.js +4 -0
  104. package/bin/ECS/Core/Storage/index.js.map +1 -0
  105. package/bin/ECS/CoreEvents.d.ts +131 -0
  106. package/bin/ECS/CoreEvents.d.ts.map +1 -0
  107. package/bin/ECS/CoreEvents.js +163 -0
  108. package/bin/ECS/CoreEvents.js.map +1 -0
  109. package/bin/ECS/Entity.d.ts +455 -0
  110. package/bin/ECS/Entity.d.ts.map +1 -0
  111. package/bin/ECS/Entity.js +837 -0
  112. package/bin/ECS/Entity.js.map +1 -0
  113. package/bin/ECS/Scene.d.ts +225 -0
  114. package/bin/ECS/Scene.d.ts.map +1 -0
  115. package/bin/ECS/Scene.js +325 -0
  116. package/bin/ECS/Scene.js.map +1 -0
  117. package/bin/ECS/Systems/EntitySystem.d.ts +200 -0
  118. package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
  119. package/bin/ECS/Systems/EntitySystem.js +431 -0
  120. package/bin/ECS/Systems/EntitySystem.js.map +1 -0
  121. package/bin/ECS/Systems/IntervalSystem.d.ts +33 -0
  122. package/bin/ECS/Systems/IntervalSystem.d.ts.map +1 -0
  123. package/bin/ECS/Systems/IntervalSystem.js +50 -0
  124. package/bin/ECS/Systems/IntervalSystem.js.map +1 -0
  125. package/bin/ECS/Systems/PassiveSystem.d.ts +17 -0
  126. package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
  127. package/bin/ECS/Systems/PassiveSystem.js +19 -0
  128. package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
  129. package/bin/ECS/Systems/ProcessingSystem.d.ts +21 -0
  130. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
  131. package/bin/ECS/Systems/ProcessingSystem.js +20 -0
  132. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -0
  133. package/bin/ECS/Systems/index.d.ts +5 -0
  134. package/bin/ECS/Systems/index.d.ts.map +1 -0
  135. package/bin/ECS/Systems/index.js +6 -0
  136. package/bin/ECS/Systems/index.js.map +1 -0
  137. package/bin/ECS/Utils/BigIntCompatibility.d.ts +164 -0
  138. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +1 -0
  139. package/bin/ECS/Utils/BigIntCompatibility.js +578 -0
  140. package/bin/ECS/Utils/BigIntCompatibility.js.map +1 -0
  141. package/bin/ECS/Utils/Bits.d.ts +163 -0
  142. package/bin/ECS/Utils/Bits.d.ts.map +1 -0
  143. package/bin/ECS/Utils/Bits.js +286 -0
  144. package/bin/ECS/Utils/Bits.js.map +1 -0
  145. package/bin/ECS/Utils/ComponentTypeManager.d.ts +50 -0
  146. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +1 -0
  147. package/bin/ECS/Utils/ComponentTypeManager.js +84 -0
  148. package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -0
  149. package/bin/ECS/Utils/EntityList.d.ts +108 -0
  150. package/bin/ECS/Utils/EntityList.d.ts.map +1 -0
  151. package/bin/ECS/Utils/EntityList.js +262 -0
  152. package/bin/ECS/Utils/EntityList.js.map +1 -0
  153. package/bin/ECS/Utils/EntityProcessorList.d.ts +56 -0
  154. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
  155. package/bin/ECS/Utils/EntityProcessorList.js +102 -0
  156. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
  157. package/bin/ECS/Utils/IdentifierPool.d.ts +203 -0
  158. package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
  159. package/bin/ECS/Utils/IdentifierPool.js +325 -0
  160. package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
  161. package/bin/ECS/Utils/Matcher.d.ts +143 -0
  162. package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
  163. package/bin/ECS/Utils/Matcher.js +249 -0
  164. package/bin/ECS/Utils/Matcher.js.map +1 -0
  165. package/bin/ECS/Utils/index.d.ts +8 -0
  166. package/bin/ECS/Utils/index.d.ts.map +1 -0
  167. package/bin/ECS/Utils/index.js +9 -0
  168. package/bin/ECS/Utils/index.js.map +1 -0
  169. package/bin/ECS/index.d.ts +12 -0
  170. package/bin/ECS/index.d.ts.map +1 -0
  171. package/bin/ECS/index.js +12 -0
  172. package/bin/ECS/index.js.map +1 -0
  173. package/bin/Types/index.d.ts +471 -0
  174. package/bin/Types/index.d.ts.map +1 -0
  175. package/bin/Types/index.js +5 -0
  176. package/bin/Types/index.js.map +1 -0
  177. package/bin/Utils/Debug/ComponentDataCollector.d.ts +28 -0
  178. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +1 -0
  179. package/bin/Utils/Debug/ComponentDataCollector.js +248 -0
  180. package/bin/Utils/Debug/ComponentDataCollector.js.map +1 -0
  181. package/bin/Utils/Debug/DebugDataFormatter.d.ts +22 -0
  182. package/bin/Utils/Debug/DebugDataFormatter.d.ts.map +1 -0
  183. package/bin/Utils/Debug/DebugDataFormatter.js +117 -0
  184. package/bin/Utils/Debug/DebugDataFormatter.js.map +1 -0
  185. package/bin/Utils/Debug/DebugManager.d.ts +104 -0
  186. package/bin/Utils/Debug/DebugManager.d.ts.map +1 -0
  187. package/bin/Utils/Debug/DebugManager.js +647 -0
  188. package/bin/Utils/Debug/DebugManager.js.map +1 -0
  189. package/bin/Utils/Debug/EntityDataCollector.d.ts +92 -0
  190. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +1 -0
  191. package/bin/Utils/Debug/EntityDataCollector.js +864 -0
  192. package/bin/Utils/Debug/EntityDataCollector.js.map +1 -0
  193. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +32 -0
  194. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +1 -0
  195. package/bin/Utils/Debug/PerformanceDataCollector.js +217 -0
  196. package/bin/Utils/Debug/PerformanceDataCollector.js.map +1 -0
  197. package/bin/Utils/Debug/SceneDataCollector.d.ts +16 -0
  198. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +1 -0
  199. package/bin/Utils/Debug/SceneDataCollector.js +46 -0
  200. package/bin/Utils/Debug/SceneDataCollector.js.map +1 -0
  201. package/bin/Utils/Debug/SystemDataCollector.d.ts +11 -0
  202. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +1 -0
  203. package/bin/Utils/Debug/SystemDataCollector.js +59 -0
  204. package/bin/Utils/Debug/SystemDataCollector.js.map +1 -0
  205. package/bin/Utils/Debug/WebSocketManager.d.ts +59 -0
  206. package/bin/Utils/Debug/WebSocketManager.d.ts.map +1 -0
  207. package/bin/Utils/Debug/WebSocketManager.js +148 -0
  208. package/bin/Utils/Debug/WebSocketManager.js.map +1 -0
  209. package/bin/Utils/Debug/index.d.ts +8 -0
  210. package/bin/Utils/Debug/index.d.ts.map +1 -0
  211. package/bin/Utils/Debug/index.js +8 -0
  212. package/bin/Utils/Debug/index.js.map +1 -0
  213. package/bin/Utils/Emitter.d.ts +43 -0
  214. package/bin/Utils/Emitter.d.ts.map +1 -0
  215. package/bin/Utils/Emitter.js +69 -0
  216. package/bin/Utils/Emitter.js.map +1 -0
  217. package/bin/Utils/Extensions/NumberExtension.d.ts +13 -0
  218. package/bin/Utils/Extensions/NumberExtension.d.ts.map +1 -0
  219. package/bin/Utils/Extensions/NumberExtension.js +17 -0
  220. package/bin/Utils/Extensions/NumberExtension.js.map +1 -0
  221. package/bin/Utils/Extensions/TypeUtils.d.ts +13 -0
  222. package/bin/Utils/Extensions/TypeUtils.d.ts.map +1 -0
  223. package/bin/Utils/Extensions/TypeUtils.js +15 -0
  224. package/bin/Utils/Extensions/TypeUtils.js.map +1 -0
  225. package/bin/Utils/Extensions/index.d.ts +3 -0
  226. package/bin/Utils/Extensions/index.d.ts.map +1 -0
  227. package/bin/Utils/Extensions/index.js +4 -0
  228. package/bin/Utils/Extensions/index.js.map +1 -0
  229. package/bin/Utils/GlobalManager.d.ts +32 -0
  230. package/bin/Utils/GlobalManager.d.ts.map +1 -0
  231. package/bin/Utils/GlobalManager.js +53 -0
  232. package/bin/Utils/GlobalManager.js.map +1 -0
  233. package/bin/Utils/Logger.d.ts +156 -0
  234. package/bin/Utils/Logger.d.ts.map +1 -0
  235. package/bin/Utils/Logger.js +256 -0
  236. package/bin/Utils/Logger.js.map +1 -0
  237. package/bin/Utils/PerformanceMonitor.d.ts +211 -0
  238. package/bin/Utils/PerformanceMonitor.d.ts.map +1 -0
  239. package/bin/Utils/PerformanceMonitor.js +270 -0
  240. package/bin/Utils/PerformanceMonitor.js.map +1 -0
  241. package/bin/Utils/Pool/IPoolable.d.ts +29 -0
  242. package/bin/Utils/Pool/IPoolable.d.ts.map +1 -0
  243. package/bin/Utils/Pool/IPoolable.js +2 -0
  244. package/bin/Utils/Pool/IPoolable.js.map +1 -0
  245. package/bin/Utils/Pool/Pool.d.ts +109 -0
  246. package/bin/Utils/Pool/Pool.d.ts.map +1 -0
  247. package/bin/Utils/Pool/Pool.js +238 -0
  248. package/bin/Utils/Pool/Pool.js.map +1 -0
  249. package/bin/Utils/Pool/PoolManager.d.ts +91 -0
  250. package/bin/Utils/Pool/PoolManager.d.ts.map +1 -0
  251. package/bin/Utils/Pool/PoolManager.js +197 -0
  252. package/bin/Utils/Pool/PoolManager.js.map +1 -0
  253. package/bin/Utils/Pool/index.d.ts +4 -0
  254. package/bin/Utils/Pool/index.d.ts.map +1 -0
  255. package/bin/Utils/Pool/index.js +4 -0
  256. package/bin/Utils/Pool/index.js.map +1 -0
  257. package/bin/Utils/Time.d.ts +47 -0
  258. package/bin/Utils/Time.d.ts.map +1 -0
  259. package/bin/Utils/Time.js +64 -0
  260. package/bin/Utils/Time.js.map +1 -0
  261. package/bin/Utils/Timers/ITimer.d.ts +16 -0
  262. package/bin/Utils/Timers/ITimer.d.ts.map +1 -0
  263. package/bin/Utils/Timers/ITimer.js +2 -0
  264. package/bin/Utils/Timers/ITimer.js.map +1 -0
  265. package/bin/Utils/Timers/Timer.d.ts +30 -0
  266. package/bin/Utils/Timers/Timer.d.ts.map +1 -0
  267. package/bin/Utils/Timers/Timer.js +58 -0
  268. package/bin/Utils/Timers/Timer.js.map +1 -0
  269. package/bin/Utils/Timers/TimerManager.d.ts +19 -0
  270. package/bin/Utils/Timers/TimerManager.d.ts.map +1 -0
  271. package/bin/Utils/Timers/TimerManager.js +33 -0
  272. package/bin/Utils/Timers/TimerManager.js.map +1 -0
  273. package/bin/Utils/index.d.ts +9 -0
  274. package/bin/Utils/index.d.ts.map +1 -0
  275. package/bin/Utils/index.js +9 -0
  276. package/bin/Utils/index.js.map +1 -0
  277. package/bin/index.d.ts +16 -0
  278. package/bin/index.d.ts.map +1 -0
  279. package/bin/index.js +19 -0
  280. package/bin/index.js.map +1 -0
  281. package/package.json +52 -25
  282. package/.npmignore +0 -40
  283. package/LICENSE +0 -201
  284. package/README.md +0 -465
  285. package/SECURITY.md +0 -53
  286. package/index.cjs +0 -2
  287. package/index.cjs.map +0 -1
  288. package/index.d.ts +0 -6562
  289. package/index.mjs +0 -2
  290. package/index.mjs.map +0 -1
@@ -0,0 +1,91 @@
1
+ import { IPoolable, PoolStats } from './IPoolable';
2
+ import { Pool } from './Pool';
3
+ /**
4
+ * 池管理器
5
+ * 统一管理所有对象池
6
+ */
7
+ export declare class PoolManager {
8
+ private static instance;
9
+ private pools;
10
+ private autoCompactInterval;
11
+ private lastCompactTime;
12
+ static getInstance(): PoolManager;
13
+ /**
14
+ * 注册池
15
+ * @param name 池名称
16
+ * @param pool 池实例
17
+ */
18
+ registerPool<T extends IPoolable>(name: string, pool: Pool<T>): void;
19
+ /**
20
+ * 获取池
21
+ * @param name 池名称
22
+ * @returns 池实例
23
+ */
24
+ getPool<T extends IPoolable>(name: string): Pool<T> | null;
25
+ /**
26
+ * 更新池管理器(应在游戏循环中调用)
27
+ */
28
+ update(): void;
29
+ /**
30
+ * 创建或获取标准池
31
+ * @param name 池名称
32
+ * @param createFn 创建函数
33
+ * @param maxSize 最大大小
34
+ * @param estimatedObjectSize 估算对象大小
35
+ * @returns 池实例
36
+ */
37
+ createPool<T extends IPoolable>(name: string, createFn: () => T, maxSize?: number, estimatedObjectSize?: number): Pool<T>;
38
+ /**
39
+ * 移除池
40
+ * @param name 池名称
41
+ * @returns 是否成功移除
42
+ */
43
+ removePool(name: string): boolean;
44
+ /**
45
+ * 获取所有池名称
46
+ * @returns 池名称数组
47
+ */
48
+ getPoolNames(): string[];
49
+ /**
50
+ * 获取池数量
51
+ * @returns 池数量
52
+ */
53
+ getPoolCount(): number;
54
+ /**
55
+ * 压缩所有池
56
+ */
57
+ compactAllPools(): void;
58
+ /**
59
+ * 清空所有池
60
+ */
61
+ clearAllPools(): void;
62
+ /**
63
+ * 获取所有池的统计信息
64
+ * @returns 统计信息映射
65
+ */
66
+ getAllStats(): Map<string, PoolStats>;
67
+ /**
68
+ * 获取总体统计信息
69
+ * @returns 总体统计信息
70
+ */
71
+ getGlobalStats(): PoolStats;
72
+ /**
73
+ * 获取格式化的统计信息字符串
74
+ * @returns 格式化字符串
75
+ */
76
+ getStatsString(): string;
77
+ /**
78
+ * 设置自动压缩间隔
79
+ * @param intervalMs 间隔毫秒数
80
+ */
81
+ setAutoCompactInterval(intervalMs: number): void;
82
+ /**
83
+ * 预填充所有池
84
+ */
85
+ prewarmAllPools(): void;
86
+ /**
87
+ * 重置池管理器
88
+ */
89
+ reset(): void;
90
+ }
91
+ //# sourceMappingURL=PoolManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolManager.d.ts","sourceRoot":"","sources":["../../../src/Utils/Pool/PoolManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;GAGG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,eAAe,CAAK;WAEd,WAAW,IAAI,WAAW;IAOxC;;;;OAIG;IACI,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3E;;;;OAIG;IACI,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;IAIjE;;OAEG;IACI,MAAM,IAAI,IAAI;IASrB;;;;;;;OAOG;IACI,UAAU,CAAC,CAAC,SAAS,SAAS,EACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,EACjB,OAAO,GAAE,MAAY,EACrB,mBAAmB,GAAE,MAAa,GACnC,IAAI,CAAC,CAAC,CAAC;IAYV;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUxC;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;OAEG;IACI,eAAe,IAAI,IAAI;IAM9B;;OAEG;IACI,aAAa,IAAI,IAAI;IAM5B;;;OAGG;IACI,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAU5C;;;OAGG;IACI,cAAc,IAAI,SAAS;IA+BlC;;;OAGG;IACI,cAAc,IAAI,MAAM;IA0B/B;;;OAGG;IACI,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvD;;OAEG;IACI,eAAe,IAAI,IAAI;IAQ9B;;OAEG;IACI,KAAK,IAAI,IAAI;CAKvB"}
@@ -0,0 +1,197 @@
1
+ import { Pool } from './Pool';
2
+ /**
3
+ * 池管理器
4
+ * 统一管理所有对象池
5
+ */
6
+ export class PoolManager {
7
+ constructor() {
8
+ this.pools = new Map();
9
+ this.autoCompactInterval = 60000; // 60秒
10
+ this.lastCompactTime = 0;
11
+ }
12
+ static getInstance() {
13
+ if (!PoolManager.instance) {
14
+ PoolManager.instance = new PoolManager();
15
+ }
16
+ return PoolManager.instance;
17
+ }
18
+ /**
19
+ * 注册池
20
+ * @param name 池名称
21
+ * @param pool 池实例
22
+ */
23
+ registerPool(name, pool) {
24
+ this.pools.set(name, pool);
25
+ }
26
+ /**
27
+ * 获取池
28
+ * @param name 池名称
29
+ * @returns 池实例
30
+ */
31
+ getPool(name) {
32
+ return this.pools.get(name) || null;
33
+ }
34
+ /**
35
+ * 更新池管理器(应在游戏循环中调用)
36
+ */
37
+ update() {
38
+ const now = Date.now();
39
+ if (now - this.lastCompactTime > this.autoCompactInterval) {
40
+ this.compactAllPools();
41
+ this.lastCompactTime = now;
42
+ }
43
+ }
44
+ /**
45
+ * 创建或获取标准池
46
+ * @param name 池名称
47
+ * @param createFn 创建函数
48
+ * @param maxSize 最大大小
49
+ * @param estimatedObjectSize 估算对象大小
50
+ * @returns 池实例
51
+ */
52
+ createPool(name, createFn, maxSize = 100, estimatedObjectSize = 1024) {
53
+ let pool = this.pools.get(name);
54
+ if (!pool) {
55
+ pool = new Pool(createFn, maxSize, estimatedObjectSize);
56
+ this.pools.set(name, pool);
57
+ }
58
+ return pool;
59
+ }
60
+ /**
61
+ * 移除池
62
+ * @param name 池名称
63
+ * @returns 是否成功移除
64
+ */
65
+ removePool(name) {
66
+ const pool = this.pools.get(name);
67
+ if (pool) {
68
+ pool.clear();
69
+ this.pools.delete(name);
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ /**
75
+ * 获取所有池名称
76
+ * @returns 池名称数组
77
+ */
78
+ getPoolNames() {
79
+ return Array.from(this.pools.keys());
80
+ }
81
+ /**
82
+ * 获取池数量
83
+ * @returns 池数量
84
+ */
85
+ getPoolCount() {
86
+ return this.pools.size;
87
+ }
88
+ /**
89
+ * 压缩所有池
90
+ */
91
+ compactAllPools() {
92
+ for (const pool of this.pools.values()) {
93
+ pool.compact();
94
+ }
95
+ }
96
+ /**
97
+ * 清空所有池
98
+ */
99
+ clearAllPools() {
100
+ for (const pool of this.pools.values()) {
101
+ pool.clear();
102
+ }
103
+ }
104
+ /**
105
+ * 获取所有池的统计信息
106
+ * @returns 统计信息映射
107
+ */
108
+ getAllStats() {
109
+ const stats = new Map();
110
+ for (const [name, pool] of this.pools) {
111
+ stats.set(name, pool.getStats());
112
+ }
113
+ return stats;
114
+ }
115
+ /**
116
+ * 获取总体统计信息
117
+ * @returns 总体统计信息
118
+ */
119
+ getGlobalStats() {
120
+ let totalSize = 0;
121
+ let totalMaxSize = 0;
122
+ let totalCreated = 0;
123
+ let totalObtained = 0;
124
+ let totalReleased = 0;
125
+ let totalMemoryUsage = 0;
126
+ for (const pool of this.pools.values()) {
127
+ const stats = pool.getStats();
128
+ totalSize += stats.size;
129
+ totalMaxSize += stats.maxSize;
130
+ totalCreated += stats.totalCreated;
131
+ totalObtained += stats.totalObtained;
132
+ totalReleased += stats.totalReleased;
133
+ totalMemoryUsage += stats.estimatedMemoryUsage;
134
+ }
135
+ const hitRate = totalObtained === 0 ? 0 : (totalObtained - totalCreated) / totalObtained;
136
+ return {
137
+ size: totalSize,
138
+ maxSize: totalMaxSize,
139
+ totalCreated,
140
+ totalObtained,
141
+ totalReleased,
142
+ hitRate,
143
+ estimatedMemoryUsage: totalMemoryUsage
144
+ };
145
+ }
146
+ /**
147
+ * 获取格式化的统计信息字符串
148
+ * @returns 格式化字符串
149
+ */
150
+ getStatsString() {
151
+ const lines = ['=== Pool Manager Statistics ===', ''];
152
+ if (this.pools.size === 0) {
153
+ lines.push('No pools registered');
154
+ return lines.join('\n');
155
+ }
156
+ const globalStats = this.getGlobalStats();
157
+ lines.push(`Total Pools: ${this.pools.size}`);
158
+ lines.push(`Global Hit Rate: ${(globalStats.hitRate * 100).toFixed(1)}%`);
159
+ lines.push(`Global Memory Usage: ${(globalStats.estimatedMemoryUsage / 1024).toFixed(1)} KB`);
160
+ lines.push('');
161
+ for (const [name, pool] of this.pools) {
162
+ const stats = pool.getStats();
163
+ lines.push(`${name}:`);
164
+ lines.push(` Size: ${stats.size}/${stats.maxSize}`);
165
+ lines.push(` Hit Rate: ${(stats.hitRate * 100).toFixed(1)}%`);
166
+ lines.push(` Memory: ${(stats.estimatedMemoryUsage / 1024).toFixed(1)} KB`);
167
+ lines.push('');
168
+ }
169
+ return lines.join('\n');
170
+ }
171
+ /**
172
+ * 设置自动压缩间隔
173
+ * @param intervalMs 间隔毫秒数
174
+ */
175
+ setAutoCompactInterval(intervalMs) {
176
+ this.autoCompactInterval = intervalMs;
177
+ }
178
+ /**
179
+ * 预填充所有池
180
+ */
181
+ prewarmAllPools() {
182
+ for (const pool of this.pools.values()) {
183
+ const stats = pool.getStats();
184
+ const prewarmCount = Math.floor(stats.maxSize * 0.2); // 预填充20%
185
+ pool.prewarm(prewarmCount);
186
+ }
187
+ }
188
+ /**
189
+ * 重置池管理器
190
+ */
191
+ reset() {
192
+ this.clearAllPools();
193
+ this.pools.clear();
194
+ this.lastCompactTime = 0;
195
+ }
196
+ }
197
+ //# sourceMappingURL=PoolManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolManager.js","sourceRoot":"","sources":["../../../src/Utils/Pool/PoolManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './IPoolable';
2
+ export * from './Pool';
3
+ export * from './PoolManager';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Utils/Pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './IPoolable';
2
+ export * from './Pool';
3
+ export * from './PoolManager';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utils/Pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 时间管理工具类
3
+ * 提供游戏时间相关的功能,包括帧时间、总时间、时间缩放等
4
+ */
5
+ export declare class Time {
6
+ /**
7
+ * 上一帧到当前帧的时间间隔(秒)
8
+ */
9
+ static deltaTime: number;
10
+ /**
11
+ * 未缩放的帧时间间隔(秒)
12
+ */
13
+ static unscaledDeltaTime: number;
14
+ /**
15
+ * 游戏开始以来的总时间(秒)
16
+ */
17
+ static totalTime: number;
18
+ /**
19
+ * 未缩放的总时间(秒)
20
+ */
21
+ static unscaledTotalTime: number;
22
+ /**
23
+ * 时间缩放比例
24
+ */
25
+ static timeScale: number;
26
+ /**
27
+ * 当前帧数
28
+ */
29
+ static frameCount: number;
30
+ /**
31
+ * 使用外部引擎提供的deltaTime更新时间信息
32
+ * @param deltaTime 外部引擎提供的帧时间间隔(秒)
33
+ */
34
+ static update(deltaTime: number): void;
35
+ /**
36
+ * 场景改变时重置时间
37
+ */
38
+ static sceneChanged(): void;
39
+ /**
40
+ * 检查指定的时间间隔是否已经过去
41
+ * @param interval 时间间隔(秒)
42
+ * @param lastTime 上次检查的时间
43
+ * @returns 是否已经过去指定时间
44
+ */
45
+ static checkEvery(interval: number, lastTime: number): boolean;
46
+ }
47
+ //# sourceMappingURL=Time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Time.d.ts","sourceRoot":"","sources":["../../src/Utils/Time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,IAAI;IACb;;OAEG;IACH,OAAc,SAAS,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAK;IAE5C;;OAEG;IACH,OAAc,SAAS,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAK;IAE5C;;OAEG;IACH,OAAc,SAAS,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,OAAc,UAAU,EAAE,MAAM,CAAK;IAErC;;;OAGG;WACW,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAa7C;;OAEG;WACW,YAAY,IAAI,IAAI;IAQlC;;;;;OAKG;WACW,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxE"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 时间管理工具类
3
+ * 提供游戏时间相关的功能,包括帧时间、总时间、时间缩放等
4
+ */
5
+ export class Time {
6
+ /**
7
+ * 使用外部引擎提供的deltaTime更新时间信息
8
+ * @param deltaTime 外部引擎提供的帧时间间隔(秒)
9
+ */
10
+ static update(deltaTime) {
11
+ // 设置未缩放的帧时间
12
+ this.unscaledDeltaTime = deltaTime;
13
+ this.deltaTime = deltaTime * this.timeScale;
14
+ // 更新总时间
15
+ this.unscaledTotalTime += this.unscaledDeltaTime;
16
+ this.totalTime += this.deltaTime;
17
+ // 更新帧数
18
+ this.frameCount++;
19
+ }
20
+ /**
21
+ * 场景改变时重置时间
22
+ */
23
+ static sceneChanged() {
24
+ this.frameCount = 0;
25
+ this.totalTime = 0;
26
+ this.unscaledTotalTime = 0;
27
+ this.deltaTime = 0;
28
+ this.unscaledDeltaTime = 0;
29
+ }
30
+ /**
31
+ * 检查指定的时间间隔是否已经过去
32
+ * @param interval 时间间隔(秒)
33
+ * @param lastTime 上次检查的时间
34
+ * @returns 是否已经过去指定时间
35
+ */
36
+ static checkEvery(interval, lastTime) {
37
+ return this.totalTime - lastTime >= interval;
38
+ }
39
+ }
40
+ /**
41
+ * 上一帧到当前帧的时间间隔(秒)
42
+ */
43
+ Time.deltaTime = 0;
44
+ /**
45
+ * 未缩放的帧时间间隔(秒)
46
+ */
47
+ Time.unscaledDeltaTime = 0;
48
+ /**
49
+ * 游戏开始以来的总时间(秒)
50
+ */
51
+ Time.totalTime = 0;
52
+ /**
53
+ * 未缩放的总时间(秒)
54
+ */
55
+ Time.unscaledTotalTime = 0;
56
+ /**
57
+ * 时间缩放比例
58
+ */
59
+ Time.timeScale = 1;
60
+ /**
61
+ * 当前帧数
62
+ */
63
+ Time.frameCount = 0;
64
+ //# sourceMappingURL=Time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Time.js","sourceRoot":"","sources":["../../src/Utils/Time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,IAAI;IA+Bb;;;OAGG;IACI,MAAM,CAAC,MAAM,CAAC,SAAiB;QAClC,YAAY;QACZ,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE5C,QAAQ;QACR,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAEjC,OAAO;QACP,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,YAAY;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,QAAgB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,QAAQ,CAAC;IACjD,CAAC;;AAlED;;GAEG;AACW,cAAS,GAAW,CAAC,CAAC;AAEpC;;GAEG;AACW,sBAAiB,GAAW,CAAC,CAAC;AAE5C;;GAEG;AACW,cAAS,GAAW,CAAC,CAAC;AAEpC;;GAEG;AACW,sBAAiB,GAAW,CAAC,CAAC;AAE5C;;GAEG;AACW,cAAS,GAAW,CAAC,CAAC;AAEpC;;GAEG;AACW,eAAU,GAAW,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface ITimer<TContext = unknown> {
2
+ context: TContext;
3
+ /**
4
+ * 调用stop以停止此计时器再次运行。这对非重复计时器没有影响。
5
+ */
6
+ stop(): void;
7
+ /**
8
+ * 将计时器的运行时间重置为0
9
+ */
10
+ reset(): void;
11
+ /**
12
+ * 返回投向T的上下文,作为方便
13
+ */
14
+ getContext<T>(): T;
15
+ }
16
+ //# sourceMappingURL=ITimer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITimer.d.ts","sourceRoot":"","sources":["../../../src/Utils/Timers/ITimer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,QAAQ,GAAG,OAAO;IACtC,OAAO,EAAE,QAAQ,CAAC;IAElB;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ITimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITimer.js","sourceRoot":"","sources":["../../../src/Utils/Timers/ITimer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { ITimer } from './ITimer';
2
+ /**
3
+ * 私有类隐藏ITimer的实现
4
+ */
5
+ export declare class Timer<TContext = unknown> implements ITimer<TContext> {
6
+ context: TContext;
7
+ _timeInSeconds: number;
8
+ _repeats: boolean;
9
+ _onTime: (timer: ITimer<TContext>) => void;
10
+ _isDone: boolean;
11
+ _elapsedTime: number;
12
+ getContext<T>(): T;
13
+ /**
14
+ * 定时器是否已完成
15
+ */
16
+ get isDone(): boolean;
17
+ /**
18
+ * 定时器已运行的时间
19
+ */
20
+ get elapsedTime(): number;
21
+ reset(): void;
22
+ stop(): void;
23
+ tick(): boolean;
24
+ initialize(timeInsSeconds: number, repeats: boolean, context: TContext, onTime: (timer: ITimer<TContext>) => void): void;
25
+ /**
26
+ * 空出对象引用,以便在js需要时GC可以清理它们的引用
27
+ */
28
+ unload(): void;
29
+ }
30
+ //# sourceMappingURL=Timer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timer.d.ts","sourceRoot":"","sources":["../../../src/Utils/Timers/Timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAE,YAAW,MAAM,CAAC,QAAQ,CAAC;IACvD,OAAO,EAAG,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAK;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAS;IACzB,YAAY,EAAE,MAAM,CAAK;IAEzB,UAAU,CAAC,CAAC,KAAK,CAAC;IAIzB;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAEM,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,IAAI;IAeJ,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAG,IAAI;IAOtH;;OAEG;IACI,MAAM;CAIhB"}
@@ -0,0 +1,58 @@
1
+ import { Time } from '../Time';
2
+ /**
3
+ * 私有类隐藏ITimer的实现
4
+ */
5
+ export class Timer {
6
+ constructor() {
7
+ this._timeInSeconds = 0;
8
+ this._repeats = false;
9
+ this._isDone = false;
10
+ this._elapsedTime = 0;
11
+ }
12
+ getContext() {
13
+ return this.context;
14
+ }
15
+ /**
16
+ * 定时器是否已完成
17
+ */
18
+ get isDone() {
19
+ return this._isDone;
20
+ }
21
+ /**
22
+ * 定时器已运行的时间
23
+ */
24
+ get elapsedTime() {
25
+ return this._elapsedTime;
26
+ }
27
+ reset() {
28
+ this._elapsedTime = 0;
29
+ }
30
+ stop() {
31
+ this._isDone = true;
32
+ }
33
+ tick() {
34
+ // 如果stop在tick之前被调用,那么isDone将为true,我们不应该再做任何事情
35
+ if (!this._isDone && this._elapsedTime > this._timeInSeconds) {
36
+ this._elapsedTime -= this._timeInSeconds;
37
+ this._onTime(this);
38
+ if (!this._isDone && !this._repeats)
39
+ this._isDone = true;
40
+ }
41
+ this._elapsedTime += Time.deltaTime;
42
+ return this._isDone;
43
+ }
44
+ initialize(timeInsSeconds, repeats, context, onTime) {
45
+ this._timeInSeconds = timeInsSeconds;
46
+ this._repeats = repeats;
47
+ this.context = context;
48
+ this._onTime = onTime.bind(context);
49
+ }
50
+ /**
51
+ * 空出对象引用,以便在js需要时GC可以清理它们的引用
52
+ */
53
+ unload() {
54
+ this.context = null;
55
+ this._onTime = null;
56
+ }
57
+ }
58
+ //# sourceMappingURL=Timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/Utils/Timers/Timer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,KAAK;IAAlB;QAEW,mBAAc,GAAW,CAAC,CAAC;QAC3B,aAAQ,GAAY,KAAK,CAAC;QAE1B,YAAO,GAAY,KAAK,CAAC;QACzB,iBAAY,GAAW,CAAC,CAAC;IAyDpC,CAAC;IAvDU,UAAU;QACb,OAAO,IAAI,CAAC,OAAuB,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,IAAI;QACP,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC;QAEpC,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,UAAU,CAAC,cAAsB,EAAE,OAAgB,EAAE,OAAiB,EAAE,MAAuC;QAClH,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,MAAM;QACT,IAAI,CAAC,OAAO,GAAG,IAA2B,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAK,CAAC;IACzB,CAAC;CACJ"}
@@ -0,0 +1,19 @@
1
+ import { GlobalManager } from '../GlobalManager';
2
+ import { Timer } from './Timer';
3
+ import { ITimer } from './ITimer';
4
+ /**
5
+ * 允许动作的延迟和重复执行
6
+ */
7
+ export declare class TimerManager extends GlobalManager {
8
+ _timers: Array<Timer<unknown>>;
9
+ update(): void;
10
+ /**
11
+ * 调度一个一次性或重复的计时器,该计时器将调用已传递的动作
12
+ * @param timeInSeconds
13
+ * @param repeats
14
+ * @param context
15
+ * @param onTime
16
+ */
17
+ schedule<TContext = unknown>(timeInSeconds: number, repeats: boolean, context: TContext, onTime: (timer: ITimer<TContext>) => void): Timer<TContext>;
18
+ }
19
+ //# sourceMappingURL=TimerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimerManager.d.ts","sourceRoot":"","sources":["../../../src/Utils/Timers/TimerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;IACpC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM;IAE3B,MAAM;IAStB;;;;;;OAMG;IACI,QAAQ,CAAC,QAAQ,GAAG,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;CAO5J"}
@@ -0,0 +1,33 @@
1
+ import { GlobalManager } from '../GlobalManager';
2
+ import { Timer } from './Timer';
3
+ /**
4
+ * 允许动作的延迟和重复执行
5
+ */
6
+ export class TimerManager extends GlobalManager {
7
+ constructor() {
8
+ super(...arguments);
9
+ this._timers = [];
10
+ }
11
+ update() {
12
+ for (let i = this._timers.length - 1; i >= 0; i--) {
13
+ if (this._timers[i].tick()) {
14
+ this._timers[i].unload();
15
+ this._timers.splice(i, 1);
16
+ }
17
+ }
18
+ }
19
+ /**
20
+ * 调度一个一次性或重复的计时器,该计时器将调用已传递的动作
21
+ * @param timeInSeconds
22
+ * @param repeats
23
+ * @param context
24
+ * @param onTime
25
+ */
26
+ schedule(timeInSeconds, repeats, context, onTime) {
27
+ let timer = new Timer();
28
+ timer.initialize(timeInSeconds, repeats, context, onTime);
29
+ this._timers.push(timer);
30
+ return timer;
31
+ }
32
+ }
33
+ //# sourceMappingURL=TimerManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimerManager.js","sourceRoot":"","sources":["../../../src/Utils/Timers/TimerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IAA/C;;QACW,YAAO,GAA0B,EAAE,CAAC;IAyB/C,CAAC;IAvBmB,MAAM;QAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAG,EAAC,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAqB,aAAqB,EAAE,OAAgB,EAAE,OAAiB,EAAE,MAAuC;QACnI,IAAI,KAAK,GAAG,IAAI,KAAK,EAAY,CAAC;QAClC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAuB,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}
@@ -0,0 +1,9 @@
1
+ export * from './Extensions';
2
+ export * from './Pool';
3
+ export * from './Emitter';
4
+ export * from './GlobalManager';
5
+ export * from './PerformanceMonitor';
6
+ export { Time } from './Time';
7
+ export * from './Debug';
8
+ export * from './Logger';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './Extensions';
2
+ export * from './Pool';
3
+ export * from './Emitter';
4
+ export * from './GlobalManager';
5
+ export * from './PerformanceMonitor';
6
+ export { Time } from './Time';
7
+ export * from './Debug';
8
+ export * from './Logger';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}