@nice2dev/game-engine 0.1.0 → 1.0.3

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 (294) hide show
  1. package/CHANGELOG.md +193 -1
  2. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  3. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  4. package/dist/cjs/ai/StateMachine.js +783 -0
  5. package/dist/cjs/ai/StateMachine.js.map +1 -0
  6. package/dist/cjs/audio/AudioBridge.js +454 -0
  7. package/dist/cjs/audio/AudioBridge.js.map +1 -0
  8. package/dist/cjs/devtools/GameplayAnalytics.js +651 -0
  9. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -0
  10. package/dist/cjs/dialogue/DialogueSystem.js +1023 -0
  11. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -0
  12. package/dist/cjs/editor/NiceGameEditor.js +569 -71
  13. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  14. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  15. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  16. package/dist/cjs/editor/TimelineEditor.js +819 -0
  17. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  18. package/dist/cjs/engine/SaveSystemV2.js +494 -0
  19. package/dist/cjs/engine/SaveSystemV2.js.map +1 -0
  20. package/dist/cjs/export/GodotExporter.js +1102 -0
  21. package/dist/cjs/export/GodotExporter.js.map +1 -0
  22. package/dist/cjs/export/PlatformExporter.js +236 -0
  23. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  24. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  25. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  26. package/dist/cjs/export/UnityExporter.js +1193 -0
  27. package/dist/cjs/export/UnityExporter.js.map +1 -0
  28. package/dist/cjs/export/WebExporter.js +1036 -0
  29. package/dist/cjs/export/WebExporter.js.map +1 -0
  30. package/dist/cjs/export/index.js +58 -0
  31. package/dist/cjs/export/index.js.map +1 -0
  32. package/dist/cjs/i18n/useTranslation.js +11 -11
  33. package/dist/cjs/import/AsepriteImporter.js +761 -0
  34. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  35. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  36. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  37. package/dist/cjs/import/GameMakerImporter.js +559 -0
  38. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  40. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  41. package/dist/cjs/import/LDtkImporter.js +481 -0
  42. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  43. package/dist/cjs/import/Live2DImporter.js +553 -0
  44. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  45. package/dist/cjs/import/NdgFormat.js +499 -0
  46. package/dist/cjs/import/NdgFormat.js.map +1 -0
  47. package/dist/cjs/import/OgmoImporter.js +529 -0
  48. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  49. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  50. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  51. package/dist/cjs/import/SceneImporter.js +449 -0
  52. package/dist/cjs/import/SceneImporter.js.map +1 -0
  53. package/dist/cjs/import/SpineImporter.js +583 -0
  54. package/dist/cjs/import/SpineImporter.js.map +1 -0
  55. package/dist/cjs/import/SpriterImporter.js +652 -0
  56. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  57. package/dist/cjs/import/TiledMapImporter.js +859 -0
  58. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  59. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  60. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  61. package/dist/cjs/import/index.js +305 -0
  62. package/dist/cjs/import/index.js.map +1 -0
  63. package/dist/cjs/index.js +291 -1
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/input/GamepadNavigation.js +21 -21
  66. package/dist/cjs/input/useGamepads.js +6 -6
  67. package/dist/cjs/integration/IconSprite.js +281 -0
  68. package/dist/cjs/integration/IconSprite.js.map +1 -0
  69. package/dist/cjs/inventory/InventorySystem.js +930 -0
  70. package/dist/cjs/inventory/InventorySystem.js.map +1 -0
  71. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  72. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  73. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  74. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  75. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  97. package/dist/cjs/quest/QuestSystem.js +924 -0
  98. package/dist/cjs/quest/QuestSystem.js.map +1 -0
  99. package/dist/cjs/rendering/WebGPURenderPipeline.js +658 -0
  100. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -0
  101. package/dist/cjs/scripting/GraphToAST.js +567 -0
  102. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  103. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  104. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  105. package/dist/cjs/scripting/ScriptAST.js +67 -0
  106. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  107. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  108. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  109. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  110. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  111. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  112. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  113. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  114. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  115. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  116. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  117. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  118. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  119. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  120. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  121. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  122. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  123. package/dist/cjs/xr/ARVR.js.map +1 -1
  124. package/dist/esm/ai/BehaviorTree.js +1186 -0
  125. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  126. package/dist/esm/ai/StateMachine.js +767 -0
  127. package/dist/esm/ai/StateMachine.js.map +1 -0
  128. package/dist/esm/audio/AudioBridge.js +446 -0
  129. package/dist/esm/audio/AudioBridge.js.map +1 -0
  130. package/dist/esm/devtools/GameplayAnalytics.js +639 -0
  131. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -0
  132. package/dist/esm/dialogue/DialogueSystem.js +1008 -0
  133. package/dist/esm/dialogue/DialogueSystem.js.map +1 -0
  134. package/dist/esm/editor/NiceGameEditor.js +556 -58
  135. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  136. package/dist/esm/editor/ShaderGraph.js +1606 -0
  137. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  138. package/dist/esm/editor/TimelineEditor.js +800 -0
  139. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  140. package/dist/esm/engine/SaveSystemV2.js +487 -0
  141. package/dist/esm/engine/SaveSystemV2.js.map +1 -0
  142. package/dist/esm/export/GodotExporter.js +1100 -0
  143. package/dist/esm/export/GodotExporter.js.map +1 -0
  144. package/dist/esm/export/PlatformExporter.js +230 -0
  145. package/dist/esm/export/PlatformExporter.js.map +1 -0
  146. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  147. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  148. package/dist/esm/export/UnityExporter.js +1191 -0
  149. package/dist/esm/export/UnityExporter.js.map +1 -0
  150. package/dist/esm/export/WebExporter.js +1033 -0
  151. package/dist/esm/export/WebExporter.js.map +1 -0
  152. package/dist/esm/export/index.js +44 -0
  153. package/dist/esm/export/index.js.map +1 -0
  154. package/dist/esm/import/AsepriteImporter.js +759 -0
  155. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  156. package/dist/esm/import/DragonBonesImporter.js +496 -0
  157. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  158. package/dist/esm/import/GameMakerImporter.js +556 -0
  159. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  160. package/dist/esm/import/GodotSceneImporter.js +822 -0
  161. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  162. package/dist/esm/import/LDtkImporter.js +479 -0
  163. package/dist/esm/import/LDtkImporter.js.map +1 -0
  164. package/dist/esm/import/Live2DImporter.js +550 -0
  165. package/dist/esm/import/Live2DImporter.js.map +1 -0
  166. package/dist/esm/import/NdgFormat.js +490 -0
  167. package/dist/esm/import/NdgFormat.js.map +1 -0
  168. package/dist/esm/import/OgmoImporter.js +526 -0
  169. package/dist/esm/import/OgmoImporter.js.map +1 -0
  170. package/dist/esm/import/RPGMakerImporter.js +517 -0
  171. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  172. package/dist/esm/import/SceneImporter.js +441 -0
  173. package/dist/esm/import/SceneImporter.js.map +1 -0
  174. package/dist/esm/import/SpineImporter.js +580 -0
  175. package/dist/esm/import/SpineImporter.js.map +1 -0
  176. package/dist/esm/import/SpriterImporter.js +649 -0
  177. package/dist/esm/import/SpriterImporter.js.map +1 -0
  178. package/dist/esm/import/TiledMapImporter.js +857 -0
  179. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  180. package/dist/esm/import/UnitySceneImporter.js +730 -0
  181. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  182. package/dist/esm/import/index.js +279 -0
  183. package/dist/esm/import/index.js.map +1 -0
  184. package/dist/esm/index.js +47 -3
  185. package/dist/esm/index.js.map +1 -1
  186. package/dist/esm/integration/IconSprite.js +266 -0
  187. package/dist/esm/integration/IconSprite.js.map +1 -0
  188. package/dist/esm/inventory/InventorySystem.js +924 -0
  189. package/dist/esm/inventory/InventorySystem.js.map +1 -0
  190. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  191. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  192. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  193. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  194. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  195. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  196. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  197. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  198. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  199. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  200. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  201. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  202. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  203. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  204. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  205. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  206. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  207. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  208. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  209. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  210. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  211. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  212. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  213. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  214. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  215. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  216. package/dist/esm/quest/QuestSystem.js +916 -0
  217. package/dist/esm/quest/QuestSystem.js.map +1 -0
  218. package/dist/esm/rendering/WebGPURenderPipeline.js +642 -0
  219. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -0
  220. package/dist/esm/scripting/GraphToAST.js +564 -0
  221. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  222. package/dist/esm/scripting/LanguageExporter.js +311 -0
  223. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  224. package/dist/esm/scripting/ScriptAST.js +52 -0
  225. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  226. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  227. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  228. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  229. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  230. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  231. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  232. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  233. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  234. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  235. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  236. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  237. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  238. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  239. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  240. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  241. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  242. package/dist/esm/xr/ARVR.js.map +1 -1
  243. package/dist/types/__tests__/setup.d.ts +1 -1
  244. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  245. package/dist/types/ai/StateMachine.d.ts +296 -0
  246. package/dist/types/audio/AudioBridge.d.ts +199 -0
  247. package/dist/types/devtools/GameplayAnalytics.d.ts +279 -0
  248. package/dist/types/dialogue/DialogueSystem.d.ts +326 -0
  249. package/dist/types/dialogue/index.d.ts +2 -0
  250. package/dist/types/editor/NiceGameEditor.d.ts +12 -1
  251. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  252. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  253. package/dist/types/engine/SaveSystemV2.d.ts +155 -0
  254. package/dist/types/export/GodotExporter.d.ts +56 -0
  255. package/dist/types/export/PlatformExporter.d.ts +201 -0
  256. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  257. package/dist/types/export/UnityExporter.d.ts +69 -0
  258. package/dist/types/export/WebExporter.d.ts +58 -0
  259. package/dist/types/export/index.d.ts +19 -0
  260. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  261. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  262. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  263. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  264. package/dist/types/import/LDtkImporter.d.ts +177 -0
  265. package/dist/types/import/Live2DImporter.d.ts +237 -0
  266. package/dist/types/import/NdgFormat.d.ts +387 -0
  267. package/dist/types/import/OgmoImporter.d.ts +237 -0
  268. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  269. package/dist/types/import/SceneImporter.d.ts +276 -0
  270. package/dist/types/import/SpineImporter.d.ts +372 -0
  271. package/dist/types/import/SpriterImporter.d.ts +230 -0
  272. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  273. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  274. package/dist/types/import/index.d.ts +59 -0
  275. package/dist/types/index.d.ts +46 -18
  276. package/dist/types/integration/IconSprite.d.ts +196 -0
  277. package/dist/types/inventory/InventorySystem.d.ts +336 -0
  278. package/dist/types/performance/WebGPUCompute.d.ts +0 -10
  279. package/dist/types/quest/QuestSystem.d.ts +287 -0
  280. package/dist/types/rendering/WebGPURenderPipeline.d.ts +255 -0
  281. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  282. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  283. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  284. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  285. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  286. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  287. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  288. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  289. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  290. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  291. package/dist/types/scripting/exporters/index.d.ts +8 -0
  292. package/dist/types/scripting/index.d.ts +11 -0
  293. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  294. package/package.json +7 -1
