@nice2dev/game-engine 0.1.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 (519) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +105 -0
  4. package/dist/cjs/accessibility/Accessibility.js +162 -0
  5. package/dist/cjs/accessibility/Accessibility.js.map +1 -0
  6. package/dist/cjs/ai/AI.js +321 -0
  7. package/dist/cjs/ai/AI.js.map +1 -0
  8. package/dist/cjs/animation/Animation.js +233 -0
  9. package/dist/cjs/animation/Animation.js.map +1 -0
  10. package/dist/cjs/audio/AudioAdvanced.js +262 -0
  11. package/dist/cjs/audio/AudioAdvanced.js.map +1 -0
  12. package/dist/cjs/audio/AudioManager.js +248 -0
  13. package/dist/cjs/audio/AudioManager.js.map +1 -0
  14. package/dist/cjs/core/EventBus.js +63 -0
  15. package/dist/cjs/core/EventBus.js.map +1 -0
  16. package/dist/cjs/core/GameClock.js +70 -0
  17. package/dist/cjs/core/GameClock.js.map +1 -0
  18. package/dist/cjs/core/GameConfig.js +86 -0
  19. package/dist/cjs/core/GameConfig.js.map +1 -0
  20. package/dist/cjs/core/GameLoop.js +93 -0
  21. package/dist/cjs/core/GameLoop.js.map +1 -0
  22. package/dist/cjs/core/ServiceLocator.js +73 -0
  23. package/dist/cjs/core/ServiceLocator.js.map +1 -0
  24. package/dist/cjs/core/Validation.js +119 -0
  25. package/dist/cjs/core/Validation.js.map +1 -0
  26. package/dist/cjs/core/math.js +116 -0
  27. package/dist/cjs/core/math.js.map +1 -0
  28. package/dist/cjs/devtools/DevTools.js +560 -0
  29. package/dist/cjs/devtools/DevTools.js.map +1 -0
  30. package/dist/cjs/devtools/DeveloperExperience.js +562 -0
  31. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -0
  32. package/dist/cjs/docs/DocGenerator.js +357 -0
  33. package/dist/cjs/docs/DocGenerator.js.map +1 -0
  34. package/dist/cjs/ecs/World.js +280 -0
  35. package/dist/cjs/ecs/World.js.map +1 -0
  36. package/dist/cjs/editor/AdvancedEditor.js +149 -0
  37. package/dist/cjs/editor/AdvancedEditor.js.map +1 -0
  38. package/dist/cjs/editor/AssetManager.js +190 -0
  39. package/dist/cjs/editor/AssetManager.js.map +1 -0
  40. package/dist/cjs/editor/DebugTools.js +187 -0
  41. package/dist/cjs/editor/DebugTools.js.map +1 -0
  42. package/dist/cjs/editor/NiceGameEditor.js +361 -0
  43. package/dist/cjs/editor/NiceGameEditor.js.map +1 -0
  44. package/dist/cjs/editor/SceneEditor.js +223 -0
  45. package/dist/cjs/editor/SceneEditor.js.map +1 -0
  46. package/dist/cjs/engine/NiceGameEngine.js +172 -0
  47. package/dist/cjs/engine/NiceGameEngine.js.map +1 -0
  48. package/dist/cjs/enterprise/Enterprise.js +258 -0
  49. package/dist/cjs/enterprise/Enterprise.js.map +1 -0
  50. package/dist/cjs/i18n/I18n.js +634 -0
  51. package/dist/cjs/i18n/I18n.js.map +1 -0
  52. package/dist/cjs/i18n/useTranslation.js +100 -0
  53. package/dist/cjs/i18n/useTranslation.js.map +1 -0
  54. package/dist/cjs/index.js +526 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/input/GamepadNavigation.js +181 -0
  57. package/dist/cjs/input/GamepadNavigation.js.map +1 -0
  58. package/dist/cjs/input/InputManager.js +404 -0
  59. package/dist/cjs/input/InputManager.js.map +1 -0
  60. package/dist/cjs/input/useGamepads.js +86 -0
  61. package/dist/cjs/input/useGamepads.js.map +1 -0
  62. package/dist/cjs/kids/KidMode.js +670 -0
  63. package/dist/cjs/kids/KidMode.js.map +1 -0
  64. package/dist/cjs/kids/KidTools.js +533 -0
  65. package/dist/cjs/kids/KidTools.js.map +1 -0
  66. package/dist/cjs/monetization/Monetization.js +197 -0
  67. package/dist/cjs/monetization/Monetization.js.map +1 -0
  68. package/dist/cjs/multiplayer/LocalMultiplayer.js +288 -0
  69. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -0
  70. package/dist/cjs/multiplayer/MiniGameTypes.js +70 -0
  71. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -0
  72. package/dist/cjs/network/MultiplayerTransport.js +109 -0
  73. package/dist/cjs/network/MultiplayerTransport.js.map +1 -0
  74. package/dist/cjs/network/Networking.js +569 -0
  75. package/dist/cjs/network/Networking.js.map +1 -0
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +32 -0
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +51 -0
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +46 -0
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +18 -0
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +145 -0
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +161 -0
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +56 -0
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +11 -0
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +52 -0
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +576 -0
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +956 -0
  97. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  98. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +149 -0
  99. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  100. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  101. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  102. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  103. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  104. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  105. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  106. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +124 -0
  107. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  108. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +17 -0
  109. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  110. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +188 -0
  111. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  112. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +199 -0
  113. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  114. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +108 -0
  115. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  116. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +38 -0
  117. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  118. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +24 -0
  119. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  120. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +264 -0
  121. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  122. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +160 -0
  123. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  124. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +88 -0
  125. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  126. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +50 -0
  127. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  128. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +6 -0
  129. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  130. package/dist/cjs/pathfinding/Pathfinding.js +255 -0
  131. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -0
  132. package/dist/cjs/performance/BenchmarkSuite.js +318 -0
  133. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -0
  134. package/dist/cjs/performance/Performance.js +180 -0
  135. package/dist/cjs/performance/Performance.js.map +1 -0
  136. package/dist/cjs/performance/PerformanceAdvanced.js +628 -0
  137. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -0
  138. package/dist/cjs/physics/PhysicsAdvanced.js +432 -0
  139. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -0
  140. package/dist/cjs/physics/PhysicsEngine2D.js +445 -0
  141. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -0
  142. package/dist/cjs/plugins/PluginSDK.js +488 -0
  143. package/dist/cjs/plugins/PluginSDK.js.map +1 -0
  144. package/dist/cjs/plugins/PluginTestKit.js +368 -0
  145. package/dist/cjs/plugins/PluginTestKit.js.map +1 -0
  146. package/dist/cjs/procedural/Procedural.js +288 -0
  147. package/dist/cjs/procedural/Procedural.js.map +1 -0
  148. package/dist/cjs/procedural/WorldBuilding.js +246 -0
  149. package/dist/cjs/procedural/WorldBuilding.js.map +1 -0
  150. package/dist/cjs/release/MobileExport.js +149 -0
  151. package/dist/cjs/release/MobileExport.js.map +1 -0
  152. package/dist/cjs/release/Release.js +151 -0
  153. package/dist/cjs/release/Release.js.map +1 -0
  154. package/dist/cjs/rendering/Camera2D.js +129 -0
  155. package/dist/cjs/rendering/Camera2D.js.map +1 -0
  156. package/dist/cjs/rendering/Renderer2D.js +337 -0
  157. package/dist/cjs/rendering/Renderer2D.js.map +1 -0
  158. package/dist/cjs/runtime3d/Runtime3D.js +381 -0
  159. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -0
  160. package/dist/cjs/runtime3d/SceneEditor3D.js +316 -0
  161. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -0
  162. package/dist/cjs/scene/SceneManager.js +186 -0
  163. package/dist/cjs/scene/SceneManager.js.map +1 -0
  164. package/dist/cjs/scripting/NodeGraph.js +573 -0
  165. package/dist/cjs/scripting/NodeGraph.js.map +1 -0
  166. package/dist/cjs/social/Social.js +91 -0
  167. package/dist/cjs/social/Social.js.map +1 -0
  168. package/dist/cjs/templates/ActionTemplates.js +229 -0
  169. package/dist/cjs/templates/ActionTemplates.js.map +1 -0
  170. package/dist/cjs/templates/PartyTemplates.js +221 -0
  171. package/dist/cjs/templates/PartyTemplates.js.map +1 -0
  172. package/dist/cjs/templates/PuzzleTemplates.js +283 -0
  173. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -0
  174. package/dist/cjs/templates/RPGTemplates.js +209 -0
  175. package/dist/cjs/templates/RPGTemplates.js.map +1 -0
  176. package/dist/cjs/templates/SportsTemplates.js +272 -0
  177. package/dist/cjs/templates/SportsTemplates.js.map +1 -0
  178. package/dist/cjs/templates/StrategyTemplates.js +173 -0
  179. package/dist/cjs/templates/StrategyTemplates.js.map +1 -0
  180. package/dist/cjs/templates/WaveDefense.js +470 -0
  181. package/dist/cjs/templates/WaveDefense.js.map +1 -0
  182. package/dist/cjs/tilemap/Tilemap.js +208 -0
  183. package/dist/cjs/tilemap/Tilemap.js.map +1 -0
  184. package/dist/cjs/tutorials/TutorialBranching.js +392 -0
  185. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -0
  186. package/dist/cjs/tutorials/TutorialEngine.js +903 -0
  187. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -0
  188. package/dist/cjs/tutorials/TutorialOverlay.js +602 -0
  189. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -0
  190. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +816 -0
  191. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  192. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +741 -0
  193. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  194. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +786 -0
  195. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  196. package/dist/cjs/ui/GameUI.js +312 -0
  197. package/dist/cjs/ui/GameUI.js.map +1 -0
  198. package/dist/cjs/xr/ARVR.js +197 -0
  199. package/dist/cjs/xr/ARVR.js.map +1 -0
  200. package/dist/esm/accessibility/Accessibility.js +153 -0
  201. package/dist/esm/accessibility/Accessibility.js.map +1 -0
  202. package/dist/esm/ai/AI.js +302 -0
  203. package/dist/esm/ai/AI.js.map +1 -0
  204. package/dist/esm/animation/Animation.js +227 -0
  205. package/dist/esm/animation/Animation.js.map +1 -0
  206. package/dist/esm/audio/AudioAdvanced.js +243 -0
  207. package/dist/esm/audio/AudioAdvanced.js.map +1 -0
  208. package/dist/esm/audio/AudioManager.js +246 -0
  209. package/dist/esm/audio/AudioManager.js.map +1 -0
  210. package/dist/esm/core/EventBus.js +61 -0
  211. package/dist/esm/core/EventBus.js.map +1 -0
  212. package/dist/esm/core/GameClock.js +68 -0
  213. package/dist/esm/core/GameClock.js.map +1 -0
  214. package/dist/esm/core/GameConfig.js +80 -0
  215. package/dist/esm/core/GameConfig.js.map +1 -0
  216. package/dist/esm/core/GameLoop.js +91 -0
  217. package/dist/esm/core/GameLoop.js.map +1 -0
  218. package/dist/esm/core/ServiceLocator.js +70 -0
  219. package/dist/esm/core/ServiceLocator.js.map +1 -0
  220. package/dist/esm/core/Validation.js +108 -0
  221. package/dist/esm/core/Validation.js.map +1 -0
  222. package/dist/esm/core/math.js +114 -0
  223. package/dist/esm/core/math.js.map +1 -0
  224. package/dist/esm/devtools/DevTools.js +555 -0
  225. package/dist/esm/devtools/DevTools.js.map +1 -0
  226. package/dist/esm/devtools/DeveloperExperience.js +547 -0
  227. package/dist/esm/devtools/DeveloperExperience.js.map +1 -0
  228. package/dist/esm/docs/DocGenerator.js +353 -0
  229. package/dist/esm/docs/DocGenerator.js.map +1 -0
  230. package/dist/esm/ecs/World.js +276 -0
  231. package/dist/esm/ecs/World.js.map +1 -0
  232. package/dist/esm/editor/AdvancedEditor.js +141 -0
  233. package/dist/esm/editor/AdvancedEditor.js.map +1 -0
  234. package/dist/esm/editor/AssetManager.js +188 -0
  235. package/dist/esm/editor/AssetManager.js.map +1 -0
  236. package/dist/esm/editor/DebugTools.js +179 -0
  237. package/dist/esm/editor/DebugTools.js.map +1 -0
  238. package/dist/esm/editor/NiceGameEditor.js +355 -0
  239. package/dist/esm/editor/NiceGameEditor.js.map +1 -0
  240. package/dist/esm/editor/SceneEditor.js +209 -0
  241. package/dist/esm/editor/SceneEditor.js.map +1 -0
  242. package/dist/esm/engine/NiceGameEngine.js +170 -0
  243. package/dist/esm/engine/NiceGameEngine.js.map +1 -0
  244. package/dist/esm/enterprise/Enterprise.js +246 -0
  245. package/dist/esm/enterprise/Enterprise.js.map +1 -0
  246. package/dist/esm/i18n/I18n.js +622 -0
  247. package/dist/esm/i18n/I18n.js.map +1 -0
  248. package/dist/esm/i18n/useTranslation.js +95 -0
  249. package/dist/esm/i18n/useTranslation.js.map +1 -0
  250. package/dist/esm/index.js +71 -0
  251. package/dist/esm/index.js.map +1 -0
  252. package/dist/esm/input/GamepadNavigation.js +178 -0
  253. package/dist/esm/input/GamepadNavigation.js.map +1 -0
  254. package/dist/esm/input/InputManager.js +399 -0
  255. package/dist/esm/input/InputManager.js.map +1 -0
  256. package/dist/esm/input/useGamepads.js +83 -0
  257. package/dist/esm/input/useGamepads.js.map +1 -0
  258. package/dist/esm/kids/KidMode.js +663 -0
  259. package/dist/esm/kids/KidMode.js.map +1 -0
  260. package/dist/esm/kids/KidTools.js +529 -0
  261. package/dist/esm/kids/KidTools.js.map +1 -0
  262. package/dist/esm/monetization/Monetization.js +186 -0
  263. package/dist/esm/monetization/Monetization.js.map +1 -0
  264. package/dist/esm/multiplayer/LocalMultiplayer.js +284 -0
  265. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -0
  266. package/dist/esm/multiplayer/MiniGameTypes.js +60 -0
  267. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -0
  268. package/dist/esm/network/MultiplayerTransport.js +106 -0
  269. package/dist/esm/network/MultiplayerTransport.js.map +1 -0
  270. package/dist/esm/network/Networking.js +561 -0
  271. package/dist/esm/network/Networking.js.map +1 -0
  272. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +30 -0
  273. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  274. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +49 -0
  275. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  276. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +44 -0
  277. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  278. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +16 -0
  279. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  280. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +136 -0
  281. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  282. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +159 -0
  283. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  284. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +54 -0
  285. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  286. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +9 -0
  287. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  288. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +49 -0
  289. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  290. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +573 -0
  291. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  292. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +954 -0
  293. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  294. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +147 -0
  295. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  296. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  297. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  298. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  299. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  300. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  301. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  302. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +122 -0
  303. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  304. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +15 -0
  305. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  306. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +186 -0
  307. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  308. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +197 -0
  309. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  310. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +106 -0
  311. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  312. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +36 -0
  313. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  314. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +22 -0
  315. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  316. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +249 -0
  317. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  318. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +158 -0
  319. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  320. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +86 -0
  321. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  322. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +13 -0
  323. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  324. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -0
  325. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  326. package/dist/esm/pathfinding/Pathfinding.js +250 -0
  327. package/dist/esm/pathfinding/Pathfinding.js.map +1 -0
  328. package/dist/esm/performance/BenchmarkSuite.js +315 -0
  329. package/dist/esm/performance/BenchmarkSuite.js.map +1 -0
  330. package/dist/esm/performance/Performance.js +171 -0
  331. package/dist/esm/performance/Performance.js.map +1 -0
  332. package/dist/esm/performance/PerformanceAdvanced.js +620 -0
  333. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -0
  334. package/dist/esm/physics/PhysicsAdvanced.js +417 -0
  335. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -0
  336. package/dist/esm/physics/PhysicsEngine2D.js +442 -0
  337. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -0
  338. package/dist/esm/plugins/PluginSDK.js +484 -0
  339. package/dist/esm/plugins/PluginSDK.js.map +1 -0
  340. package/dist/esm/plugins/PluginTestKit.js +359 -0
  341. package/dist/esm/plugins/PluginTestKit.js.map +1 -0
  342. package/dist/esm/procedural/Procedural.js +282 -0
  343. package/dist/esm/procedural/Procedural.js.map +1 -0
  344. package/dist/esm/procedural/WorldBuilding.js +225 -0
  345. package/dist/esm/procedural/WorldBuilding.js.map +1 -0
  346. package/dist/esm/release/MobileExport.js +142 -0
  347. package/dist/esm/release/MobileExport.js.map +1 -0
  348. package/dist/esm/release/Release.js +141 -0
  349. package/dist/esm/release/Release.js.map +1 -0
  350. package/dist/esm/rendering/Camera2D.js +127 -0
  351. package/dist/esm/rendering/Camera2D.js.map +1 -0
  352. package/dist/esm/rendering/Renderer2D.js +334 -0
  353. package/dist/esm/rendering/Renderer2D.js.map +1 -0
  354. package/dist/esm/runtime3d/Runtime3D.js +371 -0
  355. package/dist/esm/runtime3d/Runtime3D.js.map +1 -0
  356. package/dist/esm/runtime3d/SceneEditor3D.js +299 -0
  357. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -0
  358. package/dist/esm/scene/SceneManager.js +184 -0
  359. package/dist/esm/scene/SceneManager.js.map +1 -0
  360. package/dist/esm/scripting/NodeGraph.js +568 -0
  361. package/dist/esm/scripting/NodeGraph.js.map +1 -0
  362. package/dist/esm/social/Social.js +85 -0
  363. package/dist/esm/social/Social.js.map +1 -0
  364. package/dist/esm/templates/ActionTemplates.js +217 -0
  365. package/dist/esm/templates/ActionTemplates.js.map +1 -0
  366. package/dist/esm/templates/PartyTemplates.js +204 -0
  367. package/dist/esm/templates/PartyTemplates.js.map +1 -0
  368. package/dist/esm/templates/PuzzleTemplates.js +267 -0
  369. package/dist/esm/templates/PuzzleTemplates.js.map +1 -0
  370. package/dist/esm/templates/RPGTemplates.js +196 -0
  371. package/dist/esm/templates/RPGTemplates.js.map +1 -0
  372. package/dist/esm/templates/SportsTemplates.js +257 -0
  373. package/dist/esm/templates/SportsTemplates.js.map +1 -0
  374. package/dist/esm/templates/StrategyTemplates.js +157 -0
  375. package/dist/esm/templates/StrategyTemplates.js.map +1 -0
  376. package/dist/esm/templates/WaveDefense.js +467 -0
  377. package/dist/esm/templates/WaveDefense.js.map +1 -0
  378. package/dist/esm/tilemap/Tilemap.js +205 -0
  379. package/dist/esm/tilemap/Tilemap.js.map +1 -0
  380. package/dist/esm/tutorials/TutorialBranching.js +388 -0
  381. package/dist/esm/tutorials/TutorialBranching.js.map +1 -0
  382. package/dist/esm/tutorials/TutorialEngine.js +897 -0
  383. package/dist/esm/tutorials/TutorialEngine.js.map +1 -0
  384. package/dist/esm/tutorials/TutorialOverlay.js +600 -0
  385. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -0
  386. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +810 -0
  387. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  388. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +736 -0
  389. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  390. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +780 -0
  391. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  392. package/dist/esm/ui/GameUI.js +310 -0
  393. package/dist/esm/ui/GameUI.js.map +1 -0
  394. package/dist/esm/xr/ARVR.js +182 -0
  395. package/dist/esm/xr/ARVR.js.map +1 -0
  396. package/dist/types/__tests__/setup.d.ts +1 -0
  397. package/dist/types/accessibility/Accessibility.d.ts +82 -0
  398. package/dist/types/accessibility/index.d.ts +1 -0
  399. package/dist/types/ai/AI.d.ts +140 -0
  400. package/dist/types/ai/index.d.ts +1 -0
  401. package/dist/types/animation/Animation.d.ts +90 -0
  402. package/dist/types/animation/index.d.ts +1 -0
  403. package/dist/types/audio/AudioAdvanced.d.ts +190 -0
  404. package/dist/types/audio/AudioManager.d.ts +55 -0
  405. package/dist/types/audio/index.d.ts +1 -0
  406. package/dist/types/community/Community.d.ts +112 -0
  407. package/dist/types/community/index.d.ts +1 -0
  408. package/dist/types/core/EventBus.d.ts +16 -0
  409. package/dist/types/core/GameClock.d.ts +29 -0
  410. package/dist/types/core/GameConfig.d.ts +20 -0
  411. package/dist/types/core/GameLoop.d.ts +32 -0
  412. package/dist/types/core/ServiceLocator.d.ts +36 -0
  413. package/dist/types/core/TypeSafety.d.ts +190 -0
  414. package/dist/types/core/Validation.d.ts +24 -0
  415. package/dist/types/core/index.d.ts +7 -0
  416. package/dist/types/core/math.d.ts +32 -0
  417. package/dist/types/core/types.d.ts +130 -0
  418. package/dist/types/devtools/AssetStore.d.ts +133 -0
  419. package/dist/types/devtools/DevTools.d.ts +217 -0
  420. package/dist/types/devtools/DeveloperExperience.d.ts +123 -0
  421. package/dist/types/devtools/index.d.ts +3 -0
  422. package/dist/types/docs/APIPlayground.d.ts +26 -0
  423. package/dist/types/docs/Cookbook.d.ts +18 -0
  424. package/dist/types/docs/DocGenerator.d.ts +83 -0
  425. package/dist/types/docs/Guides.d.ts +18 -0
  426. package/dist/types/docs/index.d.ts +4 -0
  427. package/dist/types/ecs/World.d.ts +219 -0
  428. package/dist/types/ecs/index.d.ts +1 -0
  429. package/dist/types/editor/AdvancedEditor.d.ts +267 -0
  430. package/dist/types/editor/AssetManager.d.ts +45 -0
  431. package/dist/types/editor/DebugTools.d.ts +74 -0
  432. package/dist/types/editor/NiceGameEditor.d.ts +115 -0
  433. package/dist/types/editor/SceneEditor.d.ts +37 -0
  434. package/dist/types/editor/index.d.ts +8 -0
  435. package/dist/types/engine/NiceGameEngine.d.ts +53 -0
  436. package/dist/types/engine/index.d.ts +2 -0
  437. package/dist/types/enterprise/Enterprise.d.ts +217 -0
  438. package/dist/types/enterprise/index.d.ts +1 -0
  439. package/dist/types/epic/index.d.ts +10 -0
  440. package/dist/types/i18n/I18n.d.ts +107 -0
  441. package/dist/types/i18n/index.d.ts +2 -0
  442. package/dist/types/i18n/useTranslation.d.ts +74 -0
  443. package/dist/types/index.d.ts +127 -0
  444. package/dist/types/input/GamepadNavigation.d.ts +34 -0
  445. package/dist/types/input/InputManager.d.ts +77 -0
  446. package/dist/types/input/index.d.ts +3 -0
  447. package/dist/types/input/useGamepads.d.ts +39 -0
  448. package/dist/types/kids/KidMode.d.ts +207 -0
  449. package/dist/types/kids/KidTools.d.ts +135 -0
  450. package/dist/types/kids/index.d.ts +2 -0
  451. package/dist/types/legendary/index.d.ts +57 -0
  452. package/dist/types/monetization/Monetization.d.ts +224 -0
  453. package/dist/types/monetization/index.d.ts +1 -0
  454. package/dist/types/multiplayer/LocalMultiplayer.d.ts +61 -0
  455. package/dist/types/multiplayer/MiniGameTypes.d.ts +70 -0
  456. package/dist/types/multiplayer/index.d.ts +3 -0
  457. package/dist/types/network/MultiplayerTransport.d.ts +71 -0
  458. package/dist/types/network/Networking.d.ts +199 -0
  459. package/dist/types/network/index.d.ts +2 -0
  460. package/dist/types/pathfinding/Pathfinding.d.ts +42 -0
  461. package/dist/types/pathfinding/index.d.ts +1 -0
  462. package/dist/types/performance/AssetCompression.d.ts +137 -0
  463. package/dist/types/performance/BenchmarkSuite.d.ts +99 -0
  464. package/dist/types/performance/Performance.d.ts +87 -0
  465. package/dist/types/performance/PerformanceAdvanced.d.ts +220 -0
  466. package/dist/types/performance/WASMModules.d.ts +65 -0
  467. package/dist/types/performance/WebGPUCompute.d.ts +164 -0
  468. package/dist/types/performance/index.d.ts +1 -0
  469. package/dist/types/physics/PhysicsAdvanced.d.ts +148 -0
  470. package/dist/types/physics/PhysicsEngine2D.d.ts +66 -0
  471. package/dist/types/physics/index.d.ts +1 -0
  472. package/dist/types/plugins/PluginSDK.d.ts +134 -0
  473. package/dist/types/plugins/PluginTestKit.d.ts +107 -0
  474. package/dist/types/plugins/index.d.ts +2 -0
  475. package/dist/types/procedural/Procedural.d.ts +90 -0
  476. package/dist/types/procedural/WorldBuilding.d.ts +200 -0
  477. package/dist/types/procedural/index.d.ts +2 -0
  478. package/dist/types/release/MobileExport.d.ts +218 -0
  479. package/dist/types/release/Release.d.ts +81 -0
  480. package/dist/types/release/index.d.ts +1 -0
  481. package/dist/types/rendering/Camera2D.d.ts +39 -0
  482. package/dist/types/rendering/Renderer2D.d.ts +41 -0
  483. package/dist/types/rendering/index.d.ts +2 -0
  484. package/dist/types/runtime3d/Runtime3D.d.ts +259 -0
  485. package/dist/types/runtime3d/SceneEditor3D.d.ts +186 -0
  486. package/dist/types/runtime3d/index.d.ts +2 -0
  487. package/dist/types/scene/SceneManager.d.ts +59 -0
  488. package/dist/types/scene/index.d.ts +2 -0
  489. package/dist/types/scripting/NodeGraph.d.ts +84 -0
  490. package/dist/types/scripting/index.d.ts +2 -0
  491. package/dist/types/social/Social.d.ts +245 -0
  492. package/dist/types/social/index.d.ts +1 -0
  493. package/dist/types/templates/ActionTemplates.d.ts +173 -0
  494. package/dist/types/templates/PartyTemplates.d.ts +195 -0
  495. package/dist/types/templates/PuzzleTemplates.d.ts +127 -0
  496. package/dist/types/templates/RPGTemplates.d.ts +210 -0
  497. package/dist/types/templates/SportsTemplates.d.ts +162 -0
  498. package/dist/types/templates/StrategyTemplates.d.ts +264 -0
  499. package/dist/types/templates/WaveDefense.d.ts +92 -0
  500. package/dist/types/templates/index.d.ts +2 -0
  501. package/dist/types/tilemap/Tilemap.d.ts +66 -0
  502. package/dist/types/tilemap/index.d.ts +1 -0
  503. package/dist/types/tutorials/TutorialBranching.d.ts +132 -0
  504. package/dist/types/tutorials/TutorialEditor.d.ts +43 -0
  505. package/dist/types/tutorials/TutorialEngine.d.ts +237 -0
  506. package/dist/types/tutorials/TutorialOverlay.d.ts +79 -0
  507. package/dist/types/tutorials/VoiceNarration.d.ts +75 -0
  508. package/dist/types/tutorials/content/Tutorials_T04.d.ts +3 -0
  509. package/dist/types/tutorials/content/Tutorials_T05_T08.d.ts +6 -0
  510. package/dist/types/tutorials/content/Tutorials_T09_T11.d.ts +5 -0
  511. package/dist/types/tutorials/content/Tutorials_T12_T15.d.ts +6 -0
  512. package/dist/types/tutorials/content/UITutorials.d.ts +14 -0
  513. package/dist/types/tutorials/content/index.d.ts +5 -0
  514. package/dist/types/tutorials/index.d.ts +6 -0
  515. package/dist/types/ui/GameUI.d.ts +97 -0
  516. package/dist/types/ui/index.d.ts +2 -0
  517. package/dist/types/xr/ARVR.d.ts +252 -0
  518. package/dist/types/xr/index.d.ts +1 -0
  519. package/package.json +88 -0
