@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,279 @@
1
+ import { EventBus } from '../core/EventBus';
2
+ import React from 'react';
3
+ export type TelemetryEventCategory = 'gameplay' | 'combat' | 'navigation' | 'interaction' | 'economy' | 'social' | 'progression' | 'performance' | 'ui' | 'error' | 'custom';
4
+ export type HeatmapType = 'death' | 'traversal' | 'interaction' | 'combat' | 'loot' | 'custom';
5
+ export type SessionEventType = 'position' | 'action' | 'input' | 'state-change' | 'camera' | 'dialogue' | 'inventory' | 'quest';
6
+ export interface TelemetryEvent {
7
+ id: string;
8
+ category: TelemetryEventCategory;
9
+ name: string;
10
+ timestamp: number;
11
+ sessionId: string;
12
+ userId?: string;
13
+ data: Record<string, unknown>;
14
+ position?: {
15
+ x: number;
16
+ y: number;
17
+ z?: number;
18
+ };
19
+ sceneId?: string;
20
+ /** Build/version where this event occurred */
21
+ buildVersion?: string;
22
+ }
23
+ export interface TelemetryConfig {
24
+ enabled: boolean;
25
+ /** Batch size before flush */
26
+ batchSize: number;
27
+ /** Flush interval (ms) */
28
+ flushIntervalMs: number;
29
+ /** Max events to keep in memory */
30
+ maxBufferSize: number;
31
+ /** Filter: only collect these categories (empty = all) */
32
+ categories: TelemetryEventCategory[];
33
+ /** Sample rate (0–1): fraction of events to keep */
34
+ sampleRate: number;
35
+ /** Custom endpoint for sending events */
36
+ endpoint?: string;
37
+ }
38
+ export declare const DEFAULT_TELEMETRY_CONFIG: TelemetryConfig;
39
+ export interface HeatmapConfig {
40
+ type: HeatmapType;
41
+ /** Grid cell size in world units */
42
+ cellSize: number;
43
+ /** World bounds */
44
+ bounds: {
45
+ minX: number;
46
+ minY: number;
47
+ maxX: number;
48
+ maxY: number;
49
+ };
50
+ /** Color gradient (value 0→1 mapped to colors) */
51
+ colorStops: {
52
+ value: number;
53
+ color: string;
54
+ }[];
55
+ /** Max value for normalization (0 = auto) */
56
+ maxValue: number;
57
+ /** Gaussian blur radius (cells) */
58
+ blurRadius: number;
59
+ }
60
+ export interface HeatmapCell {
61
+ x: number;
62
+ y: number;
63
+ value: number;
64
+ events: number;
65
+ }
66
+ export declare const DEFAULT_HEATMAP_CONFIG: HeatmapConfig;
67
+ export interface SessionFrame {
68
+ timestamp: number;
69
+ delta: number;
70
+ events: SessionRecordedEvent[];
71
+ }
72
+ export interface SessionRecordedEvent {
73
+ type: SessionEventType;
74
+ data: Record<string, unknown>;
75
+ }
76
+ export interface SessionRecording {
77
+ id: string;
78
+ sessionId: string;
79
+ startedAt: number;
80
+ endedAt: number;
81
+ durationMs: number;
82
+ frameCount: number;
83
+ frames: SessionFrame[];
84
+ metadata: {
85
+ sceneId: string;
86
+ buildVersion: string;
87
+ playerLevel?: number;
88
+ tags: string[];
89
+ };
90
+ /** Compressed size in bytes (if compressed) */
91
+ sizeBytes: number;
92
+ }
93
+ export interface SessionRecordingConfig {
94
+ enabled: boolean;
95
+ /** Target frames per second for recording */
96
+ fps: number;
97
+ /** Max recording duration (ms, 0 = unlimited) */
98
+ maxDurationMs: number;
99
+ /** What events to record */
100
+ recordTypes: SessionEventType[];
101
+ /** Record player position every frame */
102
+ recordPosition: boolean;
103
+ /** Compress recording data */
104
+ compress: boolean;
105
+ }
106
+ export declare const DEFAULT_RECORDING_CONFIG: SessionRecordingConfig;
107
+ export interface FunnelStep {
108
+ id: string;
109
+ name: string;
110
+ description?: string;
111
+ /** Number of users/sessions that reached this step */
112
+ count: number;
113
+ /** Drop-off rate from previous step */
114
+ dropOffRate: number;
115
+ }
116
+ export interface FunnelDefinition {
117
+ id: string;
118
+ name: string;
119
+ steps: {
120
+ id: string;
121
+ name: string;
122
+ eventName: string;
123
+ }[];
124
+ }
125
+ export declare class TelemetryPipeline {
126
+ private config;
127
+ private buffer;
128
+ private flushed;
129
+ private flushTimer;
130
+ private sessionId;
131
+ private eventCounter;
132
+ private eventBus;
133
+ constructor(eventBus: EventBus, config?: Partial<TelemetryConfig>);
134
+ private generateId;
135
+ /** Track a telemetry event */
136
+ track(category: TelemetryEventCategory, name: string, data?: Record<string, unknown>, position?: {
137
+ x: number;
138
+ y: number;
139
+ z?: number;
140
+ }): void;
141
+ /** Flush buffered events */
142
+ flush(): TelemetryEvent[];
143
+ private startFlushTimer;
144
+ /** Get all events (current buffer + flushed) */
145
+ getAllEvents(): TelemetryEvent[];
146
+ /** Get events by category */
147
+ getByCategory(category: TelemetryEventCategory): TelemetryEvent[];
148
+ /** Get event count by name */
149
+ countByName(name: string): number;
150
+ getSessionId(): string;
151
+ getBufferSize(): number;
152
+ getTotalEvents(): number;
153
+ clear(): void;
154
+ destroy(): void;
155
+ }
156
+ export declare class HeatmapGenerator {
157
+ private config;
158
+ private grid;
159
+ private totalEvents;
160
+ constructor(config?: Partial<HeatmapConfig>);
161
+ private cellKey;
162
+ private worldToCell;
163
+ /** Add an event at a world position */
164
+ addEvent(x: number, y: number, weight?: number): void;
165
+ /** Add events from telemetry data */
166
+ addFromTelemetry(events: TelemetryEvent[]): void;
167
+ /** Get the grid as an array of cells with normalized values */
168
+ getCells(): HeatmapCell[];
169
+ /** Apply Gaussian blur to the grid */
170
+ getBlurredCells(): HeatmapCell[];
171
+ /** Render heatmap to a canvas */
172
+ renderToCanvas(ctx: CanvasRenderingContext2D, width: number, height: number): void;
173
+ private interpolateColor;
174
+ private lerpColor;
175
+ getTotalEvents(): number;
176
+ getConfig(): Readonly<HeatmapConfig>;
177
+ clear(): void;
178
+ }
179
+ export declare class SessionRecorder {
180
+ private config;
181
+ private recording;
182
+ private frames;
183
+ private startedAt;
184
+ private lastFrameTime;
185
+ private pendingEvents;
186
+ private recordTimer;
187
+ private sessionId;
188
+ constructor(config?: Partial<SessionRecordingConfig>);
189
+ /** Start recording */
190
+ start(): void;
191
+ /** Stop recording and return the session */
192
+ stop(sceneId?: string, buildVersion?: string): SessionRecording;
193
+ /** Add an event to the current frame batch */
194
+ recordEvent(type: SessionEventType, data: Record<string, unknown>): void;
195
+ /** Record player position (convenience) */
196
+ recordPosition(x: number, y: number, z?: number): void;
197
+ private captureFrame;
198
+ isRecording(): boolean;
199
+ getFrameCount(): number;
200
+ getDurationMs(): number;
201
+ }
202
+ export declare class SessionPlayer {
203
+ private recording;
204
+ private currentFrame;
205
+ private playing;
206
+ private speed;
207
+ private playTimer;
208
+ private onFrame;
209
+ load(recording: SessionRecording): void;
210
+ /** Start playback */
211
+ play(onFrame: (frame: SessionFrame, index: number) => void): void;
212
+ private advanceFrame;
213
+ stop(): void;
214
+ pause(): void;
215
+ seek(frameIndex: number): void;
216
+ setSpeed(speed: number): void;
217
+ getProgress(): number;
218
+ isPlaying(): boolean;
219
+ }
220
+ export declare class FunnelTracker {
221
+ private funnels;
222
+ private progress;
223
+ define(funnel: FunnelDefinition): void;
224
+ /** Record that a session reached a funnel step */
225
+ recordStep(funnelId: string, stepEventName: string, sessionId: string): void;
226
+ /** Get funnel analysis */
227
+ analyze(funnelId: string): FunnelStep[];
228
+ getFunnels(): FunnelDefinition[];
229
+ }
230
+ export declare class GameplayAnalytics {
231
+ readonly telemetry: TelemetryPipeline;
232
+ readonly recorder: SessionRecorder;
233
+ readonly funnels: FunnelTracker;
234
+ private heatmaps;
235
+ private eventBus;
236
+ constructor(eventBus: EventBus, telemetryConfig?: Partial<TelemetryConfig>, recordingConfig?: Partial<SessionRecordingConfig>);
237
+ /** Create or get a heatmap */
238
+ heatmap(id: string, config?: Partial<HeatmapConfig>): HeatmapGenerator;
239
+ /** Track and automatically distribute to relevant heatmaps */
240
+ trackEvent(category: TelemetryEventCategory, name: string, data?: Record<string, unknown>, position?: {
241
+ x: number;
242
+ y: number;
243
+ z?: number;
244
+ }): void;
245
+ /** Get summary stats */
246
+ getSummary(): {
247
+ totalEvents: number;
248
+ sessionId: string;
249
+ heatmapCount: number;
250
+ isRecording: boolean;
251
+ recordedFrames: number;
252
+ };
253
+ destroy(): void;
254
+ }
255
+ export declare function useGameplayAnalytics(eventBus: EventBus, telemetryConfig?: Partial<TelemetryConfig>, recordingConfig?: Partial<SessionRecordingConfig>): {
256
+ analytics: GameplayAnalytics;
257
+ trackEvent: (category: TelemetryEventCategory, name: string, data?: Record<string, unknown>, position?: {
258
+ x: number;
259
+ y: number;
260
+ z?: number;
261
+ }) => void;
262
+ summary: {
263
+ totalEvents: number;
264
+ sessionId: string;
265
+ heatmapCount: number;
266
+ isRecording: boolean;
267
+ recordedFrames: number;
268
+ };
269
+ refreshSummary: () => void;
270
+ startRecording: () => void;
271
+ stopRecording: (sceneId?: string) => SessionRecording;
272
+ heatmap: (id: string, config?: Partial<HeatmapConfig>) => HeatmapGenerator;
273
+ };
274
+ export interface AnalyticsDashboardProps {
275
+ analytics: GameplayAnalytics;
276
+ className?: string;
277
+ style?: React.CSSProperties;
278
+ }
279
+ export declare const AnalyticsDashboard: React.FC<AnalyticsDashboardProps>;
@@ -0,0 +1,326 @@
1
+ import type { Vec2 } from '../core/types';
2
+ import { EventBus } from '../core/EventBus';
3
+ import React from 'react';
4
+ /** Dialogue node types */
5
+ export type DialogueNodeType = 'start' | 'text' | 'choice' | 'branch' | 'set_variable' | 'check_variable' | 'event' | 'random' | 'end';
6
+ /** Variable types supported in dialogues */
7
+ export type DialogueVarType = 'boolean' | 'number' | 'string';
8
+ /** Comparison operators for conditions */
9
+ export type ComparisonOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains' | 'startsWith' | 'endsWith';
10
+ /** Character emotion types */
11
+ export type EmotionType = 'neutral' | 'happy' | 'sad' | 'angry' | 'surprised' | 'scared' | 'disgusted' | 'confused' | 'thoughtful' | 'excited' | 'tired' | 'love' | 'custom';
12
+ /** Text effect types */
13
+ export type TextEffectType = 'none' | 'typewriter' | 'shake' | 'wave' | 'rainbow' | 'fade';
14
+ export interface DialogueVariable {
15
+ id: string;
16
+ name: string;
17
+ type: DialogueVarType;
18
+ defaultValue: boolean | number | string;
19
+ description?: string;
20
+ persistent?: boolean;
21
+ scope: 'conversation' | 'global';
22
+ }
23
+ export interface VariableCondition {
24
+ variableId: string;
25
+ operator: ComparisonOp;
26
+ value: boolean | number | string;
27
+ }
28
+ export interface DialogueCharacter {
29
+ id: string;
30
+ name: string;
31
+ displayName: string;
32
+ /** Portrait images per emotion */
33
+ portraits: Record<EmotionType, string>;
34
+ voiceId?: string;
35
+ defaultEmotion: EmotionType;
36
+ textColor?: string;
37
+ nameColor?: string;
38
+ textSpeed?: number;
39
+ }
40
+ export interface DialogueNodeBase {
41
+ id: string;
42
+ type: DialogueNodeType;
43
+ position: Vec2;
44
+ comment?: string;
45
+ tags?: string[];
46
+ }
47
+ export interface StartNode extends DialogueNodeBase {
48
+ type: 'start';
49
+ label: string;
50
+ nextNode: string | null;
51
+ }
52
+ export interface TextNode extends DialogueNodeBase {
53
+ type: 'text';
54
+ characterId: string;
55
+ text: string;
56
+ emotion?: EmotionType;
57
+ textEffect?: TextEffectType;
58
+ audioClip?: string;
59
+ duration?: number;
60
+ nextNode: string | null;
61
+ }
62
+ export interface ChoiceOption {
63
+ id: string;
64
+ text: string;
65
+ nextNode: string | null;
66
+ conditions?: VariableCondition[];
67
+ /** Variables to set when this choice is selected */
68
+ setVariables?: {
69
+ variableId: string;
70
+ value: boolean | number | string;
71
+ }[];
72
+ disabled?: boolean;
73
+ tooltip?: string;
74
+ }
75
+ export interface ChoiceNode extends DialogueNodeBase {
76
+ type: 'choice';
77
+ characterId?: string;
78
+ prompt?: string;
79
+ options: ChoiceOption[];
80
+ timeout?: number;
81
+ defaultOption?: string;
82
+ }
83
+ export interface BranchNode extends DialogueNodeBase {
84
+ type: 'branch';
85
+ conditions: VariableCondition[];
86
+ /** AND or OR logic for multiple conditions */
87
+ logic: 'and' | 'or';
88
+ trueNode: string | null;
89
+ falseNode: string | null;
90
+ }
91
+ export interface SetVariableNode extends DialogueNodeBase {
92
+ type: 'set_variable';
93
+ variableId: string;
94
+ operation: 'set' | 'add' | 'subtract' | 'multiply' | 'toggle' | 'append';
95
+ value: boolean | number | string;
96
+ nextNode: string | null;
97
+ }
98
+ export interface CheckVariableNode extends DialogueNodeBase {
99
+ type: 'check_variable';
100
+ conditions: VariableCondition[];
101
+ logic: 'and' | 'or';
102
+ trueNode: string | null;
103
+ falseNode: string | null;
104
+ }
105
+ export interface EventNode extends DialogueNodeBase {
106
+ type: 'event';
107
+ eventType: string;
108
+ eventData: Record<string, unknown>;
109
+ nextNode: string | null;
110
+ }
111
+ export interface RandomNode extends DialogueNodeBase {
112
+ type: 'random';
113
+ outputs: {
114
+ id: string;
115
+ weight: number;
116
+ nextNode: string | null;
117
+ }[];
118
+ }
119
+ export interface EndNode extends DialogueNodeBase {
120
+ type: 'end';
121
+ result?: 'success' | 'failure' | 'neutral';
122
+ setVariables?: {
123
+ variableId: string;
124
+ value: boolean | number | string;
125
+ }[];
126
+ }
127
+ export type DialogueNode = StartNode | TextNode | ChoiceNode | BranchNode | SetVariableNode | CheckVariableNode | EventNode | RandomNode | EndNode;
128
+ export interface DialogueTree {
129
+ id: string;
130
+ name: string;
131
+ description?: string;
132
+ version: string;
133
+ characters: DialogueCharacter[];
134
+ variables: DialogueVariable[];
135
+ nodes: DialogueNode[];
136
+ startNodeId: string;
137
+ metadata: {
138
+ author?: string;
139
+ created: string;
140
+ modified: string;
141
+ tags?: string[];
142
+ locale: string;
143
+ };
144
+ }
145
+ export interface DialogueState {
146
+ treeId: string;
147
+ currentNodeId: string | null;
148
+ variables: Record<string, boolean | number | string>;
149
+ history: string[];
150
+ choicesMade: {
151
+ nodeId: string;
152
+ optionId: string;
153
+ timestamp: number;
154
+ }[];
155
+ startTime: number;
156
+ isActive: boolean;
157
+ isPaused: boolean;
158
+ }
159
+ export type DialogueEventType = 'dialogue:started' | 'dialogue:ended' | 'dialogue:node-entered' | 'dialogue:text-displayed' | 'dialogue:choice-selected' | 'dialogue:variable-changed' | 'dialogue:event-triggered' | 'dialogue:paused' | 'dialogue:resumed';
160
+ export interface DialogueEvent {
161
+ type: DialogueEventType;
162
+ treeId: string;
163
+ nodeId?: string;
164
+ data?: unknown;
165
+ timestamp: number;
166
+ }
167
+ export declare class DialogueEngine {
168
+ private trees;
169
+ private globalVariables;
170
+ private currentState;
171
+ private events;
172
+ private onTextCallback?;
173
+ private onChoiceCallback?;
174
+ private onEndCallback?;
175
+ constructor(events?: EventBus);
176
+ registerTree(tree: DialogueTree): void;
177
+ unregisterTree(treeId: string): void;
178
+ getTree(treeId: string): DialogueTree | undefined;
179
+ getAllTrees(): DialogueTree[];
180
+ setGlobalVariable(name: string, value: boolean | number | string): void;
181
+ getGlobalVariable(name: string): boolean | number | string | undefined;
182
+ getVariable(variableId: string): boolean | number | string | undefined;
183
+ private setVariable;
184
+ startDialogue(treeId: string, startLabel?: string): boolean;
185
+ endDialogue(): void;
186
+ pauseDialogue(): void;
187
+ resumeDialogue(): void;
188
+ getState(): DialogueState | null;
189
+ isActive(): boolean;
190
+ private goToNode;
191
+ private processNode;
192
+ private processTextNode;
193
+ private processChoiceNode;
194
+ private processBranchNode;
195
+ private processSetVariableNode;
196
+ private processEventNode;
197
+ private processRandomNode;
198
+ private processEndNode;
199
+ selectChoice(optionId: string): boolean;
200
+ /** Advance to next node (for text nodes) */
201
+ advance(): boolean;
202
+ private evaluateConditions;
203
+ private evaluateCondition;
204
+ onText(callback: (node: TextNode, character: DialogueCharacter) => void): void;
205
+ onChoice(callback: (node: ChoiceNode, options: ChoiceOption[]) => void): void;
206
+ onEnd(callback: (node: EndNode, state: DialogueState) => void): void;
207
+ private emitEvent;
208
+ subscribe(eventType: DialogueEventType, handler: (event: DialogueEvent) => void): () => void;
209
+ }
210
+ export declare class DialogueTreeBuilder {
211
+ private tree;
212
+ private nodeCounter;
213
+ constructor(id: string, name: string);
214
+ private generateId;
215
+ description(desc: string): this;
216
+ author(author: string): this;
217
+ locale(locale: string): this;
218
+ tags(tags: string[]): this;
219
+ addCharacter(character: DialogueCharacter): this;
220
+ addVariable(variable: DialogueVariable): this;
221
+ boolVar(id: string, name: string, defaultValue?: boolean, scope?: 'conversation' | 'global'): this;
222
+ numVar(id: string, name: string, defaultValue?: number, scope?: 'conversation' | 'global'): this;
223
+ strVar(id: string, name: string, defaultValue?: string, scope?: 'conversation' | 'global'): this;
224
+ addStart(label: string, nextNode?: string | null, position?: Vec2): this;
225
+ addText(characterId: string, text: string, nextNode?: string | null, options?: Partial<Omit<TextNode, 'id' | 'type' | 'characterId' | 'text' | 'nextNode'>>): this;
226
+ addChoice(options: ChoiceOption[], settings?: Partial<Omit<ChoiceNode, 'id' | 'type' | 'options'>>): this;
227
+ addBranch(conditions: VariableCondition[], trueNode: string | null, falseNode: string | null, logic?: 'and' | 'or', position?: Vec2): this;
228
+ addSetVariable(variableId: string, operation: SetVariableNode['operation'], value: boolean | number | string, nextNode?: string | null, position?: Vec2): this;
229
+ addEvent(eventType: string, eventData: Record<string, unknown>, nextNode?: string | null, position?: Vec2): this;
230
+ addRandom(outputs: {
231
+ weight: number;
232
+ nextNode: string | null;
233
+ }[], position?: Vec2): this;
234
+ addEnd(result?: EndNode['result'], setVariables?: EndNode['setVariables'], position?: Vec2): this;
235
+ build(): DialogueTree;
236
+ /** Get the ID of the last added node */
237
+ lastNodeId(): string;
238
+ /** Get node by index (1-based for readability) */
239
+ nodeId(index: number): string;
240
+ }
241
+ export interface DialogueBoxProps {
242
+ /** The text to display */
243
+ text: string;
244
+ /** Character name */
245
+ characterName?: string;
246
+ /** Character portrait URL */
247
+ portrait?: string;
248
+ /** Emotion for styling */
249
+ emotion?: EmotionType;
250
+ /** Text effect */
251
+ textEffect?: TextEffectType;
252
+ /** Characters per second for typewriter effect */
253
+ textSpeed?: number;
254
+ /** Called when text fully displayed */
255
+ onComplete?: () => void;
256
+ /** Called when user clicks to advance */
257
+ onAdvance?: () => void;
258
+ /** Custom styles */
259
+ className?: string;
260
+ style?: React.CSSProperties;
261
+ }
262
+ /**
263
+ * React hook for typewriter text effect
264
+ */
265
+ export declare function useTypewriter(text: string, speed?: number, enabled?: boolean): {
266
+ displayedText: string;
267
+ isComplete: boolean;
268
+ skip: () => void;
269
+ };
270
+ /**
271
+ * DialogueBox component for displaying dialogue text
272
+ */
273
+ export declare const DialogueBox: React.FC<DialogueBoxProps>;
274
+ export interface ChoiceListProps {
275
+ /** Available choices */
276
+ options: ChoiceOption[];
277
+ /** Prompt text */
278
+ prompt?: string;
279
+ /** Called when a choice is selected */
280
+ onSelect: (optionId: string) => void;
281
+ /** Timeout in ms (optional) */
282
+ timeout?: number;
283
+ /** Custom styles */
284
+ className?: string;
285
+ style?: React.CSSProperties;
286
+ }
287
+ /**
288
+ * ChoiceList component for displaying dialogue choices
289
+ */
290
+ export declare const ChoiceList: React.FC<ChoiceListProps>;
291
+ /**
292
+ * Serialize dialogue tree to JSON string
293
+ */
294
+ export declare function serializeDialogueTree(tree: DialogueTree): string;
295
+ /**
296
+ * Deserialize dialogue tree from JSON string
297
+ */
298
+ export declare function deserializeDialogueTree(json: string): DialogueTree;
299
+ /**
300
+ * Validate dialogue tree structure
301
+ */
302
+ export declare function validateDialogueTree(tree: unknown): DialogueTree;
303
+ /**
304
+ * Find unreachable nodes in dialogue tree
305
+ */
306
+ export declare function findUnreachableNodes(tree: DialogueTree): string[];
307
+ export interface DialogueLocalization {
308
+ treeId: string;
309
+ locale: string;
310
+ texts: Record<string, string>;
311
+ characterNames: Record<string, string>;
312
+ }
313
+ /**
314
+ * Extract all translatable strings from a dialogue tree
315
+ */
316
+ export declare function extractTranslatableStrings(tree: DialogueTree): {
317
+ nodeTexts: Record<string, string>;
318
+ characterNames: Record<string, string>;
319
+ };
320
+ /**
321
+ * Apply localization to a dialogue tree (creates a copy)
322
+ */
323
+ export declare function applyLocalization(tree: DialogueTree, localization: DialogueLocalization): DialogueTree;
324
+ export declare const DEFAULT_TEXT_SPEED = 50;
325
+ export declare const EMOTION_COLORS: Record<EmotionType, string>;
326
+ export declare function createEmptyDialogueTree(id: string, name: string): DialogueTree;
@@ -0,0 +1,2 @@
1
+ export { DialogueEngine, DialogueTreeBuilder, DialogueBox, ChoiceList, useTypewriter, serializeDialogueTree, deserializeDialogueTree, validateDialogueTree, findUnreachableNodes, extractTranslatableStrings, applyLocalization, DEFAULT_TEXT_SPEED, EMOTION_COLORS, createEmptyDialogueTree, } from './DialogueSystem';
2
+ export type { DialogueNodeType, DialogueNode, DialogueNodeBase, StartNode, TextNode, ChoiceNode, ChoiceOption, BranchNode, SetVariableNode, CheckVariableNode, EventNode, RandomNode, EndNode, DialogueVarType, DialogueVariable, VariableCondition, ComparisonOp, DialogueCharacter, EmotionType, TextEffectType, DialogueTree, DialogueState, DialogueEventType, DialogueEvent, DialogueLocalization, DialogueBoxProps, ChoiceListProps, } from './DialogueSystem';
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { GameProject, EntityId } from '../core/types';
3
3
  import { EventBus } from '../core/EventBus';
