@esengine/ecs-framework 2.2.20 → 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 (491) 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/LICENSE +0 -21
  483. package/index.cjs +0 -2
  484. package/index.cjs.map +0 -1
  485. package/index.d.ts +0 -13021
  486. package/index.es5.js +0 -4
  487. package/index.es5.js.map +0 -1
  488. package/index.mjs +0 -2
  489. package/index.mjs.map +0 -1
  490. package/index.umd.js +0 -4
  491. package/index.umd.js.map +0 -1
@@ -0,0 +1,213 @@
1
+ /**
2
+ * 场景序列化器
3
+ *
4
+ * 负责整个场景的序列化和反序列化,包括实体、组件等
5
+ */
6
+ import type { IScene } from '../IScene';
7
+ import { ComponentType } from '../Core/ComponentStorage';
8
+ import { SerializedEntity } from './EntitySerializer';
9
+ /**
10
+ * 场景序列化格式
11
+ */
12
+ export type SerializationFormat = 'json' | 'binary';
13
+ /**
14
+ * 场景序列化策略
15
+ */
16
+ export type DeserializationStrategy = 'merge' | 'replace';
17
+ /**
18
+ * 版本迁移函数
19
+ */
20
+ export type MigrationFunction = (oldVersion: number, newVersion: number, data: any) => any;
21
+ /**
22
+ * 场景序列化选项
23
+ */
24
+ export interface SceneSerializationOptions {
25
+ /**
26
+ * 要序列化的组件类型列表
27
+ * 如果未指定,则序列化所有可序列化的组件
28
+ */
29
+ components?: ComponentType[];
30
+ /**
31
+ * 是否序列化系统状态(当前不支持)
32
+ */
33
+ systems?: boolean;
34
+ /**
35
+ * 序列化格式
36
+ */
37
+ format?: SerializationFormat;
38
+ /**
39
+ * 是否美化JSON输出(仅在format='json'时有效)
40
+ */
41
+ pretty?: boolean;
42
+ /**
43
+ * 是否包含元数据(如序列化时间、版本等)
44
+ */
45
+ includeMetadata?: boolean;
46
+ }
47
+ /**
48
+ * 场景反序列化选项
49
+ */
50
+ export interface SceneDeserializationOptions {
51
+ /**
52
+ * 反序列化策略
53
+ * - 'merge': 合并到现有场景
54
+ * - 'replace': 替换现有场景内容
55
+ */
56
+ strategy?: DeserializationStrategy;
57
+ /**
58
+ * 版本迁移函数
59
+ */
60
+ migration?: MigrationFunction;
61
+ /**
62
+ * 是否保持原始实体ID
63
+ */
64
+ preserveIds?: boolean;
65
+ /**
66
+ * 组件类型注册表
67
+ * 如果未提供,将尝试从全局注册表获取
68
+ */
69
+ componentRegistry?: Map<string, ComponentType>;
70
+ }
71
+ /**
72
+ * 序列化后的场景数据
73
+ */
74
+ export interface SerializedScene {
75
+ /**
76
+ * 场景名称
77
+ */
78
+ name: string;
79
+ /**
80
+ * 序列化版本
81
+ */
82
+ version: number;
83
+ /**
84
+ * 序列化时间戳
85
+ */
86
+ timestamp?: number;
87
+ /**
88
+ * 场景自定义数据
89
+ *
90
+ * 存储场景级别的配置和状态
91
+ */
92
+ sceneData?: Record<string, any>;
93
+ /**
94
+ * 实体列表
95
+ */
96
+ entities: SerializedEntity[];
97
+ /**
98
+ * 元数据
99
+ */
100
+ metadata?: {
101
+ entityCount: number;
102
+ componentTypeCount: number;
103
+ serializationOptions?: SceneSerializationOptions;
104
+ };
105
+ /**
106
+ * 组件类型注册信息
107
+ */
108
+ componentTypeRegistry: Array<{
109
+ typeName: string;
110
+ version: number;
111
+ }>;
112
+ }
113
+ /**
114
+ * 场景序列化器类
115
+ */
116
+ export declare class SceneSerializer {
117
+ /**
118
+ * 当前序列化版本
119
+ */
120
+ private static readonly SERIALIZATION_VERSION;
121
+ /**
122
+ * 序列化场景
123
+ *
124
+ * @param scene 要序列化的场景
125
+ * @param options 序列化选项
126
+ * @returns 序列化后的数据(JSON字符串或二进制Uint8Array)
127
+ */
128
+ static serialize(scene: IScene, options?: SceneSerializationOptions): string | Uint8Array;
129
+ /**
130
+ * 反序列化场景
131
+ *
132
+ * @param scene 目标场景
133
+ * @param saveData 序列化的数据(JSON字符串或二进制Uint8Array)
134
+ * @param options 反序列化选项
135
+ */
136
+ static deserialize(scene: IScene, saveData: string | Uint8Array, options?: SceneDeserializationOptions): void;
137
+ /**
138
+ * 调用实体所有组件的 onDeserialized 方法(不递归)
139
+ */
140
+ private static callOnDeserializedForEntity;
141
+ /**
142
+ * 递归添加实体的所有子实体到场景
143
+ *
144
+ * 修复反序列化时子实体丢失的问题:
145
+ * EntitySerializer.deserialize会提前设置子实体的scene引用,
146
+ * 导致Entity.addChild的条件判断(!child.scene)跳过scene.addEntity调用。
147
+ * 因此需要在SceneSerializer中统一递归添加所有子实体。
148
+ *
149
+ * @param entity 父实体
150
+ * @param scene 目标场景
151
+ * @param hierarchySystem 层级系统
152
+ */
153
+ private static addChildrenRecursively;
154
+ /**
155
+ * 序列化场景自定义数据
156
+ *
157
+ * 将 Map<string, any> 转换为普通对象
158
+ */
159
+ private static serializeSceneData;
160
+ /**
161
+ * 反序列化场景自定义数据
162
+ *
163
+ * 将普通对象还原为 Map<string, any>
164
+ */
165
+ private static deserializeSceneData;
166
+ /**
167
+ * 序列化单个值
168
+ */
169
+ private static serializeValue;
170
+ /**
171
+ * 反序列化单个值
172
+ */
173
+ private static deserializeValue;
174
+ /**
175
+ * 过滤要序列化的实体和组件
176
+ */
177
+ private static filterEntities;
178
+ /**
179
+ * 构建组件类型注册表
180
+ */
181
+ private static buildComponentTypeRegistry;
182
+ /**
183
+ * 获取全局组件注册表
184
+ *
185
+ * 从所有已注册的组件类型构建注册表
186
+ */
187
+ private static getGlobalComponentRegistry;
188
+ /**
189
+ * 验证保存数据的有效性
190
+ *
191
+ * @param saveData 序列化的数据
192
+ * @returns 验证结果
193
+ */
194
+ static validate(saveData: string): {
195
+ valid: boolean;
196
+ version?: number;
197
+ errors?: string[];
198
+ };
199
+ /**
200
+ * 获取保存数据的信息(不完全反序列化)
201
+ *
202
+ * @param saveData 序列化的数据
203
+ * @returns 保存数据的元信息
204
+ */
205
+ static getInfo(saveData: string): {
206
+ name: string;
207
+ version: number;
208
+ timestamp?: number;
209
+ entityCount: number;
210
+ componentTypeCount: number;
211
+ } | null;
212
+ }
213
+ //# sourceMappingURL=SceneSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneSerializer.d.ts","sourceRoot":"","sources":["../../../src/ECS/Serialization/SceneSerializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,387 @@
1
+ /**
2
+ * 场景序列化器
3
+ *
4
+ * 负责整个场景的序列化和反序列化,包括实体、组件等
5
+ */
6
+ import { ComponentRegistry } from '../Core/ComponentStorage';
7
+ import { EntitySerializer } from './EntitySerializer';
8
+ import { getComponentTypeName } from '../Decorators';
9
+ import { getSerializationMetadata } from './SerializationDecorators';
10
+ import { BinarySerializer } from '../../Utils/BinarySerializer';
11
+ import { HierarchySystem } from '../Systems/HierarchySystem';
12
+ import { HierarchyComponent } from '../Components/HierarchyComponent';
13
+ /**
14
+ * 场景序列化器类
15
+ */
16
+ export class SceneSerializer {
17
+ /**
18
+ * 序列化场景
19
+ *
20
+ * @param scene 要序列化的场景
21
+ * @param options 序列化选项
22
+ * @returns 序列化后的数据(JSON字符串或二进制Uint8Array)
23
+ */
24
+ static serialize(scene, options) {
25
+ const opts = {
26
+ systems: false,
27
+ format: 'json',
28
+ pretty: true,
29
+ includeMetadata: true,
30
+ ...options
31
+ };
32
+ // 过滤实体和组件
33
+ const entities = this.filterEntities(scene, opts);
34
+ // 获取层级系统用于序列化子实体
35
+ const hierarchySystem = scene.getSystem(HierarchySystem);
36
+ // 序列化实体(传入 hierarchySystem 以正确序列化子实体)
37
+ const serializedEntities = EntitySerializer.serializeEntities(entities, true, hierarchySystem ?? undefined);
38
+ // 收集组件类型信息
39
+ const componentTypeRegistry = this.buildComponentTypeRegistry(entities);
40
+ // 序列化场景自定义数据
41
+ const sceneData = this.serializeSceneData(scene.sceneData);
42
+ // 构建序列化数据
43
+ const serializedScene = {
44
+ name: scene.name,
45
+ version: this.SERIALIZATION_VERSION,
46
+ entities: serializedEntities,
47
+ componentTypeRegistry
48
+ };
49
+ // 添加场景数据(如果有)
50
+ if (sceneData && Object.keys(sceneData).length > 0) {
51
+ serializedScene.sceneData = sceneData;
52
+ }
53
+ // 添加元数据
54
+ if (opts.includeMetadata) {
55
+ serializedScene.timestamp = Date.now();
56
+ serializedScene.metadata = {
57
+ entityCount: serializedEntities.length,
58
+ componentTypeCount: componentTypeRegistry.length,
59
+ serializationOptions: opts
60
+ };
61
+ }
62
+ if (opts.format === 'json') {
63
+ return opts.pretty
64
+ ? JSON.stringify(serializedScene, null, 2)
65
+ : JSON.stringify(serializedScene);
66
+ }
67
+ else {
68
+ return BinarySerializer.encode(serializedScene);
69
+ }
70
+ }
71
+ /**
72
+ * 反序列化场景
73
+ *
74
+ * @param scene 目标场景
75
+ * @param saveData 序列化的数据(JSON字符串或二进制Uint8Array)
76
+ * @param options 反序列化选项
77
+ */
78
+ static deserialize(scene, saveData, options) {
79
+ const opts = {
80
+ strategy: 'replace',
81
+ preserveIds: false,
82
+ ...options
83
+ };
84
+ let serializedScene;
85
+ try {
86
+ if (typeof saveData === 'string') {
87
+ serializedScene = JSON.parse(saveData);
88
+ }
89
+ else {
90
+ serializedScene = BinarySerializer.decode(saveData);
91
+ }
92
+ }
93
+ catch (error) {
94
+ throw new Error(`Failed to parse save data: ${error}`);
95
+ }
96
+ // 版本迁移
97
+ if (opts.migration && serializedScene.version !== this.SERIALIZATION_VERSION) {
98
+ serializedScene = opts.migration(serializedScene.version, this.SERIALIZATION_VERSION, serializedScene);
99
+ }
100
+ // 构建组件注册表
101
+ const componentRegistry = opts.componentRegistry || this.getGlobalComponentRegistry();
102
+ // 根据策略处理场景
103
+ if (opts.strategy === 'replace') {
104
+ // 清空场景
105
+ scene.destroyAllEntities();
106
+ }
107
+ // ID生成器
108
+ const idGenerator = () => scene.identifierPool.checkOut();
109
+ // 获取层级系统
110
+ const hierarchySystem = scene.getSystem(HierarchySystem);
111
+ // 反序列化实体
112
+ const { rootEntities, allEntities } = EntitySerializer.deserializeEntities(serializedScene.entities, componentRegistry, idGenerator, opts.preserveIds || false, scene, hierarchySystem);
113
+ // 将所有实体添加到场景(包括子实体)
114
+ // 先添加根实体,再递归添加子实体
115
+ for (const entity of rootEntities) {
116
+ scene.addEntity(entity, true);
117
+ this.addChildrenRecursively(entity, scene, hierarchySystem, allEntities);
118
+ }
119
+ // 统一清理缓存(批量操作完成后)
120
+ scene.querySystem.clearCache();
121
+ scene.clearSystemEntityCaches();
122
+ // 反序列化场景自定义数据
123
+ if (serializedScene.sceneData) {
124
+ this.deserializeSceneData(serializedScene.sceneData, scene.sceneData);
125
+ }
126
+ // 调用所有组件的 onDeserialized 生命周期方法
127
+ // Call onDeserialized lifecycle method on all components
128
+ const deserializedPromises = [];
129
+ for (const entity of allEntities.values()) {
130
+ this.callOnDeserializedForEntity(entity, deserializedPromises);
131
+ }
132
+ // 如果有异步的 onDeserialized,在后台执行
133
+ if (deserializedPromises.length > 0) {
134
+ Promise.all(deserializedPromises).catch(error => {
135
+ console.error('Error in onDeserialized:', error);
136
+ });
137
+ }
138
+ }
139
+ /**
140
+ * 调用实体所有组件的 onDeserialized 方法(不递归)
141
+ */
142
+ static callOnDeserializedForEntity(entity, promises) {
143
+ for (const component of entity.components) {
144
+ try {
145
+ const result = component.onDeserialized();
146
+ if (result instanceof Promise) {
147
+ promises.push(result);
148
+ }
149
+ }
150
+ catch (error) {
151
+ console.error(`Error calling onDeserialized on component ${component.constructor.name}:`, error);
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * 递归添加实体的所有子实体到场景
157
+ *
158
+ * 修复反序列化时子实体丢失的问题:
159
+ * EntitySerializer.deserialize会提前设置子实体的scene引用,
160
+ * 导致Entity.addChild的条件判断(!child.scene)跳过scene.addEntity调用。
161
+ * 因此需要在SceneSerializer中统一递归添加所有子实体。
162
+ *
163
+ * @param entity 父实体
164
+ * @param scene 目标场景
165
+ * @param hierarchySystem 层级系统
166
+ */
167
+ static addChildrenRecursively(entity, scene, hierarchySystem, childEntitiesMap) {
168
+ const hierarchy = entity.getComponent(HierarchyComponent);
169
+ if (!hierarchy || hierarchy.childIds.length === 0)
170
+ return;
171
+ // 获取子实体
172
+ // 注意:此时子实体还没有被添加到场景,所以不能用 scene.findEntityById
173
+ // 需要从 childEntitiesMap 中查找(如果提供了的话)
174
+ for (const childId of hierarchy.childIds) {
175
+ // 尝试从 map 中获取,否则从场景获取(用于已添加的情况)
176
+ const child = childEntitiesMap?.get(childId) ?? scene.findEntityById(childId);
177
+ if (child) {
178
+ scene.addEntity(child, true); // 延迟缓存清理
179
+ this.addChildrenRecursively(child, scene, hierarchySystem, childEntitiesMap);
180
+ }
181
+ }
182
+ }
183
+ /**
184
+ * 序列化场景自定义数据
185
+ *
186
+ * 将 Map<string, any> 转换为普通对象
187
+ */
188
+ static serializeSceneData(sceneData) {
189
+ const result = {};
190
+ for (const [key, value] of sceneData) {
191
+ result[key] = this.serializeValue(value);
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * 反序列化场景自定义数据
197
+ *
198
+ * 将普通对象还原为 Map<string, any>
199
+ */
200
+ static deserializeSceneData(data, targetMap) {
201
+ targetMap.clear();
202
+ for (const [key, value] of Object.entries(data)) {
203
+ targetMap.set(key, this.deserializeValue(value));
204
+ }
205
+ }
206
+ /**
207
+ * 序列化单个值
208
+ */
209
+ static serializeValue(value) {
210
+ if (value === null || value === undefined) {
211
+ return value;
212
+ }
213
+ // 基本类型
214
+ const type = typeof value;
215
+ if (type === 'string' || type === 'number' || type === 'boolean') {
216
+ return value;
217
+ }
218
+ // Date
219
+ if (value instanceof Date) {
220
+ return { __type: 'Date', value: value.toISOString() };
221
+ }
222
+ // Map
223
+ if (value instanceof Map) {
224
+ return { __type: 'Map', value: Array.from(value.entries()) };
225
+ }
226
+ // Set
227
+ if (value instanceof Set) {
228
+ return { __type: 'Set', value: Array.from(value) };
229
+ }
230
+ // 数组
231
+ if (Array.isArray(value)) {
232
+ return value.map((item) => this.serializeValue(item));
233
+ }
234
+ // 普通对象
235
+ if (type === 'object') {
236
+ const result = {};
237
+ for (const key in value) {
238
+ if (value.hasOwnProperty(key)) {
239
+ result[key] = this.serializeValue(value[key]);
240
+ }
241
+ }
242
+ return result;
243
+ }
244
+ // 其他类型不序列化
245
+ return undefined;
246
+ }
247
+ /**
248
+ * 反序列化单个值
249
+ */
250
+ static deserializeValue(value) {
251
+ if (value === null || value === undefined) {
252
+ return value;
253
+ }
254
+ // 基本类型
255
+ const type = typeof value;
256
+ if (type === 'string' || type === 'number' || type === 'boolean') {
257
+ return value;
258
+ }
259
+ // 处理特殊类型标记
260
+ if (type === 'object' && value.__type) {
261
+ switch (value.__type) {
262
+ case 'Date':
263
+ return new Date(value.value);
264
+ case 'Map':
265
+ return new Map(value.value);
266
+ case 'Set':
267
+ return new Set(value.value);
268
+ }
269
+ }
270
+ // 数组
271
+ if (Array.isArray(value)) {
272
+ return value.map((item) => this.deserializeValue(item));
273
+ }
274
+ // 普通对象
275
+ if (type === 'object') {
276
+ const result = {};
277
+ for (const key in value) {
278
+ if (value.hasOwnProperty(key)) {
279
+ result[key] = this.deserializeValue(value[key]);
280
+ }
281
+ }
282
+ return result;
283
+ }
284
+ return value;
285
+ }
286
+ /**
287
+ * 过滤要序列化的实体和组件
288
+ */
289
+ static filterEntities(scene, options) {
290
+ const entities = Array.from(scene.entities.buffer);
291
+ // 如果指定了组件类型过滤
292
+ if (options.components && options.components.length > 0) {
293
+ const componentTypeSet = new Set(options.components);
294
+ // 只返回拥有指定组件的实体
295
+ return entities.filter((entity) => {
296
+ return Array.from(entity.components).some((component) => componentTypeSet.has(component.constructor));
297
+ });
298
+ }
299
+ return entities;
300
+ }
301
+ /**
302
+ * 构建组件类型注册表
303
+ */
304
+ static buildComponentTypeRegistry(entities) {
305
+ const registry = new Map();
306
+ for (const entity of entities) {
307
+ for (const component of entity.components) {
308
+ const componentType = component.constructor;
309
+ const typeName = getComponentTypeName(componentType);
310
+ const metadata = getSerializationMetadata(component);
311
+ if (metadata && !registry.has(typeName)) {
312
+ registry.set(typeName, metadata.options.version);
313
+ }
314
+ }
315
+ }
316
+ return Array.from(registry.entries()).map(([typeName, version]) => ({
317
+ typeName,
318
+ version
319
+ }));
320
+ }
321
+ /**
322
+ * 获取全局组件注册表
323
+ *
324
+ * 从所有已注册的组件类型构建注册表
325
+ */
326
+ static getGlobalComponentRegistry() {
327
+ return ComponentRegistry.getAllComponentNames();
328
+ }
329
+ /**
330
+ * 验证保存数据的有效性
331
+ *
332
+ * @param saveData 序列化的数据
333
+ * @returns 验证结果
334
+ */
335
+ static validate(saveData) {
336
+ const errors = [];
337
+ try {
338
+ const data = JSON.parse(saveData);
339
+ if (!data.version) {
340
+ errors.push('Missing version field');
341
+ }
342
+ if (!data.entities || !Array.isArray(data.entities)) {
343
+ errors.push('Missing or invalid entities field');
344
+ }
345
+ if (!data.componentTypeRegistry || !Array.isArray(data.componentTypeRegistry)) {
346
+ errors.push('Missing or invalid componentTypeRegistry field');
347
+ }
348
+ return {
349
+ valid: errors.length === 0,
350
+ version: data.version,
351
+ ...(errors.length > 0 && { errors })
352
+ };
353
+ }
354
+ catch (error) {
355
+ return {
356
+ valid: false,
357
+ errors: [`JSON parse error: ${error}`]
358
+ };
359
+ }
360
+ }
361
+ /**
362
+ * 获取保存数据的信息(不完全反序列化)
363
+ *
364
+ * @param saveData 序列化的数据
365
+ * @returns 保存数据的元信息
366
+ */
367
+ static getInfo(saveData) {
368
+ try {
369
+ const data = JSON.parse(saveData);
370
+ return {
371
+ name: data.name,
372
+ version: data.version,
373
+ ...(data.timestamp !== undefined && { timestamp: data.timestamp }),
374
+ entityCount: data.metadata?.entityCount || data.entities.length,
375
+ componentTypeCount: data.componentTypeRegistry.length
376
+ };
377
+ }
378
+ catch (error) {
379
+ return null;
380
+ }
381
+ }
382
+ }
383
+ /**
384
+ * 当前序列化版本
385
+ */
386
+ SceneSerializer.SERIALIZATION_VERSION = 1;
387
+ //# sourceMappingURL=SceneSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneSerializer.js","sourceRoot":"","sources":["../../../src/ECS/Serialization/SceneSerializer.ts"],"names":[],"mappings":"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"}