@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,266 @@
1
+ /* ────────────────────────────────────────────────────────────────
2
+ IconSprite — Bridge between @nice2dev/icons-gaming SVG icons
3
+ and the game-engine Canvas 2D renderer.
4
+
5
+ Converts React SVG icon components to rasterized textures that
6
+ can be used as Sprite assets, including multi-frame animation
7
+ sheets generated from different animation states.
8
+ ──────────────────────────────────────────────────────────────── */
9
+ /* ── SVG to Image conversion ──────────────────────────────────── */
10
+ /**
11
+ * Render an icon component to an SVG string using React's static markup API.
12
+ * This function must be called with the result of ReactDOMServer.renderToStaticMarkup().
13
+ */
14
+ function iconToSvgString(svgMarkup, size) {
15
+ // Ensure SVG has xmlns for standalone rendering
16
+ if (!svgMarkup.includes('xmlns=')) {
17
+ svgMarkup = svgMarkup.replace('<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
18
+ }
19
+ // Ensure dimensions
20
+ if (!svgMarkup.includes('width=')) {
21
+ svgMarkup = svgMarkup.replace('<svg', `<svg width="${size}" height="${size}"`);
22
+ }
23
+ return svgMarkup;
24
+ }
25
+ /**
26
+ * Convert an SVG string to a data URL suitable for Image loading.
27
+ */
28
+ function svgToDataUrl(svgString) {
29
+ const encoded = encodeURIComponent(svgString)
30
+ .replace(/'/g, '%27')
31
+ .replace(/"/g, '%22');
32
+ return `data:image/svg+xml,${encoded}`;
33
+ }
34
+ /**
35
+ * Load an SVG data URL into an HTMLImageElement (async).
36
+ */
37
+ function loadSvgImage(dataUrl) {
38
+ return new Promise((resolve, reject) => {
39
+ const img = new Image();
40
+ img.onload = () => resolve(img);
41
+ img.onerror = () => reject(new Error('Failed to load SVG image'));
42
+ img.src = dataUrl;
43
+ });
44
+ }
45
+ /**
46
+ * Rasterize an SVG string to an OffscreenCanvas / HTMLCanvasElement.
47
+ */
48
+ async function rasterizeSvg(svgString, size) {
49
+ const dataUrl = svgToDataUrl(svgString);
50
+ const img = await loadSvgImage(dataUrl);
51
+ const canvas = document.createElement('canvas');
52
+ canvas.width = size;
53
+ canvas.height = size;
54
+ const ctx = canvas.getContext('2d');
55
+ if (!ctx)
56
+ throw new Error('Failed to get 2D context');
57
+ ctx.drawImage(img, 0, 0, size, size);
58
+ return canvas;
59
+ }
60
+ /* ── Texture registration ─────────────────────────────────────── */
61
+ /**
62
+ * Generate a deterministic texture ID for an icon + options combination.
63
+ */
64
+ function getIconTextureId(displayName, options) {
65
+ const parts = [`icon:${displayName}`];
66
+ if (options === null || options === void 0 ? void 0 : options.size)
67
+ parts.push(`s${options.size}`);
68
+ if (options === null || options === void 0 ? void 0 : options.color)
69
+ parts.push(`c${options.color}`);
70
+ if ((options === null || options === void 0 ? void 0 : options.animation) && options.animation !== 'none')
71
+ parts.push(`a${options.animation}`);
72
+ return parts.join(':');
73
+ }
74
+ /**
75
+ * Register an SVG icon as a texture in the game-engine renderer.
76
+ *
77
+ * @param renderer The Renderer2D instance
78
+ * @param textureId Unique texture identifier
79
+ * @param svgMarkup Static SVG markup from ReactDOMServer.renderToStaticMarkup(<Icon ... />)
80
+ * @param size Rasterization size in px
81
+ * @returns Promise that resolves when the texture is ready
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * import { renderToStaticMarkup } from 'react-dom/server';
86
+ * import { GiWarrior } from '@nice2dev/icons-gaming';
87
+ * import { registerIconTexture, getIconTextureId } from '@nice2dev/game-engine';
88
+ *
89
+ * const id = getIconTextureId('GiWarrior', { size: 64 });
90
+ * const svg = renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />);
91
+ * await registerIconTexture(renderer, id, svg, 64);
92
+ * ```
93
+ */
94
+ async function registerIconTexture(renderer, textureId, svgMarkup, size) {
95
+ const existing = renderer.getTexture(textureId);
96
+ if (existing)
97
+ return; // already loaded
98
+ const prepared = iconToSvgString(svgMarkup, size);
99
+ const dataUrl = svgToDataUrl(prepared);
100
+ await renderer.loadTexture(textureId, dataUrl);
101
+ }
102
+ /**
103
+ * Register an SVG icon as a rasterized canvas texture (sync-safe after await).
104
+ * Useful when you need pixel-perfect rendering without scaling artifacts.
105
+ */
106
+ async function registerIconCanvasTexture(renderer, textureId, svgMarkup, size) {
107
+ const existing = renderer.getTexture(textureId);
108
+ if (existing)
109
+ return;
110
+ const prepared = iconToSvgString(svgMarkup, size);
111
+ const canvas = await rasterizeSvg(prepared, size);
112
+ renderer.setTexture(textureId, canvas);
113
+ }
114
+ /* ── Entity helpers ───────────────────────────────────────────── */
115
+ /**
116
+ * Create a game entity with Sprite component sourced from an icon texture.
117
+ *
118
+ * The texture must already be registered via `registerIconTexture()`.
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * const entityId = createIconEntity(world, 'GiWarrior', textureId, {
123
+ * x: 200, y: 150, displayWidth: 64, displayHeight: 64, layer: 1,
124
+ * });
125
+ * ```
126
+ */
127
+ function createIconEntity(world, name, textureId, options) {
128
+ var _a, _b, _c, _d, _e, _f;
129
+ const entity = world.createEntity((_a = options === null || options === void 0 ? void 0 : options.name) !== null && _a !== void 0 ? _a : name);
130
+ entity.tags.add('icon-sprite');
131
+ world.addComponent(entity.id, 'Transform', {
132
+ 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 },
133
+ scale: { x: 1, y: 1 },
134
+ });
135
+ const spriteOverrides = {
136
+ assetId: textureId,
137
+ width: (_d = options === null || options === void 0 ? void 0 : options.displayWidth) !== null && _d !== void 0 ? _d : 32,
138
+ height: (_e = options === null || options === void 0 ? void 0 : options.displayHeight) !== null && _e !== void 0 ? _e : 32,
139
+ layer: (_f = options === null || options === void 0 ? void 0 : options.layer) !== null && _f !== void 0 ? _f : 0,
140
+ visible: true,
141
+ };
142
+ if (options === null || options === void 0 ? void 0 : options.tint)
143
+ spriteOverrides.tint = options.tint;
144
+ if ((options === null || options === void 0 ? void 0 : options.opacity) !== undefined)
145
+ spriteOverrides.opacity = options.opacity;
146
+ world.addComponent(entity.id, 'Sprite', spriteOverrides);
147
+ return entity.id;
148
+ }
149
+ /* ── Animation sheet helpers ──────────────────────────────────── */
150
+ /**
151
+ * Create a SpriteAnimation clip from multiple icon animation frames.
152
+ *
153
+ * Each frame is a separate registered texture. The AnimatorComponent
154
+ * switches `assetId` each frame to show different icon states.
155
+ *
156
+ * @param frames Array of { assetId, duration } for each frame
157
+ * @param loop Whether animation loops
158
+ */
159
+ function createIconAnimationClip(frames, fps = 8, loop = true) {
160
+ return {
161
+ frames: frames.map(f => ({
162
+ assetId: f.assetId,
163
+ srcRect: null,
164
+ duration: f.duration,
165
+ })),
166
+ fps,
167
+ loop,
168
+ };
169
+ }
170
+ /**
171
+ * Predefined character animation state sequences.
172
+ * Maps game animation concepts to sets of icon animation states
173
+ * that can be baked into textures.
174
+ */
175
+ const CHARACTER_ANIMATION_STATES = [
176
+ 'idle', 'move', 'jump', 'attack-melee', 'attack-ranged', 'attack-magic', 'damage', 'death',
177
+ ];
178
+ const OBJECT_ANIMATION_STATES = [
179
+ 'idle', 'spin', 'float', 'shake', 'glow', 'bounce', 'flicker',
180
+ ];
181
+ /**
182
+ * Batch-register all animation states of an icon as separate textures.
183
+ *
184
+ * @returns Map of animation state → texture ID
185
+ *
186
+ * @example
187
+ * ```ts
188
+ * const textures = await registerIconAnimationSet(
189
+ * renderer,
190
+ * 'GiWarrior',
191
+ * (anim) => renderToStaticMarkup(<GiWarrior size={64} animation={anim} color="#e74c3c" />),
192
+ * CHARACTER_ANIMATION_STATES,
193
+ * 64,
194
+ * );
195
+ * // textures = { idle: 'icon:GiWarrior:s64:aidle', move: 'icon:GiWarrior:s64:amove', ... }
196
+ * ```
197
+ */
198
+ async function registerIconAnimationSet(renderer, displayName, renderFn, states, size) {
199
+ const result = {};
200
+ for (const state of states) {
201
+ const textureId = getIconTextureId(displayName, { size, animation: state });
202
+ const svgMarkup = renderFn(state);
203
+ await registerIconTexture(renderer, textureId, svgMarkup, size);
204
+ result[state] = textureId;
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * Create an Animator component configuration from a registered animation set.
210
+ *
211
+ * @param textureMap Result from `registerIconAnimationSet()`
212
+ * @param defaultState Initial animation state (default: 'idle')
213
+ * @param fps Frames per second for each clip
214
+ */
215
+ function createIconAnimator(textureMap, defaultState = 'idle', fps = 1) {
216
+ const animations = {};
217
+ for (const [state, assetId] of Object.entries(textureMap)) {
218
+ animations[state] = {
219
+ frames: [{ assetId, srcRect: null }],
220
+ fps,
221
+ loop: true,
222
+ };
223
+ }
224
+ return {
225
+ currentAnimation: defaultState,
226
+ animations,
227
+ frame: 0,
228
+ elapsed: 0,
229
+ playing: true,
230
+ loop: true,
231
+ };
232
+ }
233
+ /**
234
+ * Register an entire icon map (e.g. `characterIcons`, `weaponIcons`)
235
+ * and return a catalog array for the asset manager / picker.
236
+ *
237
+ * @param renderer Renderer2D
238
+ * @param iconMap Map of name→icon render functions (SVG markup generators)
239
+ * @param category Category label for the asset catalog
240
+ * @param size Texture size
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * const catalog = await registerIconCatalog(
245
+ * renderer,
246
+ * {
247
+ * GiWarrior: () => renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />),
248
+ * GiMage: () => renderToStaticMarkup(<GiMage size={64} color="#3498db" />),
249
+ * },
250
+ * 'characters',
251
+ * 64,
252
+ * );
253
+ * ```
254
+ */
255
+ async function registerIconCatalog(renderer, iconMap, category, size) {
256
+ const catalog = [];
257
+ for (const [name, renderFn] of Object.entries(iconMap)) {
258
+ const textureId = getIconTextureId(name, { size });
259
+ await registerIconTexture(renderer, textureId, renderFn(), size);
260
+ catalog.push({ name, textureId, category });
261
+ }
262
+ return catalog;
263
+ }
264
+
265
+ export { CHARACTER_ANIMATION_STATES, OBJECT_ANIMATION_STATES, createIconAnimationClip, createIconAnimator, createIconEntity, getIconTextureId, iconToSvgString, loadSvgImage, rasterizeSvg, registerIconAnimationSet, registerIconCanvasTexture, registerIconCatalog, registerIconTexture, svgToDataUrl };
266
+ //# 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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"}