4
- import { World } from '../ecs/World';
4
+ import { World, type ComponentMap } from '../ecs/World';
5
5
  import { SceneManager } from '../scene/SceneManager';
6
6
  export interface UndoEntry {
7
7
  description: string;
@@ -94,6 +94,12 @@ type EditorAction = {
94
94
  } | {
95
95
  type: 'MARK_CLEAN';
96
96
  };
97
+ export interface ConsoleEntry {
98
+ id: number;
99
+ level: 'info' | 'warn' | 'error';
100
+ message: string;
101
+ timestamp: number;
102
+ }
97
103
  export interface EditorContextValue {
98
104
  state: EditorState;
99
105
  dispatch: React.Dispatch<EditorAction>;
@@ -101,6 +107,11 @@ export interface EditorContextValue {
101
107
  undoStack: UndoStack;
102
108
  sceneManager: SceneManager;
103
109
  events: EventBus;
110
+ worldVersion: number;
111
+ refreshWorld: () => void;
112
+ createNewEntity: (name: string, components?: (keyof ComponentMap)[]) => number;
113
+ consoleLogs: ConsoleEntry[];
114
+ addLog: (level: ConsoleEntry['level'], message: string) => void;
104
115
  }
105
116
  export declare function useEditor(): EditorContextValue;
106
117
  export declare function serializeProject(project: GameProject): string;