@esengine/ecs-framework 2.2.21 → 2.3.0

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 (490) hide show
  1. package/bin/Core/DI/Decorators.d.ts +206 -0
  2. package/bin/Core/DI/Decorators.d.ts.map +1 -0
  3. package/bin/Core/DI/Decorators.js +253 -0
  4. package/bin/Core/DI/Decorators.js.map +1 -0
  5. package/bin/Core/DI/index.d.ts +8 -0
  6. package/bin/Core/DI/index.d.ts.map +1 -0
  7. package/bin/Core/DI/index.js +7 -0
  8. package/bin/Core/DI/index.js.map +1 -0
  9. package/bin/Core/Plugin.d.ts +112 -0
  10. package/bin/Core/Plugin.d.ts.map +1 -0
  11. package/bin/Core/Plugin.js +19 -0
  12. package/bin/Core/Plugin.js.map +1 -0
  13. package/bin/Core/PluginManager.d.ts +118 -0
  14. package/bin/Core/PluginManager.d.ts.map +1 -0
  15. package/bin/Core/PluginManager.js +229 -0
  16. package/bin/Core/PluginManager.js.map +1 -0
  17. package/bin/Core/ServiceContainer.d.ts +221 -0
  18. package/bin/Core/ServiceContainer.d.ts.map +1 -0
  19. package/bin/Core/ServiceContainer.js +352 -0
  20. package/bin/Core/ServiceContainer.js.map +1 -0
  21. package/bin/Core.d.ts +379 -0
  22. package/bin/Core.d.ts.map +1 -0
  23. package/bin/Core.js +553 -0
  24. package/bin/Core.js.map +1 -0
  25. package/bin/ECS/Component.d.ts +104 -0
  26. package/bin/ECS/Component.d.ts.map +1 -0
  27. package/bin/ECS/Component.js +105 -0
  28. package/bin/ECS/Component.js.map +1 -0
  29. package/bin/ECS/Components/HierarchyComponent.d.ts +46 -0
  30. package/bin/ECS/Components/HierarchyComponent.d.ts.map +1 -0
  31. package/bin/ECS/Components/HierarchyComponent.js +65 -0
  32. package/bin/ECS/Components/HierarchyComponent.js.map +1 -0
  33. package/bin/ECS/Components/index.d.ts +2 -0
  34. package/bin/ECS/Components/index.d.ts.map +1 -0
  35. package/bin/ECS/Components/index.js +2 -0
  36. package/bin/ECS/Components/index.js.map +1 -0
  37. package/bin/ECS/Core/ArchetypeSystem.d.ts +103 -0
  38. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +1 -0
  39. package/bin/ECS/Core/ArchetypeSystem.js +244 -0
  40. package/bin/ECS/Core/ArchetypeSystem.js.map +1 -0
  41. package/bin/ECS/Core/CommandBuffer.d.ts +154 -0
  42. package/bin/ECS/Core/CommandBuffer.d.ts.map +1 -0
  43. package/bin/ECS/Core/CommandBuffer.js +244 -0
  44. package/bin/ECS/Core/CommandBuffer.js.map +1 -0
  45. package/bin/ECS/Core/ComponentPool.d.ts +139 -0
  46. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  47. package/bin/ECS/Core/ComponentPool.js +276 -0
  48. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  49. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +127 -0
  50. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +1 -0
  51. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +235 -0
  52. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +1 -0
  53. package/bin/ECS/Core/ComponentStorage.d.ts +185 -0
  54. package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
  55. package/bin/ECS/Core/ComponentStorage.js +321 -0
  56. package/bin/ECS/Core/ComponentStorage.js.map +1 -0
  57. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts +26 -0
  58. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts.map +1 -0
  59. package/bin/ECS/Core/EntityLifecyclePolicy.js +2 -0
  60. package/bin/ECS/Core/EntityLifecyclePolicy.js.map +1 -0
  61. package/bin/ECS/Core/EventBus.d.ts +210 -0
  62. package/bin/ECS/Core/EventBus.d.ts.map +1 -0
  63. package/bin/ECS/Core/EventBus.js +370 -0
  64. package/bin/ECS/Core/EventBus.js.map +1 -0
  65. package/bin/ECS/Core/EventSystem.d.ts +225 -0
  66. package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
  67. package/bin/ECS/Core/EventSystem.js +448 -0
  68. package/bin/ECS/Core/EventSystem.js.map +1 -0
  69. package/bin/ECS/Core/Events/index.d.ts +3 -0
  70. package/bin/ECS/Core/Events/index.d.ts.map +1 -0
  71. package/bin/ECS/Core/Events/index.js +3 -0
  72. package/bin/ECS/Core/Events/index.js.map +1 -0
  73. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +35 -0
  74. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +1 -0
  75. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +48 -0
  76. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +1 -0
  77. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +135 -0
  78. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +1 -0
  79. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +166 -0
  80. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +1 -0
  81. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +58 -0
  82. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +1 -0
  83. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +85 -0
  84. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +1 -0
  85. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +110 -0
  86. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +1 -0
  87. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +181 -0
  88. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +1 -0
  89. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +53 -0
  90. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +1 -0
  91. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +79 -0
  92. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +1 -0
  93. package/bin/ECS/Core/FluentAPI/index.d.ts +6 -0
  94. package/bin/ECS/Core/FluentAPI/index.d.ts.map +1 -0
  95. package/bin/ECS/Core/FluentAPI/index.js +6 -0
  96. package/bin/ECS/Core/FluentAPI/index.js.map +1 -0
  97. package/bin/ECS/Core/FluentAPI.d.ts +2 -0
  98. package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
  99. package/bin/ECS/Core/FluentAPI.js +3 -0
  100. package/bin/ECS/Core/FluentAPI.js.map +1 -0
  101. package/bin/ECS/Core/Query/TypedQuery.d.ts +214 -0
  102. package/bin/ECS/Core/Query/TypedQuery.d.ts.map +1 -0
  103. package/bin/ECS/Core/Query/TypedQuery.js +294 -0
  104. package/bin/ECS/Core/Query/TypedQuery.js.map +1 -0
  105. package/bin/ECS/Core/Query/index.d.ts +3 -0
  106. package/bin/ECS/Core/Query/index.d.ts.map +1 -0
  107. package/bin/ECS/Core/Query/index.js +3 -0
  108. package/bin/ECS/Core/Query/index.js.map +1 -0
  109. package/bin/ECS/Core/QuerySystem.d.ts +458 -0
  110. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
  111. package/bin/ECS/Core/QuerySystem.js +1069 -0
  112. package/bin/ECS/Core/QuerySystem.js.map +1 -0
  113. package/bin/ECS/Core/QueryTypes.d.ts +34 -0
  114. package/bin/ECS/Core/QueryTypes.d.ts.map +1 -0
  115. package/bin/ECS/Core/QueryTypes.js +13 -0
  116. package/bin/ECS/Core/QueryTypes.js.map +1 -0
  117. package/bin/ECS/Core/ReactiveQuery.d.ts +211 -0
  118. package/bin/ECS/Core/ReactiveQuery.d.ts.map +1 -0
  119. package/bin/ECS/Core/ReactiveQuery.js +401 -0
  120. package/bin/ECS/Core/ReactiveQuery.js.map +1 -0
  121. package/bin/ECS/Core/ReferenceTracker.d.ts +111 -0
  122. package/bin/ECS/Core/ReferenceTracker.d.ts.map +1 -0
  123. package/bin/ECS/Core/ReferenceTracker.js +254 -0
  124. package/bin/ECS/Core/ReferenceTracker.js.map +1 -0
  125. package/bin/ECS/Core/SoASerializer.d.ts +28 -0
  126. package/bin/ECS/Core/SoASerializer.d.ts.map +1 -0
  127. package/bin/ECS/Core/SoASerializer.js +85 -0
  128. package/bin/ECS/Core/SoASerializer.js.map +1 -0
  129. package/bin/ECS/Core/SoAStorage.d.ts +129 -0
  130. package/bin/ECS/Core/SoAStorage.d.ts.map +1 -0
  131. package/bin/ECS/Core/SoAStorage.js +685 -0
  132. package/bin/ECS/Core/SoAStorage.js.map +1 -0
  133. package/bin/ECS/Core/SoATypeRegistry.d.ts +50 -0
  134. package/bin/ECS/Core/SoATypeRegistry.d.ts.map +1 -0
  135. package/bin/ECS/Core/SoATypeRegistry.js +135 -0
  136. package/bin/ECS/Core/SoATypeRegistry.js.map +1 -0
  137. package/bin/ECS/Core/Storage/index.d.ts +4 -0
  138. package/bin/ECS/Core/Storage/index.d.ts.map +1 -0
  139. package/bin/ECS/Core/Storage/index.js +4 -0
  140. package/bin/ECS/Core/Storage/index.js.map +1 -0
  141. package/bin/ECS/Core/StorageDecorators.d.ts +20 -0
  142. package/bin/ECS/Core/StorageDecorators.d.ts.map +1 -0
  143. package/bin/ECS/Core/StorageDecorators.js +27 -0
  144. package/bin/ECS/Core/StorageDecorators.js.map +1 -0
  145. package/bin/ECS/CoreEvents.d.ts +131 -0
  146. package/bin/ECS/CoreEvents.d.ts.map +1 -0
  147. package/bin/ECS/CoreEvents.js +163 -0
  148. package/bin/ECS/CoreEvents.js.map +1 -0
  149. package/bin/ECS/Decorators/EntityRefDecorator.d.ts +46 -0
  150. package/bin/ECS/Decorators/EntityRefDecorator.d.ts.map +1 -0
  151. package/bin/ECS/Decorators/EntityRefDecorator.js +118 -0
  152. package/bin/ECS/Decorators/EntityRefDecorator.js.map +1 -0
  153. package/bin/ECS/Decorators/PropertyDecorator.d.ts +168 -0
  154. package/bin/ECS/Decorators/PropertyDecorator.d.ts.map +1 -0
  155. package/bin/ECS/Decorators/PropertyDecorator.js +40 -0
  156. package/bin/ECS/Decorators/PropertyDecorator.js.map +1 -0
  157. package/bin/ECS/Decorators/TypeDecorators.d.ts +124 -0
  158. package/bin/ECS/Decorators/TypeDecorators.d.ts.map +1 -0
  159. package/bin/ECS/Decorators/TypeDecorators.js +151 -0
  160. package/bin/ECS/Decorators/TypeDecorators.js.map +1 -0
  161. package/bin/ECS/Decorators/index.d.ts +7 -0
  162. package/bin/ECS/Decorators/index.d.ts.map +1 -0
  163. package/bin/ECS/Decorators/index.js +4 -0
  164. package/bin/ECS/Decorators/index.js.map +1 -0
  165. package/bin/ECS/Entity.d.ts +415 -0
  166. package/bin/ECS/Entity.d.ts.map +1 -0
  167. package/bin/ECS/Entity.js +683 -0
  168. package/bin/ECS/Entity.js.map +1 -0
  169. package/bin/ECS/EntityTags.d.ts +71 -0
  170. package/bin/ECS/EntityTags.d.ts.map +1 -0
  171. package/bin/ECS/EntityTags.js +82 -0
  172. package/bin/ECS/EntityTags.js.map +1 -0
  173. package/bin/ECS/IScene.d.ts +308 -0
  174. package/bin/ECS/IScene.d.ts.map +1 -0
  175. package/bin/ECS/IScene.js +2 -0
  176. package/bin/ECS/IScene.js.map +1 -0
  177. package/bin/ECS/Scene.d.ts +799 -0
  178. package/bin/ECS/Scene.d.ts.map +1 -0
  179. package/bin/ECS/Scene.js +1203 -0
  180. package/bin/ECS/Scene.js.map +1 -0
  181. package/bin/ECS/SceneManager.d.ts +197 -0
  182. package/bin/ECS/SceneManager.d.ts.map +1 -0
  183. package/bin/ECS/SceneManager.js +264 -0
  184. package/bin/ECS/SceneManager.js.map +1 -0
  185. package/bin/ECS/Serialization/ComponentSerializer.d.ts +106 -0
  186. package/bin/ECS/Serialization/ComponentSerializer.d.ts.map +1 -0
  187. package/bin/ECS/Serialization/ComponentSerializer.js +251 -0
  188. package/bin/ECS/Serialization/ComponentSerializer.js.map +1 -0
  189. package/bin/ECS/Serialization/EntitySerializer.d.ts +111 -0
  190. package/bin/ECS/Serialization/EntitySerializer.d.ts.map +1 -0
  191. package/bin/ECS/Serialization/EntitySerializer.js +155 -0
  192. package/bin/ECS/Serialization/EntitySerializer.js.map +1 -0
  193. package/bin/ECS/Serialization/IncrementalSerializer.d.ts +259 -0
  194. package/bin/ECS/Serialization/IncrementalSerializer.d.ts.map +1 -0
  195. package/bin/ECS/Serialization/IncrementalSerializer.js +500 -0
  196. package/bin/ECS/Serialization/IncrementalSerializer.js.map +1 -0
  197. package/bin/ECS/Serialization/SceneSerializer.d.ts +213 -0
  198. package/bin/ECS/Serialization/SceneSerializer.d.ts.map +1 -0
  199. package/bin/ECS/Serialization/SceneSerializer.js +387 -0
  200. package/bin/ECS/Serialization/SceneSerializer.js.map +1 -0
  201. package/bin/ECS/Serialization/SerializationDecorators.d.ts +136 -0
  202. package/bin/ECS/Serialization/SerializationDecorators.d.ts.map +1 -0
  203. package/bin/ECS/Serialization/SerializationDecorators.js +216 -0
  204. package/bin/ECS/Serialization/SerializationDecorators.js.map +1 -0
  205. package/bin/ECS/Serialization/VersionMigration.d.ts +156 -0
  206. package/bin/ECS/Serialization/VersionMigration.d.ts.map +1 -0
  207. package/bin/ECS/Serialization/VersionMigration.js +279 -0
  208. package/bin/ECS/Serialization/VersionMigration.js.map +1 -0
  209. package/bin/ECS/Serialization/index.d.ts +18 -0
  210. package/bin/ECS/Serialization/index.d.ts.map +1 -0
  211. package/bin/ECS/Serialization/index.js +18 -0
  212. package/bin/ECS/Serialization/index.js.map +1 -0
  213. package/bin/ECS/Systems/EntityCache.d.ts +114 -0
  214. package/bin/ECS/Systems/EntityCache.d.ts.map +1 -0
  215. package/bin/ECS/Systems/EntityCache.js +145 -0
  216. package/bin/ECS/Systems/EntityCache.js.map +1 -0
  217. package/bin/ECS/Systems/EntitySystem.d.ts +591 -0
  218. package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
  219. package/bin/ECS/Systems/EntitySystem.js +1102 -0
  220. package/bin/ECS/Systems/EntitySystem.js.map +1 -0
  221. package/bin/ECS/Systems/HierarchySystem.d.ts +155 -0
  222. package/bin/ECS/Systems/HierarchySystem.d.ts.map +1 -0
  223. package/bin/ECS/Systems/HierarchySystem.js +498 -0
  224. package/bin/ECS/Systems/HierarchySystem.js.map +1 -0
  225. package/bin/ECS/Systems/IntervalSystem.d.ts +33 -0
  226. package/bin/ECS/Systems/IntervalSystem.d.ts.map +1 -0
  227. package/bin/ECS/Systems/IntervalSystem.js +50 -0
  228. package/bin/ECS/Systems/IntervalSystem.js.map +1 -0
  229. package/bin/ECS/Systems/PassiveSystem.d.ts +17 -0
  230. package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
  231. package/bin/ECS/Systems/PassiveSystem.js +19 -0
  232. package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
  233. package/bin/ECS/Systems/ProcessingSystem.d.ts +21 -0
  234. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
  235. package/bin/ECS/Systems/ProcessingSystem.js +20 -0
  236. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -0
  237. package/bin/ECS/Systems/WorkerEntitySystem.d.ts +313 -0
  238. package/bin/ECS/Systems/WorkerEntitySystem.d.ts.map +1 -0
  239. package/bin/ECS/Systems/WorkerEntitySystem.js +792 -0
  240. package/bin/ECS/Systems/WorkerEntitySystem.js.map +1 -0
  241. package/bin/ECS/Systems/index.d.ts +8 -0
  242. package/bin/ECS/Systems/index.d.ts.map +1 -0
  243. package/bin/ECS/Systems/index.js +8 -0
  244. package/bin/ECS/Systems/index.js.map +1 -0
  245. package/bin/ECS/TypedEntity.d.ts +192 -0
  246. package/bin/ECS/TypedEntity.d.ts.map +1 -0
  247. package/bin/ECS/TypedEntity.js +254 -0
  248. package/bin/ECS/TypedEntity.js.map +1 -0
  249. package/bin/ECS/Utils/BigIntCompatibility.d.ts +151 -0
  250. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +1 -0
  251. package/bin/ECS/Utils/BigIntCompatibility.js +476 -0
  252. package/bin/ECS/Utils/BigIntCompatibility.js.map +1 -0
  253. package/bin/ECS/Utils/BitMaskHashMap.d.ts +28 -0
  254. package/bin/ECS/Utils/BitMaskHashMap.d.ts.map +1 -0
  255. package/bin/ECS/Utils/BitMaskHashMap.js +127 -0
  256. package/bin/ECS/Utils/BitMaskHashMap.js.map +1 -0
  257. package/bin/ECS/Utils/Bits.d.ts +154 -0
  258. package/bin/ECS/Utils/Bits.d.ts.map +1 -0
  259. package/bin/ECS/Utils/Bits.js +331 -0
  260. package/bin/ECS/Utils/Bits.js.map +1 -0
  261. package/bin/ECS/Utils/ComponentSparseSet.d.ts +143 -0
  262. package/bin/ECS/Utils/ComponentSparseSet.d.ts.map +1 -0
  263. package/bin/ECS/Utils/ComponentSparseSet.js +347 -0
  264. package/bin/ECS/Utils/ComponentSparseSet.js.map +1 -0
  265. package/bin/ECS/Utils/EntityList.d.ts +115 -0
  266. package/bin/ECS/Utils/EntityList.d.ts.map +1 -0
  267. package/bin/ECS/Utils/EntityList.js +258 -0
  268. package/bin/ECS/Utils/EntityList.js.map +1 -0
  269. package/bin/ECS/Utils/EntityProcessorList.d.ts +56 -0
  270. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
  271. package/bin/ECS/Utils/EntityProcessorList.js +113 -0
  272. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
  273. package/bin/ECS/Utils/IdentifierPool.d.ts +203 -0
  274. package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
  275. package/bin/ECS/Utils/IdentifierPool.js +325 -0
  276. package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
  277. package/bin/ECS/Utils/Matcher.d.ts +171 -0
  278. package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
  279. package/bin/ECS/Utils/Matcher.js +293 -0
  280. package/bin/ECS/Utils/Matcher.js.map +1 -0
  281. package/bin/ECS/Utils/SparseSet.d.ts +170 -0
  282. package/bin/ECS/Utils/SparseSet.d.ts.map +1 -0
  283. package/bin/ECS/Utils/SparseSet.js +280 -0
  284. package/bin/ECS/Utils/SparseSet.js.map +1 -0
  285. package/bin/ECS/Utils/index.d.ts +9 -0
  286. package/bin/ECS/Utils/index.d.ts.map +1 -0
  287. package/bin/ECS/Utils/index.js +10 -0
  288. package/bin/ECS/Utils/index.js.map +1 -0
  289. package/bin/ECS/World.d.ts +238 -0
  290. package/bin/ECS/World.d.ts.map +1 -0
  291. package/bin/ECS/World.js +416 -0
  292. package/bin/ECS/World.js.map +1 -0
  293. package/bin/ECS/WorldManager.d.ts +224 -0
  294. package/bin/ECS/WorldManager.d.ts.map +1 -0
  295. package/bin/ECS/WorldManager.js +365 -0
  296. package/bin/ECS/WorldManager.js.map +1 -0
  297. package/bin/ECS/index.d.ts +26 -0
  298. package/bin/ECS/index.d.ts.map +1 -0
  299. package/bin/ECS/index.js +21 -0
  300. package/bin/ECS/index.js.map +1 -0
  301. package/bin/Platform/IPlatformAdapter.d.ts +169 -0
  302. package/bin/Platform/IPlatformAdapter.d.ts.map +1 -0
  303. package/bin/Platform/IPlatformAdapter.js +2 -0
  304. package/bin/Platform/IPlatformAdapter.js.map +1 -0
  305. package/bin/Platform/PlatformDetector.d.ts +56 -0
  306. package/bin/Platform/PlatformDetector.d.ts.map +1 -0
  307. package/bin/Platform/PlatformDetector.js +247 -0
  308. package/bin/Platform/PlatformDetector.js.map +1 -0
  309. package/bin/Platform/PlatformManager.d.ts +50 -0
  310. package/bin/Platform/PlatformManager.d.ts.map +1 -0
  311. package/bin/Platform/PlatformManager.js +114 -0
  312. package/bin/Platform/PlatformManager.js.map +1 -0
  313. package/bin/Platform/index.d.ts +19 -0
  314. package/bin/Platform/index.d.ts.map +1 -0
  315. package/bin/Platform/index.js +29 -0
  316. package/bin/Platform/index.js.map +1 -0
  317. package/bin/Plugins/DebugPlugin.d.ts +156 -0
  318. package/bin/Plugins/DebugPlugin.d.ts.map +1 -0
  319. package/bin/Plugins/DebugPlugin.js +248 -0
  320. package/bin/Plugins/DebugPlugin.js.map +1 -0
  321. package/bin/Plugins/index.d.ts +2 -0
  322. package/bin/Plugins/index.d.ts.map +1 -0
  323. package/bin/Plugins/index.js +2 -0
  324. package/bin/Plugins/index.js.map +1 -0
  325. package/bin/Types/IUpdatable.d.ts +18 -0
  326. package/bin/Types/IUpdatable.d.ts.map +1 -0
  327. package/bin/Types/IUpdatable.js +7 -0
  328. package/bin/Types/IUpdatable.js.map +1 -0
  329. package/bin/Types/TypeHelpers.d.ts +238 -0
  330. package/bin/Types/TypeHelpers.d.ts.map +1 -0
  331. package/bin/Types/TypeHelpers.js +19 -0
  332. package/bin/Types/TypeHelpers.js.map +1 -0
  333. package/bin/Types/index.d.ts +466 -0
  334. package/bin/Types/index.d.ts.map +1 -0
  335. package/bin/Types/index.js +7 -0
  336. package/bin/Types/index.js.map +1 -0
  337. package/bin/Utils/BinarySerializer.d.ts +23 -0
  338. package/bin/Utils/BinarySerializer.d.ts.map +1 -0
  339. package/bin/Utils/BinarySerializer.js +100 -0
  340. package/bin/Utils/BinarySerializer.js.map +1 -0
  341. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts +153 -0
  342. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts.map +1 -0
  343. package/bin/Utils/Debug/AdvancedProfilerCollector.js +406 -0
  344. package/bin/Utils/Debug/AdvancedProfilerCollector.js.map +1 -0
  345. package/bin/Utils/Debug/ComponentDataCollector.d.ts +32 -0
  346. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +1 -0
  347. package/bin/Utils/Debug/ComponentDataCollector.js +250 -0
  348. package/bin/Utils/Debug/ComponentDataCollector.js.map +1 -0
  349. package/bin/Utils/Debug/DebugConfigService.d.ts +16 -0
  350. package/bin/Utils/Debug/DebugConfigService.d.ts.map +1 -0
  351. package/bin/Utils/Debug/DebugConfigService.js +42 -0
  352. package/bin/Utils/Debug/DebugConfigService.js.map +1 -0
  353. package/bin/Utils/Debug/DebugManager.d.ts +131 -0
  354. package/bin/Utils/Debug/DebugManager.d.ts.map +1 -0
  355. package/bin/Utils/Debug/DebugManager.js +848 -0
  356. package/bin/Utils/Debug/DebugManager.js.map +1 -0
  357. package/bin/Utils/Debug/EntityDataCollector.d.ts +115 -0
  358. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +1 -0
  359. package/bin/Utils/Debug/EntityDataCollector.js +870 -0
  360. package/bin/Utils/Debug/EntityDataCollector.js.map +1 -0
  361. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +31 -0
  362. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +1 -0
  363. package/bin/Utils/Debug/PerformanceDataCollector.js +203 -0
  364. package/bin/Utils/Debug/PerformanceDataCollector.js.map +1 -0
  365. package/bin/Utils/Debug/SceneDataCollector.d.ts +18 -0
  366. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +1 -0
  367. package/bin/Utils/Debug/SceneDataCollector.js +43 -0
  368. package/bin/Utils/Debug/SceneDataCollector.js.map +1 -0
  369. package/bin/Utils/Debug/SystemDataCollector.d.ts +14 -0
  370. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +1 -0
  371. package/bin/Utils/Debug/SystemDataCollector.js +60 -0
  372. package/bin/Utils/Debug/SystemDataCollector.js.map +1 -0
  373. package/bin/Utils/Debug/WebSocketManager.d.ts +54 -0
  374. package/bin/Utils/Debug/WebSocketManager.d.ts.map +1 -0
  375. package/bin/Utils/Debug/WebSocketManager.js +141 -0
  376. package/bin/Utils/Debug/WebSocketManager.js.map +1 -0
  377. package/bin/Utils/Debug/index.d.ts +11 -0
  378. package/bin/Utils/Debug/index.d.ts.map +1 -0
  379. package/bin/Utils/Debug/index.js +10 -0
  380. package/bin/Utils/Debug/index.js.map +1 -0
  381. package/bin/Utils/Emitter.d.ts +61 -0
  382. package/bin/Utils/Emitter.d.ts.map +1 -0
  383. package/bin/Utils/Emitter.js +101 -0
  384. package/bin/Utils/Emitter.js.map +1 -0
  385. package/bin/Utils/Extensions/NumberExtension.d.ts +13 -0
  386. package/bin/Utils/Extensions/NumberExtension.d.ts.map +1 -0
  387. package/bin/Utils/Extensions/NumberExtension.js +17 -0
  388. package/bin/Utils/Extensions/NumberExtension.js.map +1 -0
  389. package/bin/Utils/Extensions/TypeUtils.d.ts +13 -0
  390. package/bin/Utils/Extensions/TypeUtils.d.ts.map +1 -0
  391. package/bin/Utils/Extensions/TypeUtils.js +15 -0
  392. package/bin/Utils/Extensions/TypeUtils.js.map +1 -0
  393. package/bin/Utils/Extensions/index.d.ts +3 -0
  394. package/bin/Utils/Extensions/index.d.ts.map +1 -0
  395. package/bin/Utils/Extensions/index.js +4 -0
  396. package/bin/Utils/Extensions/index.js.map +1 -0
  397. package/bin/Utils/GlobalManager.d.ts +29 -0
  398. package/bin/Utils/GlobalManager.d.ts.map +1 -0
  399. package/bin/Utils/GlobalManager.js +50 -0
  400. package/bin/Utils/GlobalManager.js.map +1 -0
  401. package/bin/Utils/Logger/ConsoleLogger.d.ts +74 -0
  402. package/bin/Utils/Logger/ConsoleLogger.d.ts.map +1 -0
  403. package/bin/Utils/Logger/ConsoleLogger.js +187 -0
  404. package/bin/Utils/Logger/ConsoleLogger.js.map +1 -0
  405. package/bin/Utils/Logger/Constants.d.ts +36 -0
  406. package/bin/Utils/Logger/Constants.d.ts.map +1 -0
  407. package/bin/Utils/Logger/Constants.js +40 -0
  408. package/bin/Utils/Logger/Constants.js.map +1 -0
  409. package/bin/Utils/Logger/LoggerManager.d.ts +91 -0
  410. package/bin/Utils/Logger/LoggerManager.d.ts.map +1 -0
  411. package/bin/Utils/Logger/LoggerManager.js +167 -0
  412. package/bin/Utils/Logger/LoggerManager.js.map +1 -0
  413. package/bin/Utils/Logger/Types.d.ts +40 -0
  414. package/bin/Utils/Logger/Types.d.ts.map +1 -0
  415. package/bin/Utils/Logger/Types.js +2 -0
  416. package/bin/Utils/Logger/Types.js.map +1 -0
  417. package/bin/Utils/Logger/index.d.ts +5 -0
  418. package/bin/Utils/Logger/index.d.ts.map +1 -0
  419. package/bin/Utils/Logger/index.js +5 -0
  420. package/bin/Utils/Logger/index.js.map +1 -0
  421. package/bin/Utils/PerformanceMonitor.d.ts +196 -0
  422. package/bin/Utils/PerformanceMonitor.d.ts.map +1 -0
  423. package/bin/Utils/PerformanceMonitor.js +244 -0
  424. package/bin/Utils/PerformanceMonitor.js.map +1 -0
  425. package/bin/Utils/Pool/IPoolable.d.ts +29 -0
  426. package/bin/Utils/Pool/IPoolable.d.ts.map +1 -0
  427. package/bin/Utils/Pool/IPoolable.js +2 -0
  428. package/bin/Utils/Pool/IPoolable.js.map +1 -0
  429. package/bin/Utils/Pool/Pool.d.ts +109 -0
  430. package/bin/Utils/Pool/Pool.d.ts.map +1 -0
  431. package/bin/Utils/Pool/Pool.js +238 -0
  432. package/bin/Utils/Pool/Pool.js.map +1 -0
  433. package/bin/Utils/Pool/PoolManager.d.ts +96 -0
  434. package/bin/Utils/Pool/PoolManager.d.ts.map +1 -0
  435. package/bin/Utils/Pool/PoolManager.js +199 -0
  436. package/bin/Utils/Pool/PoolManager.js.map +1 -0
  437. package/bin/Utils/Pool/index.d.ts +4 -0
  438. package/bin/Utils/Pool/index.d.ts.map +1 -0
  439. package/bin/Utils/Pool/index.js +4 -0
  440. package/bin/Utils/Pool/index.js.map +1 -0
  441. package/bin/Utils/Profiler/AutoProfiler.d.ts +160 -0
  442. package/bin/Utils/Profiler/AutoProfiler.d.ts.map +1 -0
  443. package/bin/Utils/Profiler/AutoProfiler.js +503 -0
  444. package/bin/Utils/Profiler/AutoProfiler.js.map +1 -0
  445. package/bin/Utils/Profiler/ProfilerSDK.d.ts +175 -0
  446. package/bin/Utils/Profiler/ProfilerSDK.d.ts.map +1 -0
  447. package/bin/Utils/Profiler/ProfilerSDK.js +727 -0
  448. package/bin/Utils/Profiler/ProfilerSDK.js.map +1 -0
  449. package/bin/Utils/Profiler/ProfilerTypes.d.ts +218 -0
  450. package/bin/Utils/Profiler/ProfilerTypes.d.ts.map +1 -0
  451. package/bin/Utils/Profiler/ProfilerTypes.js +47 -0
  452. package/bin/Utils/Profiler/ProfilerTypes.js.map +1 -0
  453. package/bin/Utils/Profiler/index.d.ts +8 -0
  454. package/bin/Utils/Profiler/index.d.ts.map +1 -0
  455. package/bin/Utils/Profiler/index.js +7 -0
  456. package/bin/Utils/Profiler/index.js.map +1 -0
  457. package/bin/Utils/Time.d.ts +47 -0
  458. package/bin/Utils/Time.d.ts.map +1 -0
  459. package/bin/Utils/Time.js +64 -0
  460. package/bin/Utils/Time.js.map +1 -0
  461. package/bin/Utils/Timers/ITimer.d.ts +16 -0
  462. package/bin/Utils/Timers/ITimer.d.ts.map +1 -0
  463. package/bin/Utils/Timers/ITimer.js +2 -0
  464. package/bin/Utils/Timers/ITimer.js.map +1 -0
  465. package/bin/Utils/Timers/Timer.d.ts +30 -0
  466. package/bin/Utils/Timers/Timer.d.ts.map +1 -0
  467. package/bin/Utils/Timers/Timer.js +58 -0
  468. package/bin/Utils/Timers/Timer.js.map +1 -0
  469. package/bin/Utils/Timers/TimerManager.d.ts +26 -0
  470. package/bin/Utils/Timers/TimerManager.d.ts.map +1 -0
  471. package/bin/Utils/Timers/TimerManager.js +48 -0
  472. package/bin/Utils/Timers/TimerManager.js.map +1 -0
  473. package/bin/Utils/index.d.ts +11 -0
  474. package/bin/Utils/index.d.ts.map +1 -0
  475. package/bin/Utils/index.js +11 -0
  476. package/bin/Utils/index.js.map +1 -0
  477. package/bin/index.d.ts +29 -0
  478. package/bin/index.d.ts.map +1 -0
  479. package/bin/index.js +36 -0
  480. package/bin/index.js.map +1 -0
  481. package/package.json +84 -47
  482. package/index.cjs +0 -2
  483. package/index.cjs.map +0 -1
  484. package/index.d.ts +0 -13129
  485. package/index.es5.js +0 -4
  486. package/index.es5.js.map +0 -1
  487. package/index.mjs +0 -2
  488. package/index.mjs.map +0 -1
  489. package/index.umd.js +0 -4
  490. package/index.umd.js.map +0 -1