@@ -0,0 +1,281 @@
1
+ 'use strict';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ IconSprite — Bridge between @nice2dev/icons-gaming SVG icons
5
+ and the game-engine Canvas 2D renderer.
6
+
7
+ Converts React SVG icon components to rasterized textures that
8
+ can be used as Sprite assets, including multi-frame animation
9
+ sheets generated from different animation states.
10
+ ──────────────────────────────────────────────────────────────── */
11
+ /* ── SVG to Image conversion ──────────────────────────────────── */
12
+ /**
13
+ * Render an icon component to an SVG string using React's static markup API.
14
+ * This function must be called with the result of ReactDOMServer.renderToStaticMarkup().
15
+ */
16
+ function iconToSvgString(svgMarkup, size) {
17
+ // Ensure SVG has xmlns for standalone rendering
18
+ if (!svgMarkup.includes('xmlns=')) {
19
+ svgMarkup = svgMarkup.replace('<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
20
+ }
21
+ // Ensure dimensions
22
+ if (!svgMarkup.includes('width=')) {
23
+ svgMarkup = svgMarkup.replace('<svg', `<svg width="${size}" height="${size}"`);
24
+ }
25
+ return svgMarkup;
26
+ }
27
+ /**
28
+ * Convert an SVG string to a data URL suitable for Image loading.
29
+ */
30
+ function svgToDataUrl(svgString) {
31
+ const encoded = encodeURIComponent(svgString)
32
+ .replace(/'/g, '%27')
33
+ .replace(/"/g, '%22');
34
+ return `data:image/svg+xml,${encoded}`;
35
+ }
36
+ /**
37
+ * Load an SVG data URL into an HTMLImageElement (async).
38
+ */
39
+ function loadSvgImage(dataUrl) {
40
+ return new Promise((resolve, reject) => {
41
+ const img = new Image();
42
+ img.onload = () => resolve(img);
43
+ img.onerror = () => reject(new Error('Failed to load SVG image'));
44
+ img.src = dataUrl;
45
+ });
46
+ }
47
+ /**
48
+ * Rasterize an SVG string to an OffscreenCanvas / HTMLCanvasElement.
49
+ */
50
+ async function rasterizeSvg(svgString, size) {
51
+ const dataUrl = svgToDataUrl(svgString);
52
+ const img = await loadSvgImage(dataUrl);
53
+ const canvas = document.createElement('canvas');
54
+ canvas.width = size;
55
+ canvas.height = size;
56
+ const ctx = canvas.getContext('2d');
57
+ if (!ctx)
58
+ throw new Error('Failed to get 2D context');
59
+ ctx.drawImage(img, 0, 0, size, size);
60
+ return canvas;
61
+ }
62
+ /* ── Texture registration ─────────────────────────────────────── */
63
+ /**
64
+ * Generate a deterministic texture ID for an icon + options combination.
65
+ */
66
+ function getIconTextureId(displayName, options) {
67
+ const parts = [`icon:${displayName}`];
68
+ if (options === null || options === void 0 ? void 0 : options.size)
69
+ parts.push(`s${options.size}`);
70
+ if (options === null || options === void 0 ? void 0 : options.color)
71
+ parts.push(`c${options.color}`);
72
+ if ((options === null || options === void 0 ? void 0 : options.animation) && options.animation !== 'none')
73
+ parts.push(`a${options.animation}`);
74
+ return parts.join(':');
75
+ }
76
+ /**
77
+ * Register an SVG icon as a texture in the game-engine renderer.
78
+ *
79
+ * @param renderer The Renderer2D instance
80
+ * @param textureId Unique texture identifier
81
+ * @param svgMarkup Static SVG markup from ReactDOMServer.renderToStaticMarkup(<Icon ... />)
82
+ * @param size Rasterization size in px
83
+ * @returns Promise that resolves when the texture is ready
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * import { renderToStaticMarkup } from 'react-dom/server';
88
+ * import { GiWarrior } from '@nice2dev/icons-gaming';
89
+ * import { registerIconTexture, getIconTextureId } from '@nice2dev/game-engine';
90
+ *
91
+ * const id = getIconTextureId('GiWarrior', { size: 64 });
92
+ * const svg = renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />);
93
+ * await registerIconTexture(renderer, id, svg, 64);
94
+ * ```
95
+ */
96
+ async function registerIconTexture(renderer, textureId, svgMarkup, size) {
97
+ const existing = renderer.getTexture(textureId);
98
+ if (existing)
99
+ return; // already loaded
100
+ const prepared = iconToSvgString(svgMarkup, size);
101
+ const dataUrl = svgToDataUrl(prepared);
102
+ await renderer.loadTexture(textureId, dataUrl);
103
+ }
104
+ /**
105
+ * Register an SVG icon as a rasterized canvas texture (sync-safe after await).
106
+ * Useful when you need pixel-perfect rendering without scaling artifacts.
107
+ */
108
+ async function registerIconCanvasTexture(renderer, textureId, svgMarkup, size) {
109
+ const existing = renderer.getTexture(textureId);
110
+ if (existing)
111
+ return;
112
+ const prepared = iconToSvgString(svgMarkup, size);
113
+ const canvas = await rasterizeSvg(prepared, size);
114
+ renderer.setTexture(textureId, canvas);
115
+ }
116
+ /* ── Entity helpers ───────────────────────────────────────────── */
117
+ /**
118
+ * Create a game entity with Sprite component sourced from an icon texture.
119
+ *
120
+ * The texture must already be registered via `registerIconTexture()`.
121
+ *
122
+ * @example
123
+ * ```ts
124
+ * const entityId = createIconEntity(world, 'GiWarrior', textureId, {
125
+ * x: 200, y: 150, displayWidth: 64, displayHeight: 64, layer: 1,
126
+ * });
127
+ * ```
128
+ */
129
+ function createIconEntity(world, name, textureId, options) {
130
+ var _a, _b, _c, _d, _e, _f;
131
+ const entity = world.createEntity((_a = options === null || options === void 0 ? void 0 : options.name) !== null && _a !== void 0 ? _a : name);
132
+ entity.tags.add('icon-sprite');
133
+ world.addComponent(entity.id, 'Transform', {
134
+ position: { x: (_b = options === null || options === void 0 ? void 0 : options.x) !== null && _b !== void 0 ? _b : 0, y: (_c = options === null || options === void 0 ? void 0 : options.y) !== null && _c !== void 0 ? _c : 0 },
135
+ scale: { x: 1, y: 1 },
136
+ });
137
+ const spriteOverrides = {
138
+ assetId: textureId,
139
+ width: (_d = options === null || options === void 0 ? void 0 : options.displayWidth) !== null && _d !== void 0 ? _d : 32,
140
+ height: (_e = options === null || options === void 0 ? void 0 : options.displayHeight) !== null && _e !== void 0 ? _e : 32,
141
+ layer: (_f = options === null || options === void 0 ? void 0 : options.layer) !== null && _f !== void 0 ? _f : 0,
142
+ visible: true,
143
+ };
144
+ if (options === null || options === void 0 ? void 0 : options.tint)
145
+ spriteOverrides.tint = options.tint;
146
+ if ((options === null || options === void 0 ? void 0 : options.opacity) !== undefined)
147
+ spriteOverrides.opacity = options.opacity;
148
+ world.addComponent(entity.id, 'Sprite', spriteOverrides);
149
+ return entity.id;
150
+ }
151
+ /* ── Animation sheet helpers ──────────────────────────────────── */
152
+ /**
153
+ * Create a SpriteAnimation clip from multiple icon animation frames.
154
+ *
155
+ * Each frame is a separate registered texture. The AnimatorComponent
156
+ * switches `assetId` each frame to show different icon states.
157
+ *
158
+ * @param frames Array of { assetId, duration } for each frame
159
+ * @param loop Whether animation loops
160
+ */
161
+ function createIconAnimationClip(frames, fps = 8, loop = true) {
162
+ return {
163
+ frames: frames.map(f => ({
164
+ assetId: f.assetId,
165
+ srcRect: null,
166
+ duration: f.duration,
167
+ })),
168
+ fps,
169
+ loop,
170
+ };
171
+ }
172
+ /**
173
+ * Predefined character animation state sequences.
174
+ * Maps game animation concepts to sets of icon animation states
175
+ * that can be baked into textures.
176
+ */
177
+ const CHARACTER_ANIMATION_STATES = [
178
+ 'idle', 'move', 'jump', 'attack-melee', 'attack-ranged', 'attack-magic', 'damage', 'death',
179
+ ];
180
+ const OBJECT_ANIMATION_STATES = [
181
+ 'idle', 'spin', 'float', 'shake', 'glow', 'bounce', 'flicker',
182
+ ];
183
+ /**
184
+ * Batch-register all animation states of an icon as separate textures.
185
+ *
186
+ * @returns Map of animation state → texture ID
187
+ *
188
+ * @example
189
+ * ```ts
190
+ * const textures = await registerIconAnimationSet(
191
+ * renderer,
192
+ * 'GiWarrior',
193
+ * (anim) => renderToStaticMarkup(<GiWarrior size={64} animation={anim} color="#e74c3c" />),
194
+ * CHARACTER_ANIMATION_STATES,
195
+ * 64,
196
+ * );
197
+ * // textures = { idle: 'icon:GiWarrior:s64:aidle', move: 'icon:GiWarrior:s64:amove', ... }
198
+ * ```
199
+ */
200
+ async function registerIconAnimationSet(renderer, displayName, renderFn, states, size) {
201
+ const result = {};
202
+ for (const state of states) {
203
+ const textureId = getIconTextureId(displayName, { size, animation: state });
204
+ const svgMarkup = renderFn(state);
205
+ await registerIconTexture(renderer, textureId, svgMarkup, size);
206
+ result[state] = textureId;
207
+ }
208
+ return result;
209
+ }
210
+ /**
211
+ * Create an Animator component configuration from a registered animation set.
212
+ *
213
+ * @param textureMap Result from `registerIconAnimationSet()`
214
+ * @param defaultState Initial animation state (default: 'idle')
215
+ * @param fps Frames per second for each clip
216
+ */
217
+ function createIconAnimator(textureMap, defaultState = 'idle', fps = 1) {
218
+ const animations = {};
219
+ for (const [state, assetId] of Object.entries(textureMap)) {
220
+ animations[state] = {
221
+ frames: [{ assetId, srcRect: null }],
222
+ fps,
223
+ loop: true,
224
+ };
225
+ }
226
+ return {
227
+ currentAnimation: defaultState,
228
+ animations,
229
+ frame: 0,
230
+ elapsed: 0,
231
+ playing: true,
232
+ loop: true,
233
+ };
234
+ }
235
+ /**
236
+ * Register an entire icon map (e.g. `characterIcons`, `weaponIcons`)
237
+ * and return a catalog array for the asset manager / picker.
238
+ *
239
+ * @param renderer Renderer2D
240
+ * @param iconMap Map of name→icon render functions (SVG markup generators)
241
+ * @param category Category label for the asset catalog
242
+ * @param size Texture size
243
+ *
244
+ * @example
245
+ * ```ts
246
+ * const catalog = await registerIconCatalog(
247
+ * renderer,
248
+ * {
249
+ * GiWarrior: () => renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />),
250
+ * GiMage: () => renderToStaticMarkup(<GiMage size={64} color="#3498db" />),
251
+ * },
252
+ * 'characters',
253
+ * 64,
254
+ * );
255
+ * ```
256
+ */
257
+ async function registerIconCatalog(renderer, iconMap, category, size) {
258
+ const catalog = [];
259
+ for (const [name, renderFn] of Object.entries(iconMap)) {
260
+ const textureId = getIconTextureId(name, { size });
261
+ await registerIconTexture(renderer, textureId, renderFn(), size);
262
+ catalog.push({ name, textureId, category });
263
+ }
264
+ return catalog;
265
+ }
266
+
267
+ exports.CHARACTER_ANIMATION_STATES = CHARACTER_ANIMATION_STATES;
268
+ exports.OBJECT_ANIMATION_STATES = OBJECT_ANIMATION_STATES;
269
+ exports.createIconAnimationClip = createIconAnimationClip;
270
+ exports.createIconAnimator = createIconAnimator;
271
+ exports.createIconEntity = createIconEntity;
272
+ exports.getIconTextureId = getIconTextureId;
273
+ exports.iconToSvgString = iconToSvgString;
274
+ exports.loadSvgImage = loadSvgImage;
275
+ exports.rasterizeSvg = rasterizeSvg;
276
+ exports.registerIconAnimationSet = registerIconAnimationSet;
277
+ exports.registerIconCanvasTexture = registerIconCanvasTexture;
278
+ exports.registerIconCatalog = registerIconCatalog;
279
+ exports.registerIconTexture = registerIconTexture;
280
+ exports.svgToDataUrl = svgToDataUrl;
281
+ //# sourceMappingURL=IconSprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconSprite.js","sources":["../../../src/integration/IconSprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}