@@ -0,0 +1,353 @@
1
+ import { EventBus } from '../core/EventBus.js';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ Documentation Generator — LEGENDARY L10
5
+
6
+ Auto-generates API docs from registered modules:
7
+ • Markdown output
8
+ • Interactive docs browser model (JSON structure)
9
+ • Search index for API lookup
10
+ • Example code linking
11
+ ──────────────────────────────────────────────────────────────── */
12
+ /* ══════════════════════════════════════════════════════════════
13
+ DocRegistry — Central API documentation registry
14
+ ══════════════════════════════════════════════════════════════ */
15
+ class DocRegistry {
16
+ constructor() {
17
+ this.events = new EventBus();
18
+ this.modules = new Map();
19
+ }
20
+ /** Register a module's documentation. */
21
+ registerModule(mod) {
22
+ this.modules.set(mod.name, mod);
23
+ this.events.emit('doc:module-registered', { name: mod.name });
24
+ }
25
+ /** Unregister a module. */
26
+ unregisterModule(name) {
27
+ this.modules.delete(name);
28
+ }
29
+ /** Get a module by name. */
30
+ getModule(name) {
31
+ return this.modules.get(name);
32
+ }
33
+ /** Get all registered modules. */
34
+ getAllModules() {
35
+ return Array.from(this.modules.values());
36
+ }
37
+ /** Get all modules in a category. */
38
+ getModulesByCategory(category) {
39
+ const result = [];
40
+ for (const mod of this.modules.values()) {
41
+ if (mod.category === category)
42
+ result.push(mod);
43
+ }
44
+ return result;
45
+ }
46
+ /** Search across all docs. */
47
+ search(query, maxResults = 20) {
48
+ const q = query.toLowerCase();
49
+ const results = [];
50
+ for (const mod of this.modules.values()) {
51
+ for (const member of mod.members) {
52
+ const score = this.scoreMember(member, q);
53
+ if (score > 0) {
54
+ results.push({ member, module: mod.name, score });
55
+ }
56
+ }
57
+ }
58
+ results.sort((a, b) => b.score - a.score);
59
+ return results.slice(0, maxResults);
60
+ }
61
+ scoreMember(member, query) {
62
+ let score = 0;
63
+ const name = member.name.toLowerCase();
64
+ // Exact name match
65
+ if (name === query)
66
+ return 100;
67
+ // Name starts with query
68
+ if (name.startsWith(query))
69
+ score += 50;
70
+ // Name contains query
71
+ if (name.indexOf(query) >= 0)
72
+ score += 30;
73
+ // Description match
74
+ if (member.description.toLowerCase().indexOf(query) >= 0)
75
+ score += 10;
76
+ // Tag match
77
+ if (member.tags) {
78
+ for (const tag of member.tags) {
79
+ if (tag.toLowerCase().indexOf(query) >= 0)
80
+ score += 15;
81
+ }
82
+ }
83
+ return score;
84
+ }
85
+ /** Get a specific member by name. */
86
+ findMember(memberName) {
87
+ const lower = memberName.toLowerCase();
88
+ for (const mod of this.modules.values()) {
89
+ for (const member of mod.members) {
90
+ if (member.name.toLowerCase() === lower) {
91
+ return { member, module: mod.name };
92
+ }
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ /** Generate Markdown docs for a single module. */
98
+ generateModuleMarkdown(moduleName) {
99
+ const mod = this.modules.get(moduleName);
100
+ if (!mod)
101
+ return `Module "${moduleName}" not found.`;
102
+ const lines = [];
103
+ lines.push(`# ${mod.name}`);
104
+ lines.push('');
105
+ lines.push(mod.description);
106
+ lines.push('');
107
+ // Group by kind
108
+ const groups = new Map();
109
+ for (const m of mod.members) {
110
+ let arr = groups.get(m.kind);
111
+ if (!arr) {
112
+ arr = [];
113
+ groups.set(m.kind, arr);
114
+ }
115
+ arr.push(m);
116
+ }
117
+ const kindOrder = ['class', 'interface', 'type', 'function', 'constant', 'enum'];
118
+ const kindTitles = {
119
+ class: 'Classes',
120
+ interface: 'Interfaces',
121
+ type: 'Types',
122
+ function: 'Functions',
123
+ constant: 'Constants',
124
+ enum: 'Enums',
125
+ };
126
+ for (const kind of kindOrder) {
127
+ const members = groups.get(kind);
128
+ if (!members)
129
+ continue;
130
+ lines.push(`## ${kindTitles[kind]}`);
131
+ lines.push('');
132
+ for (const m of members) {
133
+ lines.push(`### ${m.name}`);
134
+ if (m.deprecated)
135
+ lines.push(`> **Deprecated:** ${m.deprecated}`);
136
+ lines.push('');
137
+ if (m.signature)
138
+ lines.push('```typescript\n' + m.signature + '\n```');
139
+ lines.push('');
140
+ lines.push(m.description);
141
+ lines.push('');
142
+ if (m.params && m.params.length > 0) {
143
+ lines.push('**Parameters:**');
144
+ lines.push('');
145
+ lines.push('| Name | Type | Description |');
146
+ lines.push('|------|------|-------------|');
147
+ for (const p of m.params) {
148
+ const opt = p.optional ? ' (optional)' : '';
149
+ const def = p.defaultValue ? ` Default: \`${p.defaultValue}\`` : '';
150
+ lines.push(`| \`${p.name}\`${opt} | \`${p.type}\` | ${p.description}${def} |`);
151
+ }
152
+ lines.push('');
153
+ }
154
+ if (m.returns) {
155
+ lines.push(`**Returns:** ${m.returns}`);
156
+ lines.push('');
157
+ }
158
+ if (m.example) {
159
+ lines.push('**Example:**');
160
+ lines.push('```typescript');
161
+ lines.push(m.example);
162
+ lines.push('```');
163
+ lines.push('');
164
+ }
165
+ if (m.seeAlso && m.seeAlso.length > 0) {
166
+ lines.push(`**See also:** ${m.seeAlso.map(s => `\`${s}\``).join(', ')}`);
167
+ lines.push('');
168
+ }
169
+ if (m.since) {
170
+ lines.push(`*Since: ${m.since}*`);
171
+ lines.push('');
172
+ }
173
+ lines.push('---');
174
+ lines.push('');
175
+ }
176
+ }
177
+ return lines.join('\n');
178
+ }
179
+ /** Generate full Markdown documentation for all modules. */
180
+ generateFullMarkdown() {
181
+ const lines = [];
182
+ lines.push('# nice2dev Game Engine — API Reference');
183
+ lines.push('');
184
+ // Table of contents
185
+ lines.push('## Table of Contents');
186
+ lines.push('');
187
+ const categories = ['core', 'ecs', 'rendering', 'physics', 'audio', 'input', 'ui', 'scene', 'multiplayer', 'editor', 'legendary', 'other'];
188
+ for (const cat of categories) {
189
+ const mods = this.getModulesByCategory(cat);
190
+ if (mods.length === 0)
191
+ continue;
192
+ lines.push(`### ${cat.charAt(0).toUpperCase() + cat.slice(1)}`);
193
+ for (const mod of mods) {
194
+ lines.push(`- [${mod.name}](#${mod.name.toLowerCase().replace(/[^a-z0-9]+/g, '-')})`);
195
+ }
196
+ lines.push('');
197
+ }
198
+ // Module docs
199
+ for (const mod of this.modules.values()) {
200
+ lines.push(this.generateModuleMarkdown(mod.name));
201
+ lines.push('');
202
+ }
203
+ return lines.join('\n');
204
+ }
205
+ /** Generate a JSON index for interactive docs browser. */
206
+ generateSearchIndex() {
207
+ var _a;
208
+ const index = [];
209
+ for (const mod of this.modules.values()) {
210
+ for (const m of mod.members) {
211
+ index.push({
212
+ name: m.name,
213
+ module: mod.name,
214
+ kind: m.kind,
215
+ description: m.description,
216
+ tags: (_a = m.tags) !== null && _a !== void 0 ? _a : [],
217
+ });
218
+ }
219
+ }
220
+ return index;
221
+ }
222
+ /** Total number of documented members. */
223
+ get totalMembers() {
224
+ let count = 0;
225
+ for (const mod of this.modules.values())
226
+ count += mod.members.length;
227
+ return count;
228
+ }
229
+ /** Reset. */
230
+ clear() {
231
+ this.modules.clear();
232
+ }
233
+ }
234
+ /* ══════════════════════════════════════════════════════════════
235
+ Built-in ECS Module Docs (example)
236
+ ══════════════════════════════════════════════════════════════ */
237
+ const DOCS_ECS = {
238
+ name: 'ECS',
239
+ category: 'ecs',
240
+ description: 'Entity-Component-System architecture. The core of the game engine.',
241
+ members: [
242
+ {
243
+ name: 'World',
244
+ kind: 'class',
245
+ description: 'The ECS world manages entities, components, and systems.',
246
+ signature: 'class World',
247
+ tags: ['ecs', 'entity', 'system'],
248
+ example: "const world = new World();\nconst id = world.createEntity();\nworld.addComponent(id, 'Transform', { x: 0, y: 0 });\nworld.addSystem('move', (dt, w) => { /* ... */ });",
249
+ seeAlso: ['System', 'Entity'],
250
+ },
251
+ {
252
+ name: 'World.createEntity',
253
+ kind: 'function',
254
+ description: 'Create a new entity and return its numeric ID.',
255
+ signature: 'createEntity(): number',
256
+ returns: 'The new entity ID.',
257
+ tags: ['ecs', 'entity', 'create'],
258
+ },
259
+ {
260
+ name: 'World.addComponent',
261
+ kind: 'function',
262
+ description: 'Add a component to an entity.',
263
+ signature: "addComponent(entityId: number, type: string, data: object): void",
264
+ params: [
265
+ { name: 'entityId', type: 'number', description: 'The entity to add the component to.' },
266
+ { name: 'type', type: 'string', description: "Component type name (e.g. 'Transform', 'Sprite')." },
267
+ { name: 'data', type: 'object', description: 'Component data.' },
268
+ ],
269
+ tags: ['ecs', 'component'],
270
+ },
271
+ {
272
+ name: 'World.getComponent',
273
+ kind: 'function',
274
+ description: 'Get a single component from an entity.',
275
+ signature: "getComponent<T>(entityId: number, type: string): T | undefined",
276
+ params: [
277
+ { name: 'entityId', type: 'number', description: 'Entity ID.' },
278
+ { name: 'type', type: 'string', description: 'Component type name.' },
279
+ ],
280
+ returns: 'The component data or undefined.',
281
+ tags: ['ecs', 'component', 'query'],
282
+ },
283
+ {
284
+ name: 'World.query',
285
+ kind: 'function',
286
+ description: 'Query entities that have all specified component types.',
287
+ signature: "query(...types: string[]): number[]",
288
+ params: [
289
+ { name: 'types', type: 'string[]', description: 'Component types (spread args, not array!).' },
290
+ ],
291
+ returns: 'Array of entity IDs matching the query.',
292
+ example: "const ids = world.query('Transform', 'Sprite');\n// NOT world.query(['Transform', 'Sprite'])",
293
+ tags: ['ecs', 'query', 'entity'],
294
+ },
295
+ {
296
+ name: 'World.addSystem',
297
+ kind: 'function',
298
+ description: 'Register a system that runs every frame.',
299
+ signature: "addSystem(name: string, updateFn: (dt: number, world: World) => void, priority?: number): void",
300
+ params: [
301
+ { name: 'name', type: 'string', description: 'System name.' },
302
+ { name: 'updateFn', type: 'function', description: 'Update function called each frame.' },
303
+ { name: 'priority', type: 'number', description: 'Execution order (lower = earlier).', optional: true },
304
+ ],
305
+ tags: ['ecs', 'system'],
306
+ },
307
+ {
308
+ name: 'World.destroyEntity',
309
+ kind: 'function',
310
+ description: 'Destroy an entity and all its components.',
311
+ signature: 'destroyEntity(entityId: number): void',
312
+ tags: ['ecs', 'entity', 'destroy'],
313
+ },
314
+ {
315
+ name: 'World.allEntities',
316
+ kind: 'function',
317
+ description: 'Returns all entity IDs. Note: use allEntities(), NOT getAllEntities().',
318
+ signature: 'allEntities(): number[]',
319
+ returns: 'Array of all entity IDs.',
320
+ tags: ['ecs', 'entity', 'query'],
321
+ },
322
+ ],
323
+ };
324
+ const DOCS_RENDERING = {
325
+ name: 'Rendering',
326
+ category: 'rendering',
327
+ description: '2D Canvas rendering pipeline with sprite batching, cameras, and post-processing.',
328
+ members: [
329
+ {
330
+ name: 'Camera2D',
331
+ kind: 'class',
332
+ description: '2D camera with zoom, pan, and shake support.',
333
+ signature: 'class Camera2D',
334
+ tags: ['camera', 'rendering', '2d'],
335
+ example: "const cam = new Camera2D(canvas.width, canvas.height);\ncam.follow(playerEntity);\ncam.shake(5, 300); // intensity=5, duration=300ms",
336
+ seeAlso: ['Renderer2D', 'SpriteRenderer'],
337
+ },
338
+ {
339
+ name: 'Camera2D.worldToScreen',
340
+ kind: 'function',
341
+ description: 'Convert world coordinates to screen coordinates.',
342
+ signature: 'worldToScreen(worldPos: Vec2): Vec2',
343
+ params: [
344
+ { name: 'worldPos', type: 'Vec2', description: 'Takes a Vec2, not separate x,y!' },
345
+ ],
346
+ returns: 'Screen-space Vec2.',
347
+ tags: ['camera', 'coordinate'],
348
+ },
349
+ ],
350
+ };
351
+
352
+ export { DOCS_ECS, DOCS_RENDERING, DocRegistry };
353
+ //# sourceMappingURL=DocGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocGenerator.js","sources":["../../../src/docs/DocGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ import { EventBus } from '../core/EventBus.js';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ ECS — Entity-Component-System architecture
5
+ ──────────────────────────────────────────────────────────────── */
6
+ /* ────────────────────────────────────────────────────────────────
7
+ COMPONENT DEFAULTS
8
+ ──────────────────────────────────────────────────────────────── */
9
+ const WHITE = { r: 1, g: 1, b: 1, a: 1 };
10
+ const BLACK = { r: 0, g: 0, b: 0, a: 1 };
11
+ const ZERO = { x: 0, y: 0 };
12
+ const ONE = { x: 1, y: 1 };
13
+ function createDefaultComponent(type, entityId) {
14
+ const base = { entityId, enabled: true };
15
+ switch (type) {
16
+ case 'Transform':
17
+ return { ...base, type: 'Transform', position: { ...ZERO }, rotation: 0, scale: { ...ONE }, prevPosition: { ...ZERO }, prevRotation: 0 };
18
+ case 'Sprite':
19
+ return { ...base, type: 'Sprite', assetId: null, srcRect: null, width: 32, height: 32, anchor: { x: 0.5, y: 0.5 }, tint: { ...WHITE }, opacity: 1, flipX: false, flipY: false, layer: 0, visible: true };
20
+ case 'Shape':
21
+ // as unknown as: TS can't narrow generic K in switch; Shape.shape conflicts with Collider2D.shape
22
+ return { ...base, type: 'Shape', shape: 'rect', width: 32, height: 32, radius: 16, points: [], lineStart: { ...ZERO }, lineEnd: { x: 32, y: 0 }, fillColor: { ...WHITE }, strokeColor: { ...BLACK }, strokeWidth: 0, layer: 0, visible: true };
23
+ case 'Collider2D':
24
+ return { ...base, type: 'Collider2D', shape: 'aabb', width: 32, height: 32, radius: 16, points: [], offset: { ...ZERO }, isTrigger: false, layer: 1, mask: 0xFFFF };
25
+ case 'RigidBody2D':
26
+ return { ...base, type: 'RigidBody2D', bodyType: 'dynamic', velocity: { ...ZERO }, acceleration: { ...ZERO }, angularVelocity: 0, mass: 1, drag: 0, angularDrag: 0, restitution: 0.3, friction: 0.5, gravityScale: 1, fixedRotation: false };
27
+ case 'Text':
28
+ return { ...base, type: 'Text', text: '', fontSize: 16, fontFamily: 'sans-serif', color: { ...WHITE }, align: 'center', baseline: 'middle', layer: 10, visible: true };
29
+ case 'Animator':
30
+ return { ...base, type: 'Animator', currentAnimation: '', animations: {}, frame: 0, elapsed: 0, playing: false, loop: true };
31
+ case 'Script':
32
+ return { ...base, type: 'Script', scriptId: '', variables: {} };
33
+ case 'AudioSource':
34
+ return { ...base, type: 'AudioSource', soundId: '', volume: 1, loop: false, spatial: false, maxDistance: 500, autoPlay: false, playing: false };
35
+ case 'ParticleEmitter':
36
+ return { ...base, type: 'ParticleEmitter', emitting: false, rate: 10, lifetime: [0.5, 1.5], speed: [50, 150], angle: [0, 360], size: [2, 6], sizeEnd: [0, 0], color: { ...WHITE }, colorEnd: { r: 1, g: 1, b: 1, a: 0 }, gravity: { x: 0, y: 100 }, maxParticles: 100 };
37
+ case 'CameraTarget':
38
+ return { ...base, type: 'CameraTarget', priority: 0, smoothing: 0.1, deadzone: { x: 50, y: 30 }, lookahead: { ...ZERO } };
39
+ default:
40
+ throw new Error(`Unknown component type: ${type}`);
41
+ }
42
+ }
43
+ /* ────────────────────────────────────────────────────────────────
44
+ SYSTEM — base class for game systems
45
+ ──────────────────────────────────────────────────────────────── */
46
+ class System {
47
+ constructor(priority = 0) {
48
+ this.enabled = true;
49
+ this.priority = priority;
50
+ }
51
+ /** Called once when added to world. */
52
+ init(_world) { }
53
+ /** Called every frame. */
54
+ update(_world, _dt) { }
55
+ /** Called at fixed timestep (physics). */
56
+ fixedUpdate(_world, _fixedDt) { }
57
+ /** Called when removed from world. */
58
+ destroy(_world) { }
59
+ /** Alias for destroy() — unified cleanup pattern. */
60
+ dispose(world) { this.destroy(world); }
61
+ }
62
+ /* ────────────────────────────────────────────────────────────────
63
+ WORLD — Container for entities, components, and systems
64
+ ──────────────────────────────────────────────────────────────── */
65
+ class World {
66
+ constructor() {
67
+ this.events = new EventBus();
68
+ this._nextId = 1;
69
+ this.entities = new Map();
70
+ this.components = new Map();
71
+ this.systems = [];
72
+ this.systemsSorted = false;
73
+ }
74
+ /* ── Entity management ──────────────────────────────────────── */
75
+ createEntity(name = 'Entity') {
76
+ const id = this._nextId++;
77
+ const entity = {
78
+ id,
79
+ name,
80
+ tags: new Set(),
81
+ enabled: true,
82
+ parent: null,
83
+ children: [],
84
+ };
85
+ this.entities.set(id, entity);
86
+ this.events.emit('entity:created', id);
87
+ return entity;
88
+ }
89
+ destroyEntity(id) {
90
+ const entity = this.entities.get(id);
91
+ if (!entity) {
92
+ if (typeof console !== 'undefined')
93
+ console.warn(`[World] destroyEntity: entity ${id} not found`);
94
+ return;
95
+ }
96
+ // Destroy children recursively
97
+ for (const childId of [...entity.children]) {
98
+ this.destroyEntity(childId);
99
+ }
100
+ // Remove from parent
101
+ if (entity.parent != null) {
102
+ const parent = this.entities.get(entity.parent);
103
+ if (parent) {
104
+ parent.children = parent.children.filter(c => c !== id);
105
+ }
106
+ }
107
+ // Remove all components
108
+ for (const [, compMap] of this.components) {
109
+ compMap.delete(id);
110
+ }
111
+ this.entities.delete(id);
112
+ this.events.emit('entity:destroyed', id);
113
+ }
114
+ getEntity(id) {
115
+ return this.entities.get(id);
116
+ }
117
+ /** Get all entities (alive). */
118
+ allEntities() {
119
+ return Array.from(this.entities.values());
120
+ }
121
+ /** Find first entity with given tag. */
122
+ findByTag(tag) {
123
+ for (const e of this.entities.values()) {
124
+ if (e.tags.has(tag))
125
+ return e;
126
+ }
127
+ return undefined;
128
+ }
129
+ /** Find all entities with given tag. */
130
+ findAllByTag(tag) {
131
+ const result = [];
132
+ for (const e of this.entities.values()) {
133
+ if (e.tags.has(tag))
134
+ result.push(e);
135
+ }
136
+ return result;
137
+ }
138
+ /** Find first entity with given name. */
139
+ findByName(name) {
140
+ for (const e of this.entities.values()) {
141
+ if (e.name === name)
142
+ return e;
143
+ }
144
+ return undefined;
145
+ }
146
+ get entityCount() {
147
+ return this.entities.size;
148
+ }
149
+ /* ── Parenting ──────────────────────────────────────────────── */
150
+ setParent(childId, parentId) {
151
+ const child = this.entities.get(childId);
152
+ if (!child) {
153
+ if (typeof console !== 'undefined')
154
+ console.warn(`[World] setParent: entity ${childId} not found`);
155
+ return;
156
+ }
157
+ // Remove from old parent
158
+ if (child.parent != null) {
159
+ const oldParent = this.entities.get(child.parent);
160
+ if (oldParent) {
161
+ oldParent.children = oldParent.children.filter(c => c !== childId);
162
+ }
163
+ }
164
+ child.parent = parentId;
165
+ if (parentId != null) {
166
+ const parent = this.entities.get(parentId);
167
+ if (parent && !parent.children.includes(childId)) {
168
+ parent.children.push(childId);
169
+ }
170
+ }
171
+ }
172
+ /* ── Component management ───────────────────────────────────── */
173
+ addComponent(entityId, type, overrides) {
174
+ const comp = createDefaultComponent(type, entityId);
175
+ if (overrides)
176
+ Object.assign(comp, overrides, { type, entityId });
177
+ let map = this.components.get(type);
178
+ if (!map) {
179
+ map = new Map();
180
+ this.components.set(type, map);
181
+ }
182
+ map.set(entityId, comp);
183
+ this.events.emit('component:added', { entityId, type });
184
+ return comp;
185
+ }
186
+ removeComponent(entityId, type) {
187
+ const map = this.components.get(type);
188
+ if (map) {
189
+ map.delete(entityId);
190
+ this.events.emit('component:removed', { entityId, type });
191
+ }
192
+ }
193
+ getComponent(entityId, type) {
194
+ const map = this.components.get(type);
195
+ return map === null || map === void 0 ? void 0 : map.get(entityId);
196
+ }
197
+ hasComponent(entityId, type) {
198
+ var _a;
199
+ const map = this.components.get(type);
200
+ return (_a = map === null || map === void 0 ? void 0 : map.has(entityId)) !== null && _a !== void 0 ? _a : false;
201
+ }
202
+ /** Query all entities that have ALL specified components. */
203
+ query(...types) {
204
+ if (types.length === 0)
205
+ return [];
206
+ const maps = types.map(t => this.components.get(t));
207
+ if (maps.some(m => !m))
208
+ return [];
209
+ // Start with smallest set for efficiency
210
+ const sorted = maps.slice().sort((a, b) => { var _a, _b; return ((_a = a === null || a === void 0 ? void 0 : a.size) !== null && _a !== void 0 ? _a : 0) - ((_b = b === null || b === void 0 ? void 0 : b.size) !== null && _b !== void 0 ? _b : 0); });
211
+ const smallest = sorted[0];
212
+ const rest = sorted.slice(1);
213
+ const result = [];
214
+ for (const id of smallest.keys()) {
215
+ if (rest.every(m => m.has(id))) {
216
+ const entity = this.entities.get(id);
217
+ if (entity === null || entity === void 0 ? void 0 : entity.enabled)
218
+ result.push(id);
219
+ }
220
+ }
221
+ return result;
222
+ }
223
+ /** Get all components of a type (as a Map). */
224
+ getComponentsOfType(type) {
225
+ var _a;
226
+ return ((_a = this.components.get(type)) !== null && _a !== void 0 ? _a : new Map());
227
+ }
228
+ /* ── System management ──────────────────────────────────────── */
229
+ addSystem(system) {
230
+ this.systems.push(system);
231
+ this.systemsSorted = false;
232
+ system.init(this);
233
+ this.events.emit('system:added', system);
234
+ }
235
+ removeSystem(system) {
236
+ const idx = this.systems.indexOf(system);
237
+ if (idx >= 0) {
238
+ system.destroy(this);
239
+ this.systems.splice(idx, 1);
240
+ }
241
+ }
242
+ ensureSorted() {
243
+ if (!this.systemsSorted) {
244
+ this.systems.sort((a, b) => a.priority - b.priority);
245
+ this.systemsSorted = true;
246
+ }
247
+ }
248
+ /* ── Update ─────────────────────────────────────────────────── */
249
+ update(dt) {
250
+ this.ensureSorted();
251
+ for (const sys of this.systems) {
252
+ if (sys.enabled)
253
+ sys.update(this, dt);
254
+ }
255
+ }
256
+ fixedUpdate(fixedDt) {
257
+ this.ensureSorted();
258
+ for (const sys of this.systems) {
259
+ if (sys.enabled)
260
+ sys.fixedUpdate(this, fixedDt);
261
+ }
262
+ }
263
+ /* ── Serialization ──────────────────────────────────────────── */
264
+ /** Clear all entities, components, and systems. */
265
+ clear() {
266
+ for (const sys of this.systems)
267
+ sys.destroy(this);
268
+ this.systems.length = 0;
269
+ this.entities.clear();
270
+ this.components.clear();
271
+ this._nextId = 1;
272
+ }
273
+ }
274
+
275
+ export { System, World, createDefaultComponent };
276
+ //# sourceMappingURL=World.js.map