@@ -0,0 +1,276 @@
1
+ /**
2
+ * 组件对象池,用于复用组件实例以减少内存分配
3
+ */
4
+ export class ComponentPool {
5
+ constructor(createFn, resetFn, maxSize = 1000, minSize = 10) {
6
+ this.pool = [];
7
+ this.stats = {
8
+ totalCreated: 0,
9
+ totalAcquired: 0,
10
+ totalReleased: 0
11
+ };
12
+ this.createFn = createFn;
13
+ if (resetFn) {
14
+ this.resetFn = resetFn;
15
+ }
16
+ this.maxSize = maxSize;
17
+ this.minSize = Math.max(1, minSize);
18
+ }
19
+ /**
20
+ * 获取一个组件实例
21
+ */
22
+ acquire() {
23
+ this.stats.totalAcquired++;
24
+ if (this.pool.length > 0) {
25
+ return this.pool.pop();
26
+ }
27
+ this.stats.totalCreated++;
28
+ return this.createFn();
29
+ }
30
+ /**
31
+ * 释放一个组件实例回池中
32
+ */
33
+ release(component) {
34
+ this.stats.totalReleased++;
35
+ if (this.pool.length >= this.maxSize) {
36
+ return;
37
+ }
38
+ if (this.resetFn) {
39
+ this.resetFn(component);
40
+ }
41
+ this.pool.push(component);
42
+ }
43
+ /**
44
+ * 预填充对象池
45
+ */
46
+ prewarm(count) {
47
+ const targetCount = Math.min(count, this.maxSize);
48
+ for (let i = this.pool.length; i < targetCount; i++) {
49
+ const component = this.createFn();
50
+ if (this.resetFn) {
51
+ this.resetFn(component);
52
+ }
53
+ this.pool.push(component);
54
+ this.stats.totalCreated++;
55
+ }
56
+ }
57
+ /**
58
+ * 自动收缩池大小
59
+ */
60
+ shrink() {
61
+ while (this.pool.length > this.minSize) {
62
+ this.pool.pop();
63
+ }
64
+ }
65
+ /**
66
+ * 清空对象池
67
+ */
68
+ clear() {
69
+ this.pool.length = 0;
70
+ }
71
+ /**
72
+ * 获取池中可用对象数量
73
+ */
74
+ getAvailableCount() {
75
+ return this.pool.length;
76
+ }
77
+ /**
78
+ * 获取池的最大容量
79
+ */
80
+ getMaxSize() {
81
+ return this.maxSize;
82
+ }
83
+ /**
84
+ * 获取统计信息
85
+ */
86
+ getStats() {
87
+ const hitRate = this.stats.totalAcquired === 0
88
+ ? 0
89
+ : (this.stats.totalAcquired - this.stats.totalCreated) / this.stats.totalAcquired;
90
+ return {
91
+ totalCreated: this.stats.totalCreated,
92
+ totalAcquired: this.stats.totalAcquired,
93
+ totalReleased: this.stats.totalReleased,
94
+ hitRate: hitRate,
95
+ currentSize: this.pool.length,
96
+ maxSize: this.maxSize,
97
+ minSize: this.minSize,
98
+ utilizationRate: this.pool.length / this.maxSize
99
+ };
100
+ }
101
+ }
102
+ /**
103
+ * 全局组件池管理器
104
+ */
105
+ export class ComponentPoolManager {
106
+ constructor() {
107
+ this.pools = new Map();
108
+ this.usageTracker = new Map();
109
+ this.autoCleanupInterval = 60000;
110
+ this.lastCleanupTime = 0;
111
+ }
112
+ static getInstance() {
113
+ if (!ComponentPoolManager.instance) {
114
+ ComponentPoolManager.instance = new ComponentPoolManager();
115
+ }
116
+ return ComponentPoolManager.instance;
117
+ }
118
+ /**
119
+ * 注册组件池
120
+ */
121
+ registerPool(componentName, createFn, resetFn, maxSize, minSize) {
122
+ this.pools.set(componentName, new ComponentPool(createFn, resetFn, maxSize, minSize));
123
+ this.usageTracker.set(componentName, {
124
+ createCount: 0,
125
+ releaseCount: 0,
126
+ lastAccessTime: Date.now()
127
+ });
128
+ }
129
+ /**
130
+ * 获取组件实例
131
+ */
132
+ acquireComponent(componentName) {
133
+ const pool = this.pools.get(componentName);
134
+ this.trackUsage(componentName, 'create');
135
+ return pool ? pool.acquire() : null;
136
+ }
137
+ /**
138
+ * 释放组件实例
139
+ */
140
+ releaseComponent(componentName, component) {
141
+ const pool = this.pools.get(componentName);
142
+ this.trackUsage(componentName, 'release');
143
+ if (pool) {
144
+ pool.release(component);
145
+ }
146
+ }
147
+ /**
148
+ * 追踪使用情况
149
+ */
150
+ trackUsage(componentName, action) {
151
+ let tracker = this.usageTracker.get(componentName);
152
+ if (!tracker) {
153
+ tracker = {
154
+ createCount: 0,
155
+ releaseCount: 0,
156
+ lastAccessTime: Date.now()
157
+ };
158
+ this.usageTracker.set(componentName, tracker);
159
+ }
160
+ if (action === 'create') {
161
+ tracker.createCount++;
162
+ }
163
+ else {
164
+ tracker.releaseCount++;
165
+ }
166
+ tracker.lastAccessTime = Date.now();
167
+ }
168
+ /**
169
+ * 自动清理(定期调用)
170
+ */
171
+ update() {
172
+ const now = Date.now();
173
+ if (now - this.lastCleanupTime < this.autoCleanupInterval) {
174
+ return;
175
+ }
176
+ for (const [name, tracker] of this.usageTracker.entries()) {
177
+ const inactive = now - tracker.lastAccessTime > 120000;
178
+ if (inactive) {
179
+ const pool = this.pools.get(name);
180
+ if (pool) {
181
+ pool.shrink();
182
+ }
183
+ }
184
+ }
185
+ this.lastCleanupTime = now;
186
+ }
187
+ /**
188
+ * 获取热点组件列表
189
+ */
190
+ getHotComponents(threshold = 100) {
191
+ return Array.from(this.usageTracker.entries())
192
+ .filter(([_, tracker]) => tracker.createCount > threshold)
193
+ .map(([name]) => name);
194
+ }
195
+ /**
196
+ * 预热所有池
197
+ */
198
+ prewarmAll(count = 100) {
199
+ for (const pool of this.pools.values()) {
200
+ pool.prewarm(count);
201
+ }
202
+ }
203
+ /**
204
+ * 清空所有池
205
+ */
206
+ clearAll() {
207
+ for (const pool of this.pools.values()) {
208
+ pool.clear();
209
+ }
210
+ }
211
+ /**
212
+ * 重置管理器
213
+ */
214
+ reset() {
215
+ this.pools.clear();
216
+ this.usageTracker.clear();
217
+ }
218
+ /**
219
+ * 获取全局统计信息
220
+ */
221
+ getGlobalStats() {
222
+ const stats = [];
223
+ for (const [name, pool] of this.pools.entries()) {
224
+ stats.push({
225
+ componentName: name,
226
+ poolStats: pool.getStats(),
227
+ usage: this.usageTracker.get(name)
228
+ });
229
+ }
230
+ return stats;
231
+ }
232
+ /**
233
+ * 获取池统计信息
234
+ */
235
+ getPoolStats() {
236
+ const stats = new Map();
237
+ for (const [name, pool] of this.pools) {
238
+ stats.set(name, {
239
+ available: pool.getAvailableCount(),
240
+ maxSize: pool.getMaxSize()
241
+ });
242
+ }
243
+ return stats;
244
+ }
245
+ /**
246
+ * 获取池利用率信息
247
+ */
248
+ getPoolUtilization() {
249
+ const utilization = new Map();
250
+ for (const [name, pool] of this.pools) {
251
+ const available = pool.getAvailableCount();
252
+ const maxSize = pool.getMaxSize();
253
+ const used = maxSize - available;
254
+ const utilRate = maxSize > 0 ? (used / maxSize * 100) : 0;
255
+ utilization.set(name, {
256
+ used: used,
257
+ total: maxSize,
258
+ utilization: utilRate
259
+ });
260
+ }
261
+ return utilization;
262
+ }
263
+ /**
264
+ * 获取指定组件的池利用率
265
+ */
266
+ getComponentUtilization(componentName) {
267
+ const pool = this.pools.get(componentName);
268
+ if (!pool)
269
+ return 0;
270
+ const available = pool.getAvailableCount();
271
+ const maxSize = pool.getMaxSize();
272
+ const used = maxSize - available;
273
+ return maxSize > 0 ? (used / maxSize * 100) : 0;
274
+ }
275
+ }
276
+ //# sourceMappingURL=ComponentPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentPool.js","sourceRoot":"","sources":["../../../src/ECS/Core/ComponentPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { Component } from '../../Component';
2
+ import { BitMask64Data } from '../../Utils/BigIntCompatibility';
3
+ /**
4
+ * 组件类型定义
5
+ */
6
+ export type ComponentType<T extends Component = Component> = new (...args: any[]) => T;
7
+ /**
8
+ * 组件注册表
9
+ * 管理组件类型的位掩码分配
10
+ */
11
+ export declare class ComponentRegistry {
12
+ protected static readonly _logger: import("../../../Utils/Logger").ILogger;
13
+ private static componentTypes;
14
+ private static bitIndexToType;
15
+ private static componentNameToType;
16
+ private static componentNameToId;
17
+ private static maskCache;
18
+ private static nextBitIndex;
19
+ /**
20
+ * 热更新模式标志,默认禁用
21
+ * Hot reload mode flag, disabled by default
22
+ * 编辑器环境应启用此选项以支持脚本热更新
23
+ * Editor environment should enable this to support script hot reload
24
+ */
25
+ private static hotReloadEnabled;
26
+ /**
27
+ * 注册组件类型并分配位掩码
28
+ * @param componentType 组件类型
29
+ * @returns 分配的位索引
30
+ */
31
+ static register<T extends Component>(componentType: ComponentType<T>): number;
32
+ /**
33
+ * 获取组件类型的位掩码
34
+ * @param componentType 组件类型
35
+ * @returns 位掩码
36
+ */
37
+ static getBitMask<T extends Component>(componentType: ComponentType<T>): BitMask64Data;
38
+ /**
39
+ * 获取组件类型的位索引
40
+ * @param componentType 组件类型
41
+ * @returns 位索引
42
+ */
43
+ static getBitIndex<T extends Component>(componentType: ComponentType<T>): number;
44
+ /**
45
+ * 检查组件类型是否已注册
46
+ * @param componentType 组件类型
47
+ * @returns 是否已注册
48
+ */
49
+ static isRegistered<T extends Component>(componentType: ComponentType<T>): boolean;
50
+ /**
51
+ * 通过位索引获取组件类型
52
+ * @param bitIndex 位索引
53
+ * @returns 组件类型构造函数或null
54
+ */
55
+ static getTypeByBitIndex(bitIndex: number): ComponentType | null;
56
+ /**
57
+ * 获取当前已注册的组件类型数量
58
+ * @returns 已注册数量
59
+ */
60
+ static getRegisteredCount(): number;
61
+ /**
62
+ * 通过名称获取组件类型
63
+ * @param componentName 组件名称
64
+ * @returns 组件类型构造函数
65
+ */
66
+ static getComponentType(componentName: string): Function | null;
67
+ /**
68
+ * 获取所有已注册的组件类型
69
+ * @returns 组件类型映射
70
+ */
71
+ static getAllRegisteredTypes(): Map<Function, number>;
72
+ /**
73
+ * 获取所有组件名称到类型的映射
74
+ * @returns 名称到类型的映射
75
+ */
76
+ static getAllComponentNames(): Map<string, Function>;
77
+ /**
78
+ * 通过名称获取组件类型ID
79
+ * @param componentName 组件名称
80
+ * @returns 组件类型ID
81
+ */
82
+ static getComponentId(componentName: string): number | undefined;
83
+ /**
84
+ * 注册组件类型(通过名称)
85
+ * @param componentName 组件名称
86
+ * @returns 分配的组件ID
87
+ */
88
+ static registerComponentByName(componentName: string): number;
89
+ /**
90
+ * 创建单个组件的掩码
91
+ * @param componentName 组件名称
92
+ * @returns 组件掩码
93
+ */
94
+ static createSingleComponentMask(componentName: string): BitMask64Data;
95
+ /**
96
+ * 创建多个组件的掩码
97
+ * @param componentNames 组件名称数组
98
+ * @returns 组合掩码
99
+ */
100
+ static createComponentMask(componentNames: string[]): BitMask64Data;
101
+ /**
102
+ * 清除掩码缓存
103
+ */
104
+ static clearMaskCache(): void;
105
+ /**
106
+ * 启用热更新模式
107
+ * Enable hot reload mode
108
+ * 在编辑器环境中调用以支持脚本热更新
109
+ * Call in editor environment to support script hot reload
110
+ */
111
+ static enableHotReload(): void;
112
+ /**
113
+ * 禁用热更新模式
114
+ * Disable hot reload mode
115
+ */
116
+ static disableHotReload(): void;
117
+ /**
118
+ * 检查热更新模式是否启用
119
+ * Check if hot reload mode is enabled
120
+ */
121
+ static isHotReloadEnabled(): boolean;
122
+ /**
123
+ * 重置注册表(用于测试)
124
+ */
125
+ static reset(): void;
126
+ }
127
+ //# sourceMappingURL=ComponentRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentRegistry.d.ts","sourceRoot":"","sources":["../../../../src/ECS/Core/ComponentStorage/ComponentRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAkB,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEvF;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,0CAAoC;IACrE,OAAO,CAAC,MAAM,CAAC,cAAc,CAA+B;IAC5D,OAAO,CAAC,MAAM,CAAC,cAAc,CAA+B;IAC5D,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA+B;IACjE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA6B;IAC7D,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoC;IAC5D,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAS;IAExC;;;;OAIG;WACW,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM;IAyCpF;;;;OAIG;WACW,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa;IAS7F;;;;OAIG;WACW,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM;IASvF;;;;OAIG;WACW,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO;IAIzF;;;;OAIG;WACW,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIvE;;;OAGG;WACW,kBAAkB,IAAI,MAAM;IAI1C;;;;OAIG;WACW,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAItE;;;OAGG;WACW,qBAAqB,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;IAI5D;;;OAGG;WACW,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAI3D;;;;OAIG;WACW,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvE;;;;OAIG;WACW,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAUpE;;;;OAIG;WACW,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa;IAiB7E;;;;OAIG;WACW,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,aAAa;IAqB1E;;OAEG;WACW,cAAc,IAAI,IAAI;IAIpC;;;;;OAKG;WACW,eAAe,IAAI,IAAI;IAIrC;;;OAGG;WACW,gBAAgB,IAAI,IAAI;IAItC;;;OAGG;WACW,kBAAkB,IAAI,OAAO;IAI3C;;OAEG;WACW,KAAK,IAAI,IAAI;CAS9B"}
@@ -0,0 +1,235 @@
1
+ import { BitMask64Utils } from '../../Utils/BigIntCompatibility';
2
+ import { createLogger } from '../../../Utils/Logger';
3
+ import { getComponentTypeName } from '../../Decorators';
4
+ /**
5
+ * 组件注册表
6
+ * 管理组件类型的位掩码分配
7
+ */
8
+ export class ComponentRegistry {
9
+ /**
10
+ * 注册组件类型并分配位掩码
11
+ * @param componentType 组件类型
12
+ * @returns 分配的位索引
13
+ */
14
+ static register(componentType) {
15
+ const typeName = getComponentTypeName(componentType);
16
+ if (this.componentTypes.has(componentType)) {
17
+ const existingIndex = this.componentTypes.get(componentType);
18
+ return existingIndex;
19
+ }
20
+ // 检查是否有同名但不同类的组件已注册(热更新场景)
21
+ // Check if a component with the same name but different class is registered (hot reload scenario)
22
+ if (this.hotReloadEnabled && this.componentNameToType.has(typeName)) {
23
+ const existingType = this.componentNameToType.get(typeName);
24
+ if (existingType !== componentType) {
25
+ // 热更新:替换旧的类为新的类,复用相同的 bitIndex
26
+ // Hot reload: replace old class with new class, reuse the same bitIndex
27
+ const existingIndex = this.componentTypes.get(existingType);
28
+ // 移除旧类的映射
29
+ // Remove old class mapping
30
+ this.componentTypes.delete(existingType);
31
+ // 用新类更新映射
32
+ // Update mappings with new class
33
+ this.componentTypes.set(componentType, existingIndex);
34
+ this.bitIndexToType.set(existingIndex, componentType);
35
+ this.componentNameToType.set(typeName, componentType);
36
+ console.log(`[ComponentRegistry] Hot reload: replaced component "${typeName}"`);
37
+ return existingIndex;
38
+ }
39
+ }
40
+ const bitIndex = this.nextBitIndex++;
41
+ this.componentTypes.set(componentType, bitIndex);
42
+ this.bitIndexToType.set(bitIndex, componentType);
43
+ this.componentNameToType.set(typeName, componentType);
44
+ this.componentNameToId.set(typeName, bitIndex);
45
+ return bitIndex;
46
+ }
47
+ /**
48
+ * 获取组件类型的位掩码
49
+ * @param componentType 组件类型
50
+ * @returns 位掩码
51
+ */
52
+ static getBitMask(componentType) {
53
+ const bitIndex = this.componentTypes.get(componentType);
54
+ if (bitIndex === undefined) {
55
+ const typeName = getComponentTypeName(componentType);
56
+ throw new Error(`Component type ${typeName} is not registered`);
57
+ }
58
+ return BitMask64Utils.create(bitIndex);
59
+ }
60
+ /**
61
+ * 获取组件类型的位索引
62
+ * @param componentType 组件类型
63
+ * @returns 位索引
64
+ */
65
+ static getBitIndex(componentType) {
66
+ const bitIndex = this.componentTypes.get(componentType);
67
+ if (bitIndex === undefined) {
68
+ const typeName = getComponentTypeName(componentType);
69
+ throw new Error(`Component type ${typeName} is not registered`);
70
+ }
71
+ return bitIndex;
72
+ }
73
+ /**
74
+ * 检查组件类型是否已注册
75
+ * @param componentType 组件类型
76
+ * @returns 是否已注册
77
+ */
78
+ static isRegistered(componentType) {
79
+ return this.componentTypes.has(componentType);
80
+ }
81
+ /**
82
+ * 通过位索引获取组件类型
83
+ * @param bitIndex 位索引
84
+ * @returns 组件类型构造函数或null
85
+ */
86
+ static getTypeByBitIndex(bitIndex) {
87
+ return this.bitIndexToType.get(bitIndex) || null;
88
+ }
89
+ /**
90
+ * 获取当前已注册的组件类型数量
91
+ * @returns 已注册数量
92
+ */
93
+ static getRegisteredCount() {
94
+ return this.nextBitIndex;
95
+ }
96
+ /**
97
+ * 通过名称获取组件类型
98
+ * @param componentName 组件名称
99
+ * @returns 组件类型构造函数
100
+ */
101
+ static getComponentType(componentName) {
102
+ return this.componentNameToType.get(componentName) || null;
103
+ }
104
+ /**
105
+ * 获取所有已注册的组件类型
106
+ * @returns 组件类型映射
107
+ */
108
+ static getAllRegisteredTypes() {
109
+ return new Map(this.componentTypes);
110
+ }
111
+ /**
112
+ * 获取所有组件名称到类型的映射
113
+ * @returns 名称到类型的映射
114
+ */
115
+ static getAllComponentNames() {
116
+ return new Map(this.componentNameToType);
117
+ }
118
+ /**
119
+ * 通过名称获取组件类型ID
120
+ * @param componentName 组件名称
121
+ * @returns 组件类型ID
122
+ */
123
+ static getComponentId(componentName) {
124
+ return this.componentNameToId.get(componentName);
125
+ }
126
+ /**
127
+ * 注册组件类型(通过名称)
128
+ * @param componentName 组件名称
129
+ * @returns 分配的组件ID
130
+ */
131
+ static registerComponentByName(componentName) {
132
+ if (this.componentNameToId.has(componentName)) {
133
+ return this.componentNameToId.get(componentName);
134
+ }
135
+ const bitIndex = this.nextBitIndex++;
136
+ this.componentNameToId.set(componentName, bitIndex);
137
+ return bitIndex;
138
+ }
139
+ /**
140
+ * 创建单个组件的掩码
141
+ * @param componentName 组件名称
142
+ * @returns 组件掩码
143
+ */
144
+ static createSingleComponentMask(componentName) {
145
+ const cacheKey = `single:${componentName}`;
146
+ if (this.maskCache.has(cacheKey)) {
147
+ return this.maskCache.get(cacheKey);
148
+ }
149
+ const componentId = this.getComponentId(componentName);
150
+ if (componentId === undefined) {
151
+ throw new Error(`Component type ${componentName} is not registered`);
152
+ }
153
+ const mask = BitMask64Utils.create(componentId);
154
+ this.maskCache.set(cacheKey, mask);
155
+ return mask;
156
+ }
157
+ /**
158
+ * 创建多个组件的掩码
159
+ * @param componentNames 组件名称数组
160
+ * @returns 组合掩码
161
+ */
162
+ static createComponentMask(componentNames) {
163
+ const sortedNames = [...componentNames].sort();
164
+ const cacheKey = `multi:${sortedNames.join(',')}`;
165
+ if (this.maskCache.has(cacheKey)) {
166
+ return this.maskCache.get(cacheKey);
167
+ }
168
+ const mask = BitMask64Utils.clone(BitMask64Utils.ZERO);
169
+ for (const name of componentNames) {
170
+ const componentId = this.getComponentId(name);
171
+ if (componentId !== undefined) {
172
+ const componentMask = BitMask64Utils.create(componentId);
173
+ BitMask64Utils.orInPlace(mask, componentMask);
174
+ }
175
+ }
176
+ this.maskCache.set(cacheKey, mask);
177
+ return mask;
178
+ }
179
+ /**
180
+ * 清除掩码缓存
181
+ */
182
+ static clearMaskCache() {
183
+ this.maskCache.clear();
184
+ }
185
+ /**
186
+ * 启用热更新模式
187
+ * Enable hot reload mode
188
+ * 在编辑器环境中调用以支持脚本热更新
189
+ * Call in editor environment to support script hot reload
190
+ */
191
+ static enableHotReload() {
192
+ this.hotReloadEnabled = true;
193
+ }
194
+ /**
195
+ * 禁用热更新模式
196
+ * Disable hot reload mode
197
+ */
198
+ static disableHotReload() {
199
+ this.hotReloadEnabled = false;
200
+ }
201
+ /**
202
+ * 检查热更新模式是否启用
203
+ * Check if hot reload mode is enabled
204
+ */
205
+ static isHotReloadEnabled() {
206
+ return this.hotReloadEnabled;
207
+ }
208
+ /**
209
+ * 重置注册表(用于测试)
210
+ */
211
+ static reset() {
212
+ this.componentTypes.clear();
213
+ this.bitIndexToType.clear();
214
+ this.componentNameToType.clear();
215
+ this.componentNameToId.clear();
216
+ this.maskCache.clear();
217
+ this.nextBitIndex = 0;
218
+ this.hotReloadEnabled = false;
219
+ }
220
+ }
221
+ ComponentRegistry._logger = createLogger('ComponentStorage');
222
+ ComponentRegistry.componentTypes = new Map();
223
+ ComponentRegistry.bitIndexToType = new Map();
224
+ ComponentRegistry.componentNameToType = new Map();
225
+ ComponentRegistry.componentNameToId = new Map();
226
+ ComponentRegistry.maskCache = new Map();
227
+ ComponentRegistry.nextBitIndex = 0;
228
+ /**
229
+ * 热更新模式标志,默认禁用
230
+ * Hot reload mode flag, disabled by default
231
+ * 编辑器环境应启用此选项以支持脚本热更新
232
+ * Editor environment should enable this to support script hot reload
233
+ */
234
+ ComponentRegistry.hotReloadEnabled = false;
235
+ //# sourceMappingURL=ComponentRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentRegistry.js","sourceRoot":"","sources":["../../../../src/ECS/Core/ComponentStorage/ComponentRegistry.ts"],"names":[],"mappings":"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"}