@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,387 @@
1
+ /**
2
+ * @file NdgFormat.ts
3
+ * @description Nice2Dev Game (.ndg) Universal Format - Import/Export
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * The .ndg format is Nice2Dev's native scene interchange format.
7
+ * Designed for:
8
+ * - Lossless round-trip conversion
9
+ * - Human-readable JSON structure
10
+ * - Full feature preservation
11
+ * - Version compatibility
12
+ *
13
+ * File Types:
14
+ * - .ndg - Single scene
15
+ * - .ndgp - Project with multiple scenes
16
+ * - .ndga - Asset bundle
17
+ */
18
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ParsedAsset, ImportError, ImportSourceType } from './SceneImporter';
19
+ import type { NiceProject, NiceScene, NiceAsset } from '../export/PlatformExporter';
20
+ declare const NDG_MAGIC = "NDG1";
21
+ export interface NdgFile {
22
+ /** Format magic identifier */
23
+ magic: typeof NDG_MAGIC;
24
+ /** Format version */
25
+ version: string;
26
+ /** File type */
27
+ type: 'scene' | 'project' | 'asset-bundle';
28
+ /** Creation timestamp */
29
+ created: string;
30
+ /** Last modified timestamp */
31
+ modified: string;
32
+ /** Generator info */
33
+ generator: NdgGenerator;
34
+ /** Original source info (if imported) */
35
+ source?: NdgSource;
36
+ /** File content */
37
+ content: NdgScene | NdgProject | NdgAssetBundle;
38
+ }
39
+ export interface NdgGenerator {
40
+ name: string;
41
+ version: string;
42
+ platform?: string;
43
+ }
44
+ export interface NdgSource {
45
+ /** Original format type */
46
+ type: ImportSourceType | 'unknown';
47
+ /** Original file path */
48
+ path: string;
49
+ /** Import timestamp */
50
+ importedAt: string;
51
+ /** Original format version */
52
+ formatVersion?: string;
53
+ /** Preserved original data */
54
+ originalData?: Record<string, unknown>;
55
+ }
56
+ export interface NdgProject {
57
+ /** Project name */
58
+ name: string;
59
+ /** Project description */
60
+ description?: string;
61
+ /** Project settings */
62
+ settings: NdgProjectSettings;
63
+ /** All scenes */
64
+ scenes: NdgScene[];
65
+ /** All assets */
66
+ assets: NdgAsset[];
67
+ /** Global scripts */
68
+ scripts?: NdgScript[];
69
+ /** Project metadata */
70
+ metadata?: Record<string, unknown>;
71
+ }
72
+ export interface NdgProjectSettings {
73
+ /** Default resolution */
74
+ width: number;
75
+ height: number;
76
+ /** Target frame rate */
77
+ targetFPS?: number;
78
+ /** Physics settings */
79
+ physics?: NdgPhysicsSettings;
80
+ /** Audio settings */
81
+ audio?: NdgAudioSettings;
82
+ /** Rendering settings */
83
+ rendering?: NdgRenderingSettings;
84
+ /** Input mappings */
85
+ input?: NdgInputSettings;
86
+ /** Custom settings */
87
+ custom?: Record<string, unknown>;
88
+ }
89
+ export interface NdgPhysicsSettings {
90
+ gravity: {
91
+ x: number;
92
+ y: number;
93
+ };
94
+ velocityIterations: number;
95
+ positionIterations: number;
96
+ timeStep: number;
97
+ pixelsPerMeter?: number;
98
+ }
99
+ export interface NdgAudioSettings {
100
+ masterVolume: number;
101
+ musicVolume: number;
102
+ sfxVolume: number;
103
+ audioChannels: number;
104
+ }
105
+ export interface NdgRenderingSettings {
106
+ pixelPerfect: boolean;
107
+ antialiasing: boolean;
108
+ vsync: boolean;
109
+ maxFPS?: number;
110
+ backgroundColor: string;
111
+ }
112
+ export interface NdgInputSettings {
113
+ actions: NdgInputAction[];
114
+ }
115
+ export interface NdgInputAction {
116
+ name: string;
117
+ keys?: string[];
118
+ gamepadButtons?: number[];
119
+ mouseButtons?: number[];
120
+ }
121
+ export interface NdgScene {
122
+ /** Scene ID */
123
+ id: string;
124
+ /** Scene name */
125
+ name: string;
126
+ /** Scene settings */
127
+ settings: NdgSceneSettings;
128
+ /** All entities */
129
+ entities: NdgEntity[];
130
+ /** Layers definition */
131
+ layers?: NdgLayerDef[];
132
+ /** Tilemaps */
133
+ tilemaps?: NdgTilemap[];
134
+ /** Scene-level scripts */
135
+ scripts?: NdgScript[];
136
+ /** Scene metadata */
137
+ metadata?: Record<string, unknown>;
138
+ }
139
+ export interface NdgSceneSettings {
140
+ width: number;
141
+ height: number;
142
+ backgroundColor: string;
143
+ gravity?: {
144
+ x: number;
145
+ y: number;
146
+ };
147
+ bounds?: {
148
+ left: number;
149
+ top: number;
150
+ right: number;
151
+ bottom: number;
152
+ };
153
+ camera?: NdgCameraSettings;
154
+ lighting?: NdgLightingSettings;
155
+ }
156
+ export interface NdgCameraSettings {
157
+ zoom: number;
158
+ bounds?: {
159
+ left: number;
160
+ top: number;
161
+ right: number;
162
+ bottom: number;
163
+ };
164
+ followTarget?: string;
165
+ smoothing?: number;
166
+ }
167
+ export interface NdgLightingSettings {
168
+ ambientColor: string;
169
+ ambientIntensity: number;
170
+ }
171
+ export interface NdgLayerDef {
172
+ id: string;
173
+ name: string;
174
+ zIndex: number;
175
+ visible: boolean;
176
+ locked: boolean;
177
+ parallax?: {
178
+ x: number;
179
+ y: number;
180
+ };
181
+ properties?: Record<string, unknown>;
182
+ }
183
+ export interface NdgEntity {
184
+ /** Entity ID */
185
+ id: string;
186
+ /** Entity name */
187
+ name: string;
188
+ /** Active state */
189
+ active: boolean;
190
+ /** Tags */
191
+ tags: string[];
192
+ /** Layer reference */
193
+ layer?: string;
194
+ /** Transform */
195
+ transform: NdgTransform;
196
+ /** Components */
197
+ components: NdgComponent[];
198
+ /** Children */
199
+ children: NdgEntity[];
200
+ /** Prefab reference */
201
+ prefab?: NdgPrefabRef;
202
+ /** Entity metadata */
203
+ metadata?: Record<string, unknown>;
204
+ }
205
+ export interface NdgTransform {
206
+ position: {
207
+ x: number;
208
+ y: number;
209
+ z?: number;
210
+ };
211
+ rotation: number | {
212
+ x: number;
213
+ y: number;
214
+ z: number;
215
+ };
216
+ scale: {
217
+ x: number;
218
+ y: number;
219
+ z?: number;
220
+ };
221
+ }
222
+ export interface NdgComponent {
223
+ /** Component type */
224
+ type: string;
225
+ /** Enabled state */
226
+ enabled: boolean;
227
+ /** Component data */
228
+ data: Record<string, unknown>;
229
+ /** Script reference (for script components) */
230
+ script?: NdgScriptRef;
231
+ }
232
+ export interface NdgPrefabRef {
233
+ id: string;
234
+ path?: string;
235
+ overrides?: NdgPrefabOverride[];
236
+ }
237
+ export interface NdgPrefabOverride {
238
+ path: string;
239
+ value: unknown;
240
+ }
241
+ export interface NdgScript {
242
+ id: string;
243
+ name: string;
244
+ language: 'typescript' | 'javascript' | 'gdscript' | 'lua' | 'csharp' | 'visual';
245
+ source: string;
246
+ compiled?: string;
247
+ dependencies?: string[];
248
+ }
249
+ export interface NdgScriptRef {
250
+ id: string;
251
+ path?: string;
252
+ parameters?: Record<string, unknown>;
253
+ }
254
+ export interface NdgTilemap {
255
+ id: string;
256
+ name: string;
257
+ tilesetId: string;
258
+ width: number;
259
+ height: number;
260
+ tileWidth: number;
261
+ tileHeight: number;
262
+ layers: NdgTilemapLayer[];
263
+ }
264
+ export interface NdgTilemapLayer {
265
+ id: string;
266
+ name: string;
267
+ data: number[];
268
+ visible: boolean;
269
+ opacity: number;
270
+ collisionEnabled?: boolean;
271
+ }
272
+ export interface NdgAsset {
273
+ /** Asset ID */
274
+ id: string;
275
+ /** Asset name */
276
+ name: string;
277
+ /** Asset type */
278
+ type: 'texture' | 'audio' | 'font' | 'shader' | 'animation' | 'tileset' | 'prefab' | 'script' | 'data';
279
+ /** File path */
280
+ path: string;
281
+ /** Import settings */
282
+ importSettings?: NdgAssetImportSettings;
283
+ /** Asset-specific data */
284
+ data?: Record<string, unknown>;
285
+ /** Asset metadata */
286
+ metadata?: Record<string, unknown>;
287
+ }
288
+ export interface NdgAssetImportSettings {
289
+ compression?: 'none' | 'lz4' | 'zstd';
290
+ filterMode?: 'point' | 'bilinear' | 'trilinear';
291
+ wrapMode?: 'clamp' | 'repeat' | 'mirror';
292
+ generateMipmaps?: boolean;
293
+ maxSize?: number;
294
+ loadType?: 'decompress-on-load' | 'compressed-in-memory' | 'streaming';
295
+ quality?: number;
296
+ frameRate?: number;
297
+ loop?: boolean;
298
+ }
299
+ export interface NdgAssetBundle {
300
+ name: string;
301
+ assets: NdgAsset[];
302
+ compression?: 'none' | 'lz4' | 'zstd';
303
+ }
304
+ export declare class NdgImporter extends SceneImporter {
305
+ private ndgFile;
306
+ constructor();
307
+ canHandle(filePath: string): boolean;
308
+ import(options: ImportOptions): Promise<ImportResult>;
309
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | ParsedAsset | null>;
310
+ validate(sourcePath: string): Promise<ImportError[]>;
311
+ private convertNdgSceneToNice;
312
+ private convertNdgEntityToNice;
313
+ private convertNdgAssetToNice;
314
+ private convertNdgSceneToParsed;
315
+ private convertNdgEntityToParsed;
316
+ private readFile;
317
+ }
318
+ export declare class NdgExporter {
319
+ private generatorName;
320
+ private generatorVersion;
321
+ /**
322
+ * Export a single scene to NDG format
323
+ */
324
+ exportScene(scene: NiceScene, source?: NdgSource): NdgFile;
325
+ /**
326
+ * Export a full project to NDG format
327
+ */
328
+ exportProject(project: NiceProject): NdgFile;
329
+ /**
330
+ * Export an asset bundle to NDG format
331
+ */
332
+ exportAssetBundle(name: string, assets: NiceAsset[]): NdgFile;
333
+ /**
334
+ * Serialize NDG file to JSON string
335
+ */
336
+ serialize(ndgFile: NdgFile, pretty?: boolean): string;
337
+ private convertNiceSceneToNdg;
338
+ private convertNiceEntityToNdg;
339
+ private convertNiceProjectToNdg;
340
+ private convertNiceAssetToNdg;
341
+ private extractMetadata;
342
+ }
343
+ export declare class NdgBidirectionalSync {
344
+ private importer;
345
+ private exporter;
346
+ /**
347
+ * Import and track original data for round-trip
348
+ */
349
+ importWithTracking(sourcePath: string, sourceType: ImportSourceType): Promise<{
350
+ scenes: NiceScene[];
351
+ assets: NiceAsset[];
352
+ source: NdgSource;
353
+ }>;
354
+ /**
355
+ * Export with source tracking for later re-import
356
+ */
357
+ exportWithTracking(scene: NiceScene, source?: NdgSource): string;
358
+ /**
359
+ * Check if NDG file has modifications compared to source
360
+ */
361
+ hasModifications(ndgFile: NdgFile): boolean;
362
+ /**
363
+ * Update the modified timestamp
364
+ */
365
+ touch(ndgFile: NdgFile): NdgFile;
366
+ }
367
+ /**
368
+ * Create NDG importer
369
+ */
370
+ export declare function createNdgImporter(): NdgImporter;
371
+ /**
372
+ * Create NDG exporter
373
+ */
374
+ export declare function createNdgExporter(): NdgExporter;
375
+ /**
376
+ * Create bidirectional sync helper
377
+ */
378
+ export declare function createBidirectionalSync(): NdgBidirectionalSync;
379
+ /**
380
+ * Quick export scene to NDG JSON string
381
+ */
382
+ export declare function sceneToNdg(scene: NiceScene, pretty?: boolean): string;
383
+ /**
384
+ * Quick import NDG JSON string to scene
385
+ */
386
+ export declare function ndgToScene(ndgJson: string): Promise<NiceScene | null>;
387
+ export {};
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @file OgmoImporter.ts
3
+ * @description OGMO Editor Level Importer
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * OGMO Editor is a free, open-source 2D level editor.
7
+ * Supports OGMO 3 format (JSON-based).
8
+ *
9
+ * File Types:
10
+ * - .ogmo - Project file
11
+ * - .json - Level file (usually named *.ogmo.json or just *.json)
12
+ */
13
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
14
+ /** OGMO 3 Project File */
15
+ export interface OgmoProject {
16
+ name: string;
17
+ ogmoVersion: string;
18
+ levelPaths?: string[];
19
+ backgroundColor: string;
20
+ gridColor: string;
21
+ anglesRadians: boolean;
22
+ directoryDepth: number;
23
+ layerGridDefaultSize: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ levelDefaultSize: {
28
+ x: number;
29
+ y: number;
30
+ };
31
+ levelMinSize: {
32
+ x: number;
33
+ y: number;
34
+ };
35
+ levelMaxSize: {
36
+ x: number;
37
+ y: number;
38
+ };
39
+ levelNamePattern?: string;
40
+ levelValues?: OgmoValueDef[];
41
+ defaultExportMode: string;
42
+ compactExport: boolean;
43
+ externalScript?: string;
44
+ playCommand?: string;
45
+ entityTags?: string[];
46
+ layers: OgmoLayerDef[];
47
+ entities: OgmoEntityDef[];
48
+ tilesets: OgmoTilesetDef[];
49
+ }
50
+ /** OGMO Layer Definition */
51
+ export interface OgmoLayerDef {
52
+ name: string;
53
+ gridSize: {
54
+ x: number;
55
+ y: number;
56
+ };
57
+ exportID: string;
58
+ definition: 'tile' | 'entity' | 'decal';
59
+ /** For tile layers */
60
+ tileset?: string;
61
+ /** For entity layers */
62
+ requiredTags?: string[];
63
+ excludedTags?: string[];
64
+ /** For decal layers */
65
+ folder?: string;
66
+ scaleable?: boolean;
67
+ rotatable?: boolean;
68
+ tintable?: boolean;
69
+ }
70
+ /** OGMO Entity Definition */
71
+ export interface OgmoEntityDef {
72
+ name: string;
73
+ exportID: string;
74
+ limit: number;
75
+ size: {
76
+ x: number;
77
+ y: number;
78
+ };
79
+ origin: {
80
+ x: number;
81
+ y: number;
82
+ };
83
+ originAnchored: boolean;
84
+ shape: OgmoEntityShape;
85
+ color: string;
86
+ tileX: boolean;
87
+ tileY: boolean;
88
+ tileSize: {
89
+ x: number;
90
+ y: number;
91
+ };
92
+ resizeableX: boolean;
93
+ resizeableY: boolean;
94
+ rotatable: boolean;
95
+ rotationDegrees: number;
96
+ canFlipX: boolean;
97
+ canFlipY: boolean;
98
+ canSetColor: boolean;
99
+ hasNodes: boolean;
100
+ nodeLimit: number;
101
+ nodeDisplay: 'path' | 'circuit' | 'fan' | 'none';
102
+ nodeGhost: boolean;
103
+ tags: string[];
104
+ values: OgmoValueDef[];
105
+ texture?: string;
106
+ textureX?: number;
107
+ textureY?: number;
108
+ }
109
+ export type OgmoEntityShape = {
110
+ label: 'Rectangle' | 'Ellipse' | 'Cross' | 'Diamond' | 'Octagon' | 'Point';
111
+ } | {
112
+ label: 'Ellipse';
113
+ } | {
114
+ label: 'Cross';
115
+ } | {
116
+ label: 'Diamond';
117
+ } | {
118
+ label: 'Octagon';
119
+ } | {
120
+ label: 'Point';
121
+ };
122
+ /** OGMO Tileset Definition */
123
+ export interface OgmoTilesetDef {
124
+ name: string;
125
+ path: string;
126
+ image: string;
127
+ tileWidth: number;
128
+ tileHeight: number;
129
+ tileSeparationX: number;
130
+ tileSeparationY: number;
131
+ }
132
+ /** OGMO Value Definition (custom properties) */
133
+ export interface OgmoValueDef {
134
+ name: string;
135
+ definition: 'Bool' | 'Int' | 'Float' | 'String' | 'Text' | 'Enum' | 'Color' | 'FilePath';
136
+ defaults: unknown;
137
+ bounded?: boolean;
138
+ min?: number;
139
+ max?: number;
140
+ choices?: string[];
141
+ }
142
+ /** OGMO 3 Level File */
143
+ export interface OgmoLevel {
144
+ ogmoVersion: string;
145
+ width: number;
146
+ height: number;
147
+ offsetX: number;
148
+ offsetY: number;
149
+ values?: Record<string, unknown>;
150
+ layers: OgmoLayerInstance[];
151
+ }
152
+ /** OGMO Layer Instance */
153
+ export interface OgmoLayerInstance {
154
+ name: string;
155
+ _eid: string;
156
+ offsetX: number;
157
+ offsetY: number;
158
+ gridCellWidth: number;
159
+ gridCellHeight: number;
160
+ gridCellsX: number;
161
+ gridCellsY: number;
162
+ /** Tile layers */
163
+ tileset?: string;
164
+ data?: number[];
165
+ data2D?: number[][];
166
+ dataCoords?: Array<[number, number]>;
167
+ dataCoords2D?: Array<Array<[number, number]>>;
168
+ exportMode?: '1D' | '2D' | 'CSV' | 'Coords (1D)' | 'Coords (2D)';
169
+ arrayMode?: '1D' | '2D';
170
+ /** Entity layers */
171
+ entities?: OgmoEntityInstance[];
172
+ /** Decal layers */
173
+ decals?: OgmoDecalInstance[];
174
+ /** Grid layer (for collision/pathfinding) */
175
+ grid?: string[];
176
+ grid2D?: string[][];
177
+ }
178
+ /** OGMO Entity Instance */
179
+ export interface OgmoEntityInstance {
180
+ name: string;
181
+ id: number;
182
+ _eid: string;
183
+ x: number;
184
+ y: number;
185
+ width?: number;
186
+ height?: number;
187
+ originX?: number;
188
+ originY?: number;
189
+ rotation?: number;
190
+ flippedX?: boolean;
191
+ flippedY?: boolean;
192
+ color?: string;
193
+ nodes?: Array<{
194
+ x: number;
195
+ y: number;
196
+ }>;
197
+ values?: Record<string, unknown>;
198
+ }
199
+ /** OGMO Decal Instance */
200
+ export interface OgmoDecalInstance {
201
+ x: number;
202
+ y: number;
203
+ texture: string;
204
+ scaleX?: number;
205
+ scaleY?: number;
206
+ rotation?: number;
207
+ color?: string;
208
+ originX?: number;
209
+ originY?: number;
210
+ }
211
+ export declare class OgmoImporter extends SceneImporter {
212
+ private project;
213
+ private entityDefs;
214
+ private tilesetDefs;
215
+ private layerDefs;
216
+ constructor();
217
+ canHandle(filePath: string): boolean;
218
+ import(options: ImportOptions): Promise<ImportResult>;
219
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
220
+ validate(sourcePath: string): Promise<ImportError[]>;
221
+ private isProjectFile;
222
+ private isLevelFile;
223
+ private indexDefinitions;
224
+ private convertLevelToScene;
225
+ private convertLevelToParsed;
226
+ private convertLayer;
227
+ private convertLayerToParsed;
228
+ private convertTileLayer;
229
+ private convertEntity;
230
+ private convertEntityToParsed;
231
+ private convertDecal;
232
+ private convertGridLayer;
233
+ private readFile;
234
+ private resolvePath;
235
+ private extractFileName;
236
+ }
237
+ export declare function createOgmoImporter(): OgmoImporter;