@nice2dev/game-engine 1.0.5 → 1.0.10

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 (721) hide show
  1. package/dist/cjs/accessibility/Accessibility.js +55 -20
  2. package/dist/cjs/accessibility/Accessibility.js.map +1 -1
  3. package/dist/cjs/ai/AI.js +74 -40
  4. package/dist/cjs/ai/AI.js.map +1 -1
  5. package/dist/cjs/ai/BehaviorTree.js +39 -47
  6. package/dist/cjs/ai/BehaviorTree.js.map +1 -1
  7. package/dist/cjs/ai/StateMachine.js +64 -100
  8. package/dist/cjs/ai/StateMachine.js.map +1 -1
  9. package/dist/cjs/animation/Animation.js +58 -34
  10. package/dist/cjs/animation/Animation.js.map +1 -1
  11. package/dist/cjs/audio/AudioAdvanced.js +71 -37
  12. package/dist/cjs/audio/AudioAdvanced.js.map +1 -1
  13. package/dist/cjs/audio/AudioBridge.js +61 -49
  14. package/dist/cjs/audio/AudioBridge.js.map +1 -1
  15. package/dist/cjs/audio/AudioManager.js +45 -29
  16. package/dist/cjs/audio/AudioManager.js.map +1 -1
  17. package/dist/cjs/build-cloud/BuildOrchestration.js +1142 -0
  18. package/dist/cjs/build-cloud/BuildOrchestration.js.map +1 -0
  19. package/dist/cjs/build-cloud/GodotBuildCloud.js +722 -0
  20. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +1 -0
  21. package/dist/cjs/build-cloud/UnityBuildCloud.js +652 -0
  22. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +1 -0
  23. package/dist/cjs/build-cloud/UnrealBuildCloud.js +674 -0
  24. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +1 -0
  25. package/dist/cjs/core/EventBus.js +2 -1
  26. package/dist/cjs/core/EventBus.js.map +1 -1
  27. package/dist/cjs/core/GameConfig.js +1 -1
  28. package/dist/cjs/core/GameConfig.js.map +1 -1
  29. package/dist/cjs/core/GameLoop.js +6 -3
  30. package/dist/cjs/core/GameLoop.js.map +1 -1
  31. package/dist/cjs/core/ServiceLocator.js +1 -2
  32. package/dist/cjs/core/ServiceLocator.js.map +1 -1
  33. package/dist/cjs/devtools/DevTools.js +73 -43
  34. package/dist/cjs/devtools/DevTools.js.map +1 -1
  35. package/dist/cjs/devtools/DeveloperExperience.js +84 -42
  36. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -1
  37. package/dist/cjs/devtools/GameplayAnalytics.js +71 -43
  38. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -1
  39. package/dist/cjs/dialogue/DialogueSystem.js +153 -129
  40. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -1
  41. package/dist/cjs/docs/DocGenerator.js +70 -28
  42. package/dist/cjs/docs/DocGenerator.js.map +1 -1
  43. package/dist/cjs/ecs/World.js +159 -33
  44. package/dist/cjs/ecs/World.js.map +1 -1
  45. package/dist/cjs/editor/AchievementEditor.js +650 -0
  46. package/dist/cjs/editor/AchievementEditor.js.map +1 -0
  47. package/dist/cjs/editor/AdvancedEditor.js +95 -23
  48. package/dist/cjs/editor/AdvancedEditor.js.map +1 -1
  49. package/dist/cjs/editor/AnimationRetargeting.js +742 -0
  50. package/dist/cjs/editor/AnimationRetargeting.js.map +1 -0
  51. package/dist/cjs/editor/AssetBrowser.js +1191 -0
  52. package/dist/cjs/editor/AssetBrowser.js.map +1 -0
  53. package/dist/cjs/editor/AssetManager.js +22 -14
  54. package/dist/cjs/editor/AssetManager.js.map +1 -1
  55. package/dist/cjs/editor/ConsolePro.js +1092 -0
  56. package/dist/cjs/editor/ConsolePro.js.map +1 -0
  57. package/dist/cjs/editor/CraftingEditor.js +749 -0
  58. package/dist/cjs/editor/CraftingEditor.js.map +1 -0
  59. package/dist/cjs/editor/DebugTools.js +46 -23
  60. package/dist/cjs/editor/DebugTools.js.map +1 -1
  61. package/dist/cjs/editor/DialogueSystem.js +924 -0
  62. package/dist/cjs/editor/DialogueSystem.js.map +1 -0
  63. package/dist/cjs/editor/LeaderboardSystem.js +496 -0
  64. package/dist/cjs/editor/LeaderboardSystem.js.map +1 -0
  65. package/dist/cjs/editor/NiceGameEditor.js +532 -142
  66. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  67. package/dist/cjs/editor/PrefabSystem.js +864 -0
  68. package/dist/cjs/editor/PrefabSystem.js.map +1 -0
  69. package/dist/cjs/editor/ProfilerPanel.js +716 -0
  70. package/dist/cjs/editor/ProfilerPanel.js.map +1 -0
  71. package/dist/cjs/editor/QuestEditor.js +850 -0
  72. package/dist/cjs/editor/QuestEditor.js.map +1 -0
  73. package/dist/cjs/editor/ReplaySystem.js +655 -0
  74. package/dist/cjs/editor/ReplaySystem.js.map +1 -0
  75. package/dist/cjs/editor/SceneEditor.js +33 -13
  76. package/dist/cjs/editor/SceneEditor.js.map +1 -1
  77. package/dist/cjs/editor/ScreenshotMode.js +710 -0
  78. package/dist/cjs/editor/ScreenshotMode.js.map +1 -0
  79. package/dist/cjs/editor/ShaderGraph.js +7 -6
  80. package/dist/cjs/editor/ShaderGraph.js.map +1 -1
  81. package/dist/cjs/editor/TimelineEditor.js +36 -30
  82. package/dist/cjs/editor/TimelineEditor.js.map +1 -1
  83. package/dist/cjs/editor/UndoRedoPro.js +920 -0
  84. package/dist/cjs/editor/UndoRedoPro.js.map +1 -0
  85. package/dist/cjs/editor/VRARMode.js +658 -0
  86. package/dist/cjs/editor/VRARMode.js.map +1 -0
  87. package/dist/cjs/engine/NiceGameEngine.js +12 -10
  88. package/dist/cjs/engine/NiceGameEngine.js.map +1 -1
  89. package/dist/cjs/engine/SaveSystemV2.js +73 -37
  90. package/dist/cjs/engine/SaveSystemV2.js.map +1 -1
  91. package/dist/cjs/enterprise/Enterprise.js +92 -44
  92. package/dist/cjs/enterprise/Enterprise.js.map +1 -1
  93. package/dist/cjs/export/BevyExporter.js +998 -0
  94. package/dist/cjs/export/BevyExporter.js.map +1 -0
  95. package/dist/cjs/export/CocosExporter.js +706 -0
  96. package/dist/cjs/export/CocosExporter.js.map +1 -0
  97. package/dist/cjs/export/Construct3Exporter.js +832 -0
  98. package/dist/cjs/export/Construct3Exporter.js.map +1 -0
  99. package/dist/cjs/export/DefoldExporter.js +1106 -0
  100. package/dist/cjs/export/DefoldExporter.js.map +1 -0
  101. package/dist/cjs/export/GDevelopExporter.js +748 -0
  102. package/dist/cjs/export/GDevelopExporter.js.map +1 -0
  103. package/dist/cjs/export/GameMakerExporter.js +846 -0
  104. package/dist/cjs/export/GameMakerExporter.js.map +1 -0
  105. package/dist/cjs/export/GodotExporter.js +45 -50
  106. package/dist/cjs/export/GodotExporter.js.map +1 -1
  107. package/dist/cjs/export/MinecraftBedrockExporter.js +606 -0
  108. package/dist/cjs/export/MinecraftBedrockExporter.js.map +1 -0
  109. package/dist/cjs/export/MonoGameExporter.js +1334 -0
  110. package/dist/cjs/export/MonoGameExporter.js.map +1 -0
  111. package/dist/cjs/export/Pico8Exporter.js +846 -0
  112. package/dist/cjs/export/Pico8Exporter.js.map +1 -0
  113. package/dist/cjs/export/PlatformExporter.js +4 -5
  114. package/dist/cjs/export/PlatformExporter.js.map +1 -1
  115. package/dist/cjs/export/RPGMakerExporter.js +906 -0
  116. package/dist/cjs/export/RPGMakerExporter.js.map +1 -0
  117. package/dist/cjs/export/RobloxExporter.js +943 -0
  118. package/dist/cjs/export/RobloxExporter.js.map +1 -0
  119. package/dist/cjs/export/Solar2DExporter.js +1283 -0
  120. package/dist/cjs/export/Solar2DExporter.js.map +1 -0
  121. package/dist/cjs/export/ThreeJSExporter.js +52 -55
  122. package/dist/cjs/export/ThreeJSExporter.js.map +1 -1
  123. package/dist/cjs/export/Tic80Exporter.js +1315 -0
  124. package/dist/cjs/export/Tic80Exporter.js.map +1 -0
  125. package/dist/cjs/export/UnityExporter.js +41 -56
  126. package/dist/cjs/export/UnityExporter.js.map +1 -1
  127. package/dist/cjs/export/UnrealExporter.js +962 -0
  128. package/dist/cjs/export/UnrealExporter.js.map +1 -0
  129. package/dist/cjs/export/WebExporter.js +42 -50
  130. package/dist/cjs/export/WebExporter.js.map +1 -1
  131. package/dist/cjs/export/index.js +50 -2
  132. package/dist/cjs/export/index.js.map +1 -1
  133. package/dist/cjs/godot-integration/GodotAssetLibrary.js +716 -0
  134. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +1 -0
  135. package/dist/cjs/godot-integration/GodotImport.js +1069 -0
  136. package/dist/cjs/godot-integration/GodotImport.js.map +1 -0
  137. package/dist/cjs/godot-integration/GodotLiveLink.js +962 -0
  138. package/dist/cjs/godot-integration/GodotLiveLink.js.map +1 -0
  139. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +668 -0
  140. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  141. package/dist/cjs/i18n/I18n.js +56 -30
  142. package/dist/cjs/i18n/I18n.js.map +1 -1
  143. package/dist/cjs/i18n/useTranslation.js +4 -4
  144. package/dist/cjs/i18n/useTranslation.js.map +1 -1
  145. package/dist/cjs/import/AsepriteImporter.js +15 -19
  146. package/dist/cjs/import/AsepriteImporter.js.map +1 -1
  147. package/dist/cjs/import/DragonBonesImporter.js +36 -40
  148. package/dist/cjs/import/DragonBonesImporter.js.map +1 -1
  149. package/dist/cjs/import/GameMakerImporter.js +11 -17
  150. package/dist/cjs/import/GameMakerImporter.js.map +1 -1
  151. package/dist/cjs/import/GodotSceneImporter.js +43 -29
  152. package/dist/cjs/import/GodotSceneImporter.js.map +1 -1
  153. package/dist/cjs/import/LDtkImporter.js +16 -17
  154. package/dist/cjs/import/LDtkImporter.js.map +1 -1
  155. package/dist/cjs/import/Live2DImporter.js +16 -19
  156. package/dist/cjs/import/Live2DImporter.js.map +1 -1
  157. package/dist/cjs/import/NdgFormat.js +28 -35
  158. package/dist/cjs/import/NdgFormat.js.map +1 -1
  159. package/dist/cjs/import/OgmoImporter.js +16 -18
  160. package/dist/cjs/import/OgmoImporter.js.map +1 -1
  161. package/dist/cjs/import/RPGMakerImporter.js +5 -6
  162. package/dist/cjs/import/RPGMakerImporter.js.map +1 -1
  163. package/dist/cjs/import/SceneImporter.js +23 -13
  164. package/dist/cjs/import/SceneImporter.js.map +1 -1
  165. package/dist/cjs/import/SpineImporter.js +20 -20
  166. package/dist/cjs/import/SpineImporter.js.map +1 -1
  167. package/dist/cjs/import/SpriterImporter.js +38 -46
  168. package/dist/cjs/import/SpriterImporter.js.map +1 -1
  169. package/dist/cjs/import/TiledMapImporter.js +20 -24
  170. package/dist/cjs/import/TiledMapImporter.js.map +1 -1
  171. package/dist/cjs/import/UnitySceneImporter.js +15 -15
  172. package/dist/cjs/import/UnitySceneImporter.js.map +1 -1
  173. package/dist/cjs/index.js +516 -4
  174. package/dist/cjs/index.js.map +1 -1
  175. package/dist/cjs/input/GamepadNavigation.js +82 -47
  176. package/dist/cjs/input/GamepadNavigation.js.map +1 -1
  177. package/dist/cjs/input/InputManager.js +107 -52
  178. package/dist/cjs/input/InputManager.js.map +1 -1
  179. package/dist/cjs/input/useGamepads.js +35 -29
  180. package/dist/cjs/input/useGamepads.js.map +1 -1
  181. package/dist/cjs/integration/IconSprite.js +39 -21
  182. package/dist/cjs/integration/IconSprite.js.map +1 -1
  183. package/dist/cjs/inventory/InventorySystem.js +218 -127
  184. package/dist/cjs/inventory/InventorySystem.js.map +1 -1
  185. package/dist/cjs/kids/KidMode.js +491 -78
  186. package/dist/cjs/kids/KidMode.js.map +1 -1
  187. package/dist/cjs/kids/KidTools.js +154 -48
  188. package/dist/cjs/kids/KidTools.js.map +1 -1
  189. package/dist/cjs/monetization/Monetization.js +47 -35
  190. package/dist/cjs/monetization/Monetization.js.map +1 -1
  191. package/dist/cjs/multiplayer/LocalMultiplayer.js +48 -26
  192. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -1
  193. package/dist/cjs/multiplayer/MiniGameTypes.js +23 -10
  194. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -1
  195. package/dist/cjs/native-engine/AssetPipeline.js +540 -0
  196. package/dist/cjs/native-engine/AssetPipeline.js.map +1 -0
  197. package/dist/cjs/native-engine/AudioEngine.js +825 -0
  198. package/dist/cjs/native-engine/AudioEngine.js.map +1 -0
  199. package/dist/cjs/native-engine/InputSystem.js +1175 -0
  200. package/dist/cjs/native-engine/InputSystem.js.map +1 -0
  201. package/dist/cjs/native-engine/NetworkingSystem.js +825 -0
  202. package/dist/cjs/native-engine/NetworkingSystem.js.map +1 -0
  203. package/dist/cjs/native-engine/PhysicsEngine.js +622 -0
  204. package/dist/cjs/native-engine/PhysicsEngine.js.map +1 -0
  205. package/dist/cjs/native-engine/RenderingEngine.js +371 -0
  206. package/dist/cjs/native-engine/RenderingEngine.js.map +1 -0
  207. package/dist/cjs/native-engine/SceneGraph.js +862 -0
  208. package/dist/cjs/native-engine/SceneGraph.js.map +1 -0
  209. package/dist/cjs/network/MultiplayerTransport.js +63 -33
  210. package/dist/cjs/network/MultiplayerTransport.js.map +1 -1
  211. package/dist/cjs/network/Networking.js +87 -62
  212. package/dist/cjs/network/Networking.js.map +1 -1
  213. package/dist/cjs/pathfinding/Pathfinding.js +71 -26
  214. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -1
  215. package/dist/cjs/performance/AssetStreaming.js +656 -0
  216. package/dist/cjs/performance/AssetStreaming.js.map +1 -0
  217. package/dist/cjs/performance/BenchmarkSuite.js +37 -24
  218. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -1
  219. package/dist/cjs/performance/DeltaCompression.js +566 -0
  220. package/dist/cjs/performance/DeltaCompression.js.map +1 -0
  221. package/dist/cjs/performance/DeterministicPhysics.js +603 -0
  222. package/dist/cjs/performance/DeterministicPhysics.js.map +1 -0
  223. package/dist/cjs/performance/ECSOptimization.js +726 -0
  224. package/dist/cjs/performance/ECSOptimization.js.map +1 -0
  225. package/dist/cjs/performance/HotReload.js +525 -0
  226. package/dist/cjs/performance/HotReload.js.map +1 -0
  227. package/dist/cjs/performance/InputRecording.js +590 -0
  228. package/dist/cjs/performance/InputRecording.js.map +1 -0
  229. package/dist/cjs/performance/InterestManagement.js +532 -0
  230. package/dist/cjs/performance/InterestManagement.js.map +1 -0
  231. package/dist/cjs/performance/LocalizationRuntime.js +472 -0
  232. package/dist/cjs/performance/LocalizationRuntime.js.map +1 -0
  233. package/dist/cjs/performance/MemoryManagement.js +487 -0
  234. package/dist/cjs/performance/MemoryManagement.js.map +1 -0
  235. package/dist/cjs/performance/ModSupport.js +531 -0
  236. package/dist/cjs/performance/ModSupport.js.map +1 -0
  237. package/dist/cjs/performance/MultiThreadedPhysics.js +500 -0
  238. package/dist/cjs/performance/MultiThreadedPhysics.js.map +1 -0
  239. package/dist/cjs/performance/NetworkPrediction.js +521 -0
  240. package/dist/cjs/performance/NetworkPrediction.js.map +1 -0
  241. package/dist/cjs/performance/ObjectPooling.js +653 -0
  242. package/dist/cjs/performance/ObjectPooling.js.map +1 -0
  243. package/dist/cjs/performance/Performance.js +64 -25
  244. package/dist/cjs/performance/Performance.js.map +1 -1
  245. package/dist/cjs/performance/PerformanceAdvanced.js +83 -49
  246. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -1
  247. package/dist/cjs/performance/SaveSystem.js +574 -0
  248. package/dist/cjs/performance/SaveSystem.js.map +1 -0
  249. package/dist/cjs/performance/WebGPURenderer.js +702 -0
  250. package/dist/cjs/performance/WebGPURenderer.js.map +1 -0
  251. package/dist/cjs/physics/PhysicsAdvanced.js +32 -20
  252. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -1
  253. package/dist/cjs/physics/PhysicsEngine2D.js +63 -36
  254. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -1
  255. package/dist/cjs/plugins/PluginSDK.js +46 -34
  256. package/dist/cjs/plugins/PluginSDK.js.map +1 -1
  257. package/dist/cjs/plugins/PluginTestKit.js +28 -29
  258. package/dist/cjs/plugins/PluginTestKit.js.map +1 -1
  259. package/dist/cjs/procedural/Procedural.js +24 -17
  260. package/dist/cjs/procedural/Procedural.js.map +1 -1
  261. package/dist/cjs/procedural/WorldBuilding.js +187 -55
  262. package/dist/cjs/procedural/WorldBuilding.js.map +1 -1
  263. package/dist/cjs/quest/QuestSystem.js +145 -111
  264. package/dist/cjs/quest/QuestSystem.js.map +1 -1
  265. package/dist/cjs/release/Release.js +142 -31
  266. package/dist/cjs/release/Release.js.map +1 -1
  267. package/dist/cjs/rendering/Camera2D.js +12 -7
  268. package/dist/cjs/rendering/Camera2D.js.map +1 -1
  269. package/dist/cjs/rendering/Renderer2D.js +62 -26
  270. package/dist/cjs/rendering/Renderer2D.js.map +1 -1
  271. package/dist/cjs/rendering/WebGPURenderPipeline.js +60 -31
  272. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -1
  273. package/dist/cjs/runtime3d/Runtime3D.js +80 -55
  274. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -1
  275. package/dist/cjs/runtime3d/SceneEditor3D.js +20 -11
  276. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -1
  277. package/dist/cjs/scene/SceneManager.js +26 -12
  278. package/dist/cjs/scene/SceneManager.js.map +1 -1
  279. package/dist/cjs/scripting/GraphToAST.js +36 -24
  280. package/dist/cjs/scripting/GraphToAST.js.map +1 -1
  281. package/dist/cjs/scripting/LanguageExporter.js +2 -3
  282. package/dist/cjs/scripting/LanguageExporter.js.map +1 -1
  283. package/dist/cjs/scripting/NodeGraph.js +49 -32
  284. package/dist/cjs/scripting/NodeGraph.js.map +1 -1
  285. package/dist/cjs/scripting/ScriptAST.js +19 -6
  286. package/dist/cjs/scripting/ScriptAST.js.map +1 -1
  287. package/dist/cjs/scripting/VisualScripting2.js +13 -12
  288. package/dist/cjs/scripting/VisualScripting2.js.map +1 -1
  289. package/dist/cjs/scripting/exporters/CSharpExporter.js +16 -16
  290. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -1
  291. package/dist/cjs/scripting/exporters/GDScriptExporter.js +3 -6
  292. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -1
  293. package/dist/cjs/scripting/exporters/LuaExporter.js +5 -9
  294. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -1
  295. package/dist/cjs/scripting/exporters/PythonExporter.js +7 -13
  296. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -1
  297. package/dist/cjs/scripting/exporters/RustExporter.js +7 -14
  298. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -1
  299. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +28 -29
  300. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -1
  301. package/dist/cjs/social/Social.js +27 -20
  302. package/dist/cjs/social/Social.js.map +1 -1
  303. package/dist/cjs/systems/LightingSystem.js +980 -0
  304. package/dist/cjs/systems/LightingSystem.js.map +1 -0
  305. package/dist/cjs/systems/ParticleSystem2.js +34 -17
  306. package/dist/cjs/systems/ParticleSystem2.js.map +1 -1
  307. package/dist/cjs/systems/PhysicsDebugSystem.js +1228 -0
  308. package/dist/cjs/systems/PhysicsDebugSystem.js.map +1 -0
  309. package/dist/cjs/systems/TerrainSystem.js +1137 -0
  310. package/dist/cjs/systems/TerrainSystem.js.map +1 -0
  311. package/dist/cjs/templates/ActionTemplates.js +144 -24
  312. package/dist/cjs/templates/ActionTemplates.js.map +1 -1
  313. package/dist/cjs/templates/FightingTemplate.js +536 -0
  314. package/dist/cjs/templates/FightingTemplate.js.map +1 -0
  315. package/dist/cjs/templates/MetroidvaniaTemplate.js +523 -0
  316. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +1 -0
  317. package/dist/cjs/templates/PartyTemplates.js +60 -28
  318. package/dist/cjs/templates/PartyTemplates.js.map +1 -1
  319. package/dist/cjs/templates/PuzzleTemplates.js +63 -22
  320. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -1
  321. package/dist/cjs/templates/RPGTemplates.js +29 -15
  322. package/dist/cjs/templates/RPGTemplates.js.map +1 -1
  323. package/dist/cjs/templates/SportsTemplates.js +41 -17
  324. package/dist/cjs/templates/SportsTemplates.js.map +1 -1
  325. package/dist/cjs/templates/StrategyTemplates.js +45 -18
  326. package/dist/cjs/templates/StrategyTemplates.js.map +1 -1
  327. package/dist/cjs/templates/SurvivalTemplate.js +479 -0
  328. package/dist/cjs/templates/SurvivalTemplate.js.map +1 -0
  329. package/dist/cjs/templates/WaveDefense.js +139 -52
  330. package/dist/cjs/templates/WaveDefense.js.map +1 -1
  331. package/dist/cjs/tilemap/Tilemap.js +48 -32
  332. package/dist/cjs/tilemap/Tilemap.js.map +1 -1
  333. package/dist/cjs/tutorials/TutorialBranching.js +111 -42
  334. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -1
  335. package/dist/cjs/tutorials/TutorialEngine.js +152 -80
  336. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -1
  337. package/dist/cjs/tutorials/TutorialOverlay.js +117 -40
  338. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -1
  339. package/dist/cjs/ui/GameUI.js +69 -42
  340. package/dist/cjs/ui/GameUI.js.map +1 -1
  341. package/dist/cjs/unity-integration/UnityAssetStore.js +754 -0
  342. package/dist/cjs/unity-integration/UnityAssetStore.js.map +1 -0
  343. package/dist/cjs/unity-integration/UnityImport.js +1252 -0
  344. package/dist/cjs/unity-integration/UnityImport.js.map +1 -0
  345. package/dist/cjs/unity-integration/UnityLiveLink.js +1022 -0
  346. package/dist/cjs/unity-integration/UnityLiveLink.js.map +1 -0
  347. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +796 -0
  348. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  349. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +833 -0
  350. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  351. package/dist/cjs/unreal-integration/UnrealImport.js +442 -0
  352. package/dist/cjs/unreal-integration/UnrealImport.js.map +1 -0
  353. package/dist/cjs/unreal-integration/UnrealLiveLink.js +1186 -0
  354. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +1 -0
  355. package/dist/cjs/unreal-integration/UnrealMarketplace.js +497 -0
  356. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +1 -0
  357. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +835 -0
  358. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  359. package/dist/cjs/xr/ARVR.js +32 -9
  360. package/dist/cjs/xr/ARVR.js.map +1 -1
  361. package/dist/esm/accessibility/Accessibility.js +55 -20
  362. package/dist/esm/accessibility/Accessibility.js.map +1 -1
  363. package/dist/esm/ai/AI.js +74 -40
  364. package/dist/esm/ai/AI.js.map +1 -1
  365. package/dist/esm/ai/BehaviorTree.js +39 -47
  366. package/dist/esm/ai/BehaviorTree.js.map +1 -1
  367. package/dist/esm/ai/StateMachine.js +65 -99
  368. package/dist/esm/ai/StateMachine.js.map +1 -1
  369. package/dist/esm/animation/Animation.js +58 -34
  370. package/dist/esm/animation/Animation.js.map +1 -1
  371. package/dist/esm/audio/AudioAdvanced.js +71 -37
  372. package/dist/esm/audio/AudioAdvanced.js.map +1 -1
  373. package/dist/esm/audio/AudioBridge.js +61 -49
  374. package/dist/esm/audio/AudioBridge.js.map +1 -1
  375. package/dist/esm/audio/AudioManager.js +45 -29
  376. package/dist/esm/audio/AudioManager.js.map +1 -1
  377. package/dist/esm/build-cloud/BuildOrchestration.js +1129 -0
  378. package/dist/esm/build-cloud/BuildOrchestration.js.map +1 -0
  379. package/dist/esm/build-cloud/GodotBuildCloud.js +715 -0
  380. package/dist/esm/build-cloud/GodotBuildCloud.js.map +1 -0
  381. package/dist/esm/build-cloud/UnityBuildCloud.js +643 -0
  382. package/dist/esm/build-cloud/UnityBuildCloud.js.map +1 -0
  383. package/dist/esm/build-cloud/UnrealBuildCloud.js +668 -0
  384. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +1 -0
  385. package/dist/esm/core/EventBus.js +2 -1
  386. package/dist/esm/core/EventBus.js.map +1 -1
  387. package/dist/esm/core/GameConfig.js +1 -1
  388. package/dist/esm/core/GameConfig.js.map +1 -1
  389. package/dist/esm/core/GameLoop.js +6 -3
  390. package/dist/esm/core/GameLoop.js.map +1 -1
  391. package/dist/esm/core/ServiceLocator.js +1 -2
  392. package/dist/esm/core/ServiceLocator.js.map +1 -1
  393. package/dist/esm/devtools/DevTools.js +73 -43
  394. package/dist/esm/devtools/DevTools.js.map +1 -1
  395. package/dist/esm/devtools/DeveloperExperience.js +84 -42
  396. package/dist/esm/devtools/DeveloperExperience.js.map +1 -1
  397. package/dist/esm/devtools/GameplayAnalytics.js +71 -43
  398. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -1
  399. package/dist/esm/dialogue/DialogueSystem.js +153 -129
  400. package/dist/esm/dialogue/DialogueSystem.js.map +1 -1
  401. package/dist/esm/docs/DocGenerator.js +70 -28
  402. package/dist/esm/docs/DocGenerator.js.map +1 -1
  403. package/dist/esm/ecs/World.js +159 -33
  404. package/dist/esm/ecs/World.js.map +1 -1
  405. package/dist/esm/editor/AchievementEditor.js +645 -0
  406. package/dist/esm/editor/AchievementEditor.js.map +1 -0
  407. package/dist/esm/editor/AdvancedEditor.js +95 -23
  408. package/dist/esm/editor/AdvancedEditor.js.map +1 -1
  409. package/dist/esm/editor/AnimationRetargeting.js +738 -0
  410. package/dist/esm/editor/AnimationRetargeting.js.map +1 -0
  411. package/dist/esm/editor/AssetBrowser.js +1184 -0
  412. package/dist/esm/editor/AssetBrowser.js.map +1 -0
  413. package/dist/esm/editor/AssetManager.js +22 -14
  414. package/dist/esm/editor/AssetManager.js.map +1 -1
  415. package/dist/esm/editor/ConsolePro.js +1085 -0
  416. package/dist/esm/editor/ConsolePro.js.map +1 -0
  417. package/dist/esm/editor/CraftingEditor.js +744 -0
  418. package/dist/esm/editor/CraftingEditor.js.map +1 -0
  419. package/dist/esm/editor/DebugTools.js +46 -23
  420. package/dist/esm/editor/DebugTools.js.map +1 -1
  421. package/dist/esm/editor/DialogueSystem.js +918 -0
  422. package/dist/esm/editor/DialogueSystem.js.map +1 -0
  423. package/dist/esm/editor/LeaderboardSystem.js +491 -0
  424. package/dist/esm/editor/LeaderboardSystem.js.map +1 -0
  425. package/dist/esm/editor/NiceGameEditor.js +532 -142
  426. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  427. package/dist/esm/editor/PrefabSystem.js +858 -0
  428. package/dist/esm/editor/PrefabSystem.js.map +1 -0
  429. package/dist/esm/editor/ProfilerPanel.js +710 -0
  430. package/dist/esm/editor/ProfilerPanel.js.map +1 -0
  431. package/dist/esm/editor/QuestEditor.js +846 -0
  432. package/dist/esm/editor/QuestEditor.js.map +1 -0
  433. package/dist/esm/editor/ReplaySystem.js +648 -0
  434. package/dist/esm/editor/ReplaySystem.js.map +1 -0
  435. package/dist/esm/editor/SceneEditor.js +33 -13
  436. package/dist/esm/editor/SceneEditor.js.map +1 -1
  437. package/dist/esm/editor/ScreenshotMode.js +702 -0
  438. package/dist/esm/editor/ScreenshotMode.js.map +1 -0
  439. package/dist/esm/editor/ShaderGraph.js +7 -6
  440. package/dist/esm/editor/ShaderGraph.js.map +1 -1
  441. package/dist/esm/editor/TimelineEditor.js +37 -30
  442. package/dist/esm/editor/TimelineEditor.js.map +1 -1
  443. package/dist/esm/editor/UndoRedoPro.js +914 -0
  444. package/dist/esm/editor/UndoRedoPro.js.map +1 -0
  445. package/dist/esm/editor/VRARMode.js +653 -0
  446. package/dist/esm/editor/VRARMode.js.map +1 -0
  447. package/dist/esm/engine/NiceGameEngine.js +12 -10
  448. package/dist/esm/engine/NiceGameEngine.js.map +1 -1
  449. package/dist/esm/engine/SaveSystemV2.js +73 -37
  450. package/dist/esm/engine/SaveSystemV2.js.map +1 -1
  451. package/dist/esm/enterprise/Enterprise.js +92 -44
  452. package/dist/esm/enterprise/Enterprise.js.map +1 -1
  453. package/dist/esm/export/BevyExporter.js +995 -0
  454. package/dist/esm/export/BevyExporter.js.map +1 -0
  455. package/dist/esm/export/CocosExporter.js +703 -0
  456. package/dist/esm/export/CocosExporter.js.map +1 -0
  457. package/dist/esm/export/Construct3Exporter.js +829 -0
  458. package/dist/esm/export/Construct3Exporter.js.map +1 -0
  459. package/dist/esm/export/DefoldExporter.js +1103 -0
  460. package/dist/esm/export/DefoldExporter.js.map +1 -0
  461. package/dist/esm/export/GDevelopExporter.js +745 -0
  462. package/dist/esm/export/GDevelopExporter.js.map +1 -0
  463. package/dist/esm/export/GameMakerExporter.js +843 -0
  464. package/dist/esm/export/GameMakerExporter.js.map +1 -0
  465. package/dist/esm/export/GodotExporter.js +45 -50
  466. package/dist/esm/export/GodotExporter.js.map +1 -1
  467. package/dist/esm/export/MinecraftBedrockExporter.js +603 -0
  468. package/dist/esm/export/MinecraftBedrockExporter.js.map +1 -0
  469. package/dist/esm/export/MonoGameExporter.js +1331 -0
  470. package/dist/esm/export/MonoGameExporter.js.map +1 -0
  471. package/dist/esm/export/Pico8Exporter.js +843 -0
  472. package/dist/esm/export/Pico8Exporter.js.map +1 -0
  473. package/dist/esm/export/PlatformExporter.js +4 -5
  474. package/dist/esm/export/PlatformExporter.js.map +1 -1
  475. package/dist/esm/export/RPGMakerExporter.js +903 -0
  476. package/dist/esm/export/RPGMakerExporter.js.map +1 -0
  477. package/dist/esm/export/RobloxExporter.js +940 -0
  478. package/dist/esm/export/RobloxExporter.js.map +1 -0
  479. package/dist/esm/export/Solar2DExporter.js +1280 -0
  480. package/dist/esm/export/Solar2DExporter.js.map +1 -0
  481. package/dist/esm/export/ThreeJSExporter.js +52 -55
  482. package/dist/esm/export/ThreeJSExporter.js.map +1 -1
  483. package/dist/esm/export/Tic80Exporter.js +1312 -0
  484. package/dist/esm/export/Tic80Exporter.js.map +1 -0
  485. package/dist/esm/export/UnityExporter.js +41 -56
  486. package/dist/esm/export/UnityExporter.js.map +1 -1
  487. package/dist/esm/export/UnrealExporter.js +959 -0
  488. package/dist/esm/export/UnrealExporter.js.map +1 -0
  489. package/dist/esm/export/WebExporter.js +42 -50
  490. package/dist/esm/export/WebExporter.js.map +1 -1
  491. package/dist/esm/export/index.js +38 -2
  492. package/dist/esm/export/index.js.map +1 -1
  493. package/dist/esm/godot-integration/GodotAssetLibrary.js +711 -0
  494. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +1 -0
  495. package/dist/esm/godot-integration/GodotImport.js +1062 -0
  496. package/dist/esm/godot-integration/GodotImport.js.map +1 -0
  497. package/dist/esm/godot-integration/GodotLiveLink.js +958 -0
  498. package/dist/esm/godot-integration/GodotLiveLink.js.map +1 -0
  499. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +666 -0
  500. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  501. package/dist/esm/i18n/I18n.js +56 -30
  502. package/dist/esm/i18n/I18n.js.map +1 -1
  503. package/dist/esm/i18n/useTranslation.js +4 -4
  504. package/dist/esm/i18n/useTranslation.js.map +1 -1
  505. package/dist/esm/import/AsepriteImporter.js +15 -19
  506. package/dist/esm/import/AsepriteImporter.js.map +1 -1
  507. package/dist/esm/import/DragonBonesImporter.js +36 -40
  508. package/dist/esm/import/DragonBonesImporter.js.map +1 -1
  509. package/dist/esm/import/GameMakerImporter.js +11 -17
  510. package/dist/esm/import/GameMakerImporter.js.map +1 -1
  511. package/dist/esm/import/GodotSceneImporter.js +43 -29
  512. package/dist/esm/import/GodotSceneImporter.js.map +1 -1
  513. package/dist/esm/import/LDtkImporter.js +16 -17
  514. package/dist/esm/import/LDtkImporter.js.map +1 -1
  515. package/dist/esm/import/Live2DImporter.js +16 -19
  516. package/dist/esm/import/Live2DImporter.js.map +1 -1
  517. package/dist/esm/import/NdgFormat.js +28 -35
  518. package/dist/esm/import/NdgFormat.js.map +1 -1
  519. package/dist/esm/import/OgmoImporter.js +16 -18
  520. package/dist/esm/import/OgmoImporter.js.map +1 -1
  521. package/dist/esm/import/RPGMakerImporter.js +5 -6
  522. package/dist/esm/import/RPGMakerImporter.js.map +1 -1
  523. package/dist/esm/import/SceneImporter.js +23 -13
  524. package/dist/esm/import/SceneImporter.js.map +1 -1
  525. package/dist/esm/import/SpineImporter.js +20 -20
  526. package/dist/esm/import/SpineImporter.js.map +1 -1
  527. package/dist/esm/import/SpriterImporter.js +38 -46
  528. package/dist/esm/import/SpriterImporter.js.map +1 -1
  529. package/dist/esm/import/TiledMapImporter.js +20 -24
  530. package/dist/esm/import/TiledMapImporter.js.map +1 -1
  531. package/dist/esm/import/UnitySceneImporter.js +15 -15
  532. package/dist/esm/import/UnitySceneImporter.js.map +1 -1
  533. package/dist/esm/index.js +76 -3
  534. package/dist/esm/index.js.map +1 -1
  535. package/dist/esm/input/GamepadNavigation.js +82 -47
  536. package/dist/esm/input/GamepadNavigation.js.map +1 -1
  537. package/dist/esm/input/InputManager.js +107 -52
  538. package/dist/esm/input/InputManager.js.map +1 -1
  539. package/dist/esm/input/useGamepads.js +35 -29
  540. package/dist/esm/input/useGamepads.js.map +1 -1
  541. package/dist/esm/integration/IconSprite.js +39 -21
  542. package/dist/esm/integration/IconSprite.js.map +1 -1
  543. package/dist/esm/inventory/InventorySystem.js +218 -127
  544. package/dist/esm/inventory/InventorySystem.js.map +1 -1
  545. package/dist/esm/kids/KidMode.js +491 -78
  546. package/dist/esm/kids/KidMode.js.map +1 -1
  547. package/dist/esm/kids/KidTools.js +154 -48
  548. package/dist/esm/kids/KidTools.js.map +1 -1
  549. package/dist/esm/monetization/Monetization.js +47 -35
  550. package/dist/esm/monetization/Monetization.js.map +1 -1
  551. package/dist/esm/multiplayer/LocalMultiplayer.js +48 -26
  552. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -1
  553. package/dist/esm/multiplayer/MiniGameTypes.js +23 -10
  554. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -1
  555. package/dist/esm/native-engine/AssetPipeline.js +537 -0
  556. package/dist/esm/native-engine/AssetPipeline.js.map +1 -0
  557. package/dist/esm/native-engine/AudioEngine.js +822 -0
  558. package/dist/esm/native-engine/AudioEngine.js.map +1 -0
  559. package/dist/esm/native-engine/InputSystem.js +1170 -0
  560. package/dist/esm/native-engine/InputSystem.js.map +1 -0
  561. package/dist/esm/native-engine/NetworkingSystem.js +817 -0
  562. package/dist/esm/native-engine/NetworkingSystem.js.map +1 -0
  563. package/dist/esm/native-engine/PhysicsEngine.js +619 -0
  564. package/dist/esm/native-engine/PhysicsEngine.js.map +1 -0
  565. package/dist/esm/native-engine/RenderingEngine.js +368 -0
  566. package/dist/esm/native-engine/RenderingEngine.js.map +1 -0
  567. package/dist/esm/native-engine/SceneGraph.js +857 -0
  568. package/dist/esm/native-engine/SceneGraph.js.map +1 -0
  569. package/dist/esm/network/MultiplayerTransport.js +63 -33
  570. package/dist/esm/network/MultiplayerTransport.js.map +1 -1
  571. package/dist/esm/network/Networking.js +87 -62
  572. package/dist/esm/network/Networking.js.map +1 -1
  573. package/dist/esm/pathfinding/Pathfinding.js +71 -26
  574. package/dist/esm/pathfinding/Pathfinding.js.map +1 -1
  575. package/dist/esm/performance/AssetStreaming.js +649 -0
  576. package/dist/esm/performance/AssetStreaming.js.map +1 -0
  577. package/dist/esm/performance/BenchmarkSuite.js +37 -24
  578. package/dist/esm/performance/BenchmarkSuite.js.map +1 -1
  579. package/dist/esm/performance/DeltaCompression.js +554 -0
  580. package/dist/esm/performance/DeltaCompression.js.map +1 -0
  581. package/dist/esm/performance/DeterministicPhysics.js +573 -0
  582. package/dist/esm/performance/DeterministicPhysics.js.map +1 -0
  583. package/dist/esm/performance/ECSOptimization.js +716 -0
  584. package/dist/esm/performance/ECSOptimization.js.map +1 -0
  585. package/dist/esm/performance/HotReload.js +517 -0
  586. package/dist/esm/performance/HotReload.js.map +1 -0
  587. package/dist/esm/performance/InputRecording.js +580 -0
  588. package/dist/esm/performance/InputRecording.js.map +1 -0
  589. package/dist/esm/performance/InterestManagement.js +524 -0
  590. package/dist/esm/performance/InterestManagement.js.map +1 -0
  591. package/dist/esm/performance/LocalizationRuntime.js +465 -0
  592. package/dist/esm/performance/LocalizationRuntime.js.map +1 -0
  593. package/dist/esm/performance/MemoryManagement.js +481 -0
  594. package/dist/esm/performance/MemoryManagement.js.map +1 -0
  595. package/dist/esm/performance/ModSupport.js +520 -0
  596. package/dist/esm/performance/ModSupport.js.map +1 -0
  597. package/dist/esm/performance/MultiThreadedPhysics.js +491 -0
  598. package/dist/esm/performance/MultiThreadedPhysics.js.map +1 -0
  599. package/dist/esm/performance/NetworkPrediction.js +508 -0
  600. package/dist/esm/performance/NetworkPrediction.js.map +1 -0
  601. package/dist/esm/performance/ObjectPooling.js +639 -0
  602. package/dist/esm/performance/ObjectPooling.js.map +1 -0
  603. package/dist/esm/performance/Performance.js +64 -25
  604. package/dist/esm/performance/Performance.js.map +1 -1
  605. package/dist/esm/performance/PerformanceAdvanced.js +83 -49
  606. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -1
  607. package/dist/esm/performance/SaveSystem.js +567 -0
  608. package/dist/esm/performance/SaveSystem.js.map +1 -0
  609. package/dist/esm/performance/WebGPURenderer.js +697 -0
  610. package/dist/esm/performance/WebGPURenderer.js.map +1 -0
  611. package/dist/esm/physics/PhysicsAdvanced.js +32 -20
  612. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -1
  613. package/dist/esm/physics/PhysicsEngine2D.js +63 -36
  614. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -1
  615. package/dist/esm/plugins/PluginSDK.js +46 -34
  616. package/dist/esm/plugins/PluginSDK.js.map +1 -1
  617. package/dist/esm/plugins/PluginTestKit.js +28 -29
  618. package/dist/esm/plugins/PluginTestKit.js.map +1 -1
  619. package/dist/esm/procedural/Procedural.js +24 -17
  620. package/dist/esm/procedural/Procedural.js.map +1 -1
  621. package/dist/esm/procedural/WorldBuilding.js +188 -55
  622. package/dist/esm/procedural/WorldBuilding.js.map +1 -1
  623. package/dist/esm/quest/QuestSystem.js +145 -111
  624. package/dist/esm/quest/QuestSystem.js.map +1 -1
  625. package/dist/esm/release/Release.js +142 -31
  626. package/dist/esm/release/Release.js.map +1 -1
  627. package/dist/esm/rendering/Camera2D.js +12 -7
  628. package/dist/esm/rendering/Camera2D.js.map +1 -1
  629. package/dist/esm/rendering/Renderer2D.js +62 -26
  630. package/dist/esm/rendering/Renderer2D.js.map +1 -1
  631. package/dist/esm/rendering/WebGPURenderPipeline.js +60 -31
  632. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -1
  633. package/dist/esm/runtime3d/Runtime3D.js +80 -55
  634. package/dist/esm/runtime3d/Runtime3D.js.map +1 -1
  635. package/dist/esm/runtime3d/SceneEditor3D.js +20 -11
  636. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -1
  637. package/dist/esm/scene/SceneManager.js +26 -12
  638. package/dist/esm/scene/SceneManager.js.map +1 -1
  639. package/dist/esm/scripting/GraphToAST.js +36 -24
  640. package/dist/esm/scripting/GraphToAST.js.map +1 -1
  641. package/dist/esm/scripting/LanguageExporter.js +2 -3
  642. package/dist/esm/scripting/LanguageExporter.js.map +1 -1
  643. package/dist/esm/scripting/NodeGraph.js +49 -32
  644. package/dist/esm/scripting/NodeGraph.js.map +1 -1
  645. package/dist/esm/scripting/ScriptAST.js +19 -6
  646. package/dist/esm/scripting/ScriptAST.js.map +1 -1
  647. package/dist/esm/scripting/VisualScripting2.js +13 -12
  648. package/dist/esm/scripting/VisualScripting2.js.map +1 -1
  649. package/dist/esm/scripting/exporters/CSharpExporter.js +16 -16
  650. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -1
  651. package/dist/esm/scripting/exporters/GDScriptExporter.js +3 -6
  652. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -1
  653. package/dist/esm/scripting/exporters/LuaExporter.js +5 -9
  654. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -1
  655. package/dist/esm/scripting/exporters/PythonExporter.js +7 -13
  656. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -1
  657. package/dist/esm/scripting/exporters/RustExporter.js +7 -14
  658. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -1
  659. package/dist/esm/scripting/exporters/TypeScriptExporter.js +28 -29
  660. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -1
  661. package/dist/esm/social/Social.js +27 -20
  662. package/dist/esm/social/Social.js.map +1 -1
  663. package/dist/esm/systems/LightingSystem.js +968 -0
  664. package/dist/esm/systems/LightingSystem.js.map +1 -0
  665. package/dist/esm/systems/ParticleSystem2.js +34 -17
  666. package/dist/esm/systems/ParticleSystem2.js.map +1 -1
  667. package/dist/esm/systems/PhysicsDebugSystem.js +1219 -0
  668. package/dist/esm/systems/PhysicsDebugSystem.js.map +1 -0
  669. package/dist/esm/systems/TerrainSystem.js +1125 -0
  670. package/dist/esm/systems/TerrainSystem.js.map +1 -0
  671. package/dist/esm/templates/ActionTemplates.js +144 -24
  672. package/dist/esm/templates/ActionTemplates.js.map +1 -1
  673. package/dist/esm/templates/FightingTemplate.js +513 -0
  674. package/dist/esm/templates/FightingTemplate.js.map +1 -0
  675. package/dist/esm/templates/MetroidvaniaTemplate.js +484 -0
  676. package/dist/esm/templates/MetroidvaniaTemplate.js.map +1 -0
  677. package/dist/esm/templates/PartyTemplates.js +60 -28
  678. package/dist/esm/templates/PartyTemplates.js.map +1 -1
  679. package/dist/esm/templates/PuzzleTemplates.js +63 -22
  680. package/dist/esm/templates/PuzzleTemplates.js.map +1 -1
  681. package/dist/esm/templates/RPGTemplates.js +29 -15
  682. package/dist/esm/templates/RPGTemplates.js.map +1 -1
  683. package/dist/esm/templates/SportsTemplates.js +41 -17
  684. package/dist/esm/templates/SportsTemplates.js.map +1 -1
  685. package/dist/esm/templates/StrategyTemplates.js +45 -18
  686. package/dist/esm/templates/StrategyTemplates.js.map +1 -1
  687. package/dist/esm/templates/SurvivalTemplate.js +447 -0
  688. package/dist/esm/templates/SurvivalTemplate.js.map +1 -0
  689. package/dist/esm/templates/WaveDefense.js +139 -52
  690. package/dist/esm/templates/WaveDefense.js.map +1 -1
  691. package/dist/esm/tilemap/Tilemap.js +48 -32
  692. package/dist/esm/tilemap/Tilemap.js.map +1 -1
  693. package/dist/esm/tutorials/TutorialBranching.js +111 -42
  694. package/dist/esm/tutorials/TutorialBranching.js.map +1 -1
  695. package/dist/esm/tutorials/TutorialEngine.js +152 -80
  696. package/dist/esm/tutorials/TutorialEngine.js.map +1 -1
  697. package/dist/esm/tutorials/TutorialOverlay.js +117 -40
  698. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -1
  699. package/dist/esm/ui/GameUI.js +69 -42
  700. package/dist/esm/ui/GameUI.js.map +1 -1
  701. package/dist/esm/unity-integration/UnityAssetStore.js +749 -0
  702. package/dist/esm/unity-integration/UnityAssetStore.js.map +1 -0
  703. package/dist/esm/unity-integration/UnityImport.js +1246 -0
  704. package/dist/esm/unity-integration/UnityImport.js.map +1 -0
  705. package/dist/esm/unity-integration/UnityLiveLink.js +1017 -0
  706. package/dist/esm/unity-integration/UnityLiveLink.js.map +1 -0
  707. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +794 -0
  708. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  709. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +831 -0
  710. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  711. package/dist/esm/unreal-integration/UnrealImport.js +437 -0
  712. package/dist/esm/unreal-integration/UnrealImport.js.map +1 -0
  713. package/dist/esm/unreal-integration/UnrealLiveLink.js +1182 -0
  714. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +1 -0
  715. package/dist/esm/unreal-integration/UnrealMarketplace.js +490 -0
  716. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +1 -0
  717. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +833 -0
  718. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  719. package/dist/esm/xr/ARVR.js +32 -9
  720. package/dist/esm/xr/ARVR.js.map +1 -1
  721. package/package.json +6 -5
@@ -0,0 +1,959 @@
1
+ import { PlatformExporter } from './PlatformExporter.js';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ Unreal Exporter — Unreal Engine Project Export
5
+
6
+ Exports Nice2Dev projects to Unreal Engine format including:
7
+ - C++ header and source files
8
+ - Blueprint-compatible UFUNCTION/UPROPERTY macros
9
+ - Level files (.umap concepts)
10
+ - Data assets and data tables
11
+ ──────────────────────────────────────────────────────────────── */
12
+ const COMPONENT_MAPPINGS = {
13
+ sprite: {
14
+ unrealClass: 'UPaperSpriteComponent',
15
+ header: 'PaperSpriteComponent.h',
16
+ properties: new Map([
17
+ ['texture', 'SourceSprite'],
18
+ ['color', 'SpriteColor'],
19
+ ]),
20
+ },
21
+ transform: {
22
+ unrealClass: 'USceneComponent',
23
+ header: 'Components/SceneComponent.h',
24
+ properties: new Map([
25
+ ['position', 'RelativeLocation'],
26
+ ['rotation', 'RelativeRotation'],
27
+ ['scale', 'RelativeScale3D'],
28
+ ]),
29
+ },
30
+ rigidbody: {
31
+ unrealClass: 'UPhysicsComponent',
32
+ header: 'PhysicsEngine/BodyInstance.h',
33
+ properties: new Map([
34
+ ['mass', 'MassInKg'],
35
+ ['linearDamping', 'LinearDamping'],
36
+ ['angularDamping', 'AngularDamping'],
37
+ ['useGravity', 'bEnableGravity'],
38
+ ]),
39
+ },
40
+ boxCollider: {
41
+ unrealClass: 'UBoxComponent',
42
+ header: 'Components/BoxComponent.h',
43
+ properties: new Map([
44
+ ['size', 'BoxExtent'],
45
+ ['isTrigger', 'bGenerateOverlapEvents'],
46
+ ]),
47
+ },
48
+ sphereCollider: {
49
+ unrealClass: 'USphereComponent',
50
+ header: 'Components/SphereComponent.h',
51
+ properties: new Map([
52
+ ['radius', 'SphereRadius'],
53
+ ['isTrigger', 'bGenerateOverlapEvents'],
54
+ ]),
55
+ },
56
+ capsuleCollider: {
57
+ unrealClass: 'UCapsuleComponent',
58
+ header: 'Components/CapsuleComponent.h',
59
+ properties: new Map([
60
+ ['radius', 'CapsuleRadius'],
61
+ ['height', 'CapsuleHalfHeight'],
62
+ ]),
63
+ },
64
+ audioSource: {
65
+ unrealClass: 'UAudioComponent',
66
+ header: 'Components/AudioComponent.h',
67
+ properties: new Map([
68
+ ['clip', 'Sound'],
69
+ ['volume', 'VolumeMultiplier'],
70
+ ['pitch', 'PitchMultiplier'],
71
+ ['loop', 'bIsLooping'],
72
+ ]),
73
+ },
74
+ camera: {
75
+ unrealClass: 'UCameraComponent',
76
+ header: 'Camera/CameraComponent.h',
77
+ properties: new Map([
78
+ ['fov', 'FieldOfView'],
79
+ ['nearClip', 'OrthoNearClipPlane'],
80
+ ['farClip', 'OrthoFarClipPlane'],
81
+ ]),
82
+ },
83
+ light: {
84
+ unrealClass: 'UPointLightComponent',
85
+ header: 'Components/PointLightComponent.h',
86
+ properties: new Map([
87
+ ['color', 'LightColor'],
88
+ ['intensity', 'Intensity'],
89
+ ['range', 'AttenuationRadius'],
90
+ ]),
91
+ },
92
+ characterMovement: {
93
+ unrealClass: 'UCharacterMovementComponent',
94
+ header: 'GameFramework/CharacterMovementComponent.h',
95
+ properties: new Map([
96
+ ['maxSpeed', 'MaxWalkSpeed'],
97
+ ['jumpHeight', 'JumpZVelocity'],
98
+ ['gravity', 'GravityScale'],
99
+ ]),
100
+ },
101
+ particleSystem: {
102
+ unrealClass: 'UNiagaraComponent',
103
+ header: 'NiagaraComponent.h',
104
+ properties: new Map([
105
+ ['asset', 'Asset'],
106
+ ['autoActivate', 'bAutoActivate'],
107
+ ]),
108
+ },
109
+ };
110
+ function mapNiceValueToUnreal(type, value) {
111
+ switch (type) {
112
+ case 'vector2':
113
+ const v2 = value;
114
+ return `FVector2D(${v2.x}f, ${v2.y}f)`;
115
+ case 'vector3':
116
+ const v3 = value;
117
+ return `FVector(${v3.x}f, ${v3.y}f, ${v3.z ?? 0}f)`;
118
+ case 'color':
119
+ if (typeof value === 'string') {
120
+ // Parse hex color
121
+ const hex = value.replace('#', '');
122
+ const r = parseInt(hex.substr(0, 2), 16) / 255;
123
+ const g = parseInt(hex.substr(2, 2), 16) / 255;
124
+ const b = parseInt(hex.substr(4, 2), 16) / 255;
125
+ return `FLinearColor(${r}f, ${g}f, ${b}f, 1.0f)`;
126
+ }
127
+ return 'FLinearColor::White';
128
+ case 'string':
129
+ return `TEXT("${value}")`;
130
+ case 'bool':
131
+ return value ? 'true' : 'false';
132
+ case 'float':
133
+ return `${value}f`;
134
+ default:
135
+ return String(value);
136
+ }
137
+ }
138
+ /* ── Unreal Exporter Implementation ───────────────────────────── */
139
+ class UnrealExporter extends PlatformExporter {
140
+ constructor() {
141
+ super(...arguments);
142
+ this.platformId = 'unreal';
143
+ this.platformInfo = {
144
+ id: 'unreal',
145
+ name: 'Unreal Engine',
146
+ description: 'Epic Games Unreal Engine 5.x with C++ and Blueprint support',
147
+ website: 'https://unrealengine.com',
148
+ features: [
149
+ '2d-rendering',
150
+ '3d-rendering',
151
+ 'physics-2d',
152
+ 'physics-3d',
153
+ 'audio',
154
+ 'networking',
155
+ 'ui-system',
156
+ 'visual-scripting',
157
+ 'particles',
158
+ 'animation',
159
+ 'vr-ar',
160
+ ],
161
+ supportedAssets: [
162
+ 'sprite',
163
+ 'tileset',
164
+ 'audio',
165
+ 'font',
166
+ 'script',
167
+ 'scene',
168
+ 'prefab',
169
+ 'material',
170
+ 'shader',
171
+ 'animation',
172
+ 'particleSystem',
173
+ 'texture',
174
+ 'data',
175
+ ],
176
+ exportFormats: ['.h', '.cpp', '.uasset', '.umap', '.uplugin'],
177
+ };
178
+ this.moduleName = 'Nice2DevGame';
179
+ this.engineVersion = '5.3';
180
+ this.usedHeaders = new Set();
181
+ }
182
+ async doExport(project, options) {
183
+ const platformOpts = options.platformOptions ?? {};
184
+ this.moduleName =
185
+ platformOpts.moduleName ?? project.name.replace(/[^a-zA-Z0-9]/g, '') ?? 'Nice2DevGame';
186
+ this.engineVersion = platformOpts.engineVersion ?? '5.3';
187
+ // Generate project structure
188
+ await this.generateProjectFiles(project, options);
189
+ await this.generateBuildFiles(project, options);
190
+ await this.generateSourceFiles(project, options);
191
+ await this.generateConfigFiles(project, options);
192
+ // Export scenes as levels
193
+ for (const scene of project.scenes) {
194
+ await this.exportScene(scene, project, options);
195
+ }
196
+ // Export assets
197
+ for (const asset of project.assets) {
198
+ await this.exportAsset(asset, options);
199
+ }
200
+ // Generate Blueprint nodes if requested
201
+ if (platformOpts.generateBlueprints !== false) {
202
+ await this.generateBlueprintLibrary(project, options);
203
+ }
204
+ }
205
+ /* ── Project Structure ──────────────────────────────────────── */
206
+ async generateProjectFiles(project, options) {
207
+ const projectName = options.projectName ?? project.name;
208
+ // .uproject file
209
+ const uproject = {
210
+ FileVersion: 3,
211
+ EngineAssociation: this.engineVersion,
212
+ Category: '',
213
+ Description: project.description ?? '',
214
+ Modules: [
215
+ {
216
+ Name: this.moduleName,
217
+ Type: 'Runtime',
218
+ LoadingPhase: 'Default',
219
+ AdditionalDependencies: ['Engine', 'CoreUObject'],
220
+ },
221
+ ],
222
+ Plugins: [
223
+ { Name: 'Paper2D', Enabled: true },
224
+ { Name: 'EnhancedInput', Enabled: true },
225
+ { Name: 'Niagara', Enabled: true },
226
+ ],
227
+ };
228
+ this.addTextFile(`${projectName}.uproject`, JSON.stringify(uproject, null, 2));
229
+ }
230
+ async generateBuildFiles(project, options) {
231
+ // Module Build.cs
232
+ const buildCs = `// Copyright Nice2Dev. All Rights Reserved.
233
+
234
+ using UnrealBuildTool;
235
+
236
+ public class ${this.moduleName} : ModuleRules
237
+ {
238
+ public ${this.moduleName}(ReadOnlyTargetRules Target) : base(Target)
239
+ {
240
+ PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
241
+
242
+ PublicDependencyModuleNames.AddRange(new string[] {
243
+ "Core",
244
+ "CoreUObject",
245
+ "Engine",
246
+ "InputCore",
247
+ "EnhancedInput",
248
+ "Paper2D",
249
+ "Niagara",
250
+ "PhysicsCore"
251
+ });
252
+
253
+ PrivateDependencyModuleNames.AddRange(new string[] {
254
+ "Slate",
255
+ "SlateCore"
256
+ });
257
+ }
258
+ }
259
+ `;
260
+ this.addTextFile(`Source/${this.moduleName}/${this.moduleName}.Build.cs`, buildCs);
261
+ // Target files
262
+ const gameTarget = `// Copyright Nice2Dev. All Rights Reserved.
263
+
264
+ using UnrealBuildTool;
265
+ using System.Collections.Generic;
266
+
267
+ public class ${this.moduleName}Target : TargetRules
268
+ {
269
+ public ${this.moduleName}Target(TargetInfo Target) : base(Target)
270
+ {
271
+ Type = TargetType.Game;
272
+ DefaultBuildSettings = BuildSettingsVersion.V4;
273
+ IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_3;
274
+ ExtraModuleNames.Add("${this.moduleName}");
275
+ }
276
+ }
277
+ `;
278
+ this.addTextFile(`Source/${this.moduleName}Target.Target.cs`, gameTarget);
279
+ const editorTarget = gameTarget
280
+ .replace('TargetType.Game', 'TargetType.Editor')
281
+ .replace(`${this.moduleName}Target`, `${this.moduleName}EditorTarget`);
282
+ this.addTextFile(`Source/${this.moduleName}EditorTarget.Target.cs`, editorTarget);
283
+ }
284
+ async generateSourceFiles(project, options) {
285
+ // Module header
286
+ const moduleHeader = `// Copyright Nice2Dev. All Rights Reserved.
287
+
288
+ #pragma once
289
+
290
+ #include "CoreMinimal.h"
291
+ #include "Modules/ModuleManager.h"
292
+
293
+ class F${this.moduleName}Module : public IModuleInterface
294
+ {
295
+ public:
296
+ virtual void StartupModule() override;
297
+ virtual void ShutdownModule() override;
298
+ };
299
+ `;
300
+ this.addTextFile(`Source/${this.moduleName}/${this.moduleName}.h`, moduleHeader);
301
+ // Module source
302
+ const moduleSource = `// Copyright Nice2Dev. All Rights Reserved.
303
+
304
+ #include "${this.moduleName}.h"
305
+ #include "Modules/ModuleManager.h"
306
+
307
+ #define LOCTEXT_NAMESPACE "F${this.moduleName}Module"
308
+
309
+ void F${this.moduleName}Module::StartupModule()
310
+ {
311
+ // Module startup logic
312
+ }
313
+
314
+ void F${this.moduleName}Module::ShutdownModule()
315
+ {
316
+ // Module shutdown logic
317
+ }
318
+
319
+ #undef LOCTEXT_NAMESPACE
320
+
321
+ IMPLEMENT_PRIMARY_GAME_MODULE(F${this.moduleName}Module, ${this.moduleName}, "${this.moduleName}");
322
+ `;
323
+ this.addTextFile(`Source/${this.moduleName}/${this.moduleName}.cpp`, moduleSource);
324
+ // Generate game mode
325
+ this.generateGameMode(project, options);
326
+ // Generate entity classes from prefabs
327
+ for (const prefab of project.prefabs) {
328
+ this.generateActorClass(prefab.entity, prefab.name, options);
329
+ }
330
+ }
331
+ generateGameMode(project, options) {
332
+ const className = `A${this.moduleName}GameMode`;
333
+ // Header
334
+ const header = `// Copyright Nice2Dev. All Rights Reserved.
335
+
336
+ #pragma once
337
+
338
+ #include "CoreMinimal.h"
339
+ #include "GameFramework/GameModeBase.h"
340
+ #include "${this.moduleName}GameMode.generated.h"
341
+
342
+ /**
343
+ * Main game mode for ${project.name}
344
+ * Generated from Nice2Dev project
345
+ */
346
+ UCLASS()
347
+ class ${this.moduleName.toUpperCase()}_API ${className} : public AGameModeBase
348
+ {
349
+ GENERATED_BODY()
350
+
351
+ public:
352
+ ${className}();
353
+
354
+ virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
355
+ virtual void StartPlay() override;
356
+
357
+ protected:
358
+ /** Game settings from Nice2Dev project */
359
+ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Settings")
360
+ FVector2D GameResolution;
361
+
362
+ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Settings")
363
+ FLinearColor BackgroundColor;
364
+
365
+ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Physics")
366
+ FVector2D Gravity;
367
+
368
+ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Audio")
369
+ float MasterVolume;
370
+ };
371
+ `;
372
+ this.addTextFile(`Source/${this.moduleName}/${this.moduleName}GameMode.h`, header);
373
+ // Source
374
+ const res = project.settings.resolution;
375
+ const bgColor = project.settings.backgroundColor || '#000000';
376
+ const gravity = project.settings.physics?.gravity ?? { x: 0, y: -980 };
377
+ const masterVol = project.settings.audio?.masterVolume ?? 1.0;
378
+ const source = `// Copyright Nice2Dev. All Rights Reserved.
379
+
380
+ #include "${this.moduleName}GameMode.h"
381
+
382
+ ${className}::${className}()
383
+ {
384
+ // Initialize settings from Nice2Dev project
385
+ GameResolution = FVector2D(${res.width}f, ${res.height}f);
386
+ BackgroundColor = ${mapNiceValueToUnreal('color', bgColor)};
387
+ Gravity = FVector2D(${gravity.x}f, ${gravity.y}f);
388
+ MasterVolume = ${masterVol}f;
389
+ }
390
+
391
+ void ${className}::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
392
+ {
393
+ Super::InitGame(MapName, Options, ErrorMessage);
394
+
395
+ // Apply physics settings
396
+ if (UWorld* World = GetWorld())
397
+ {
398
+ // Physics world configuration would go here
399
+ }
400
+ }
401
+
402
+ void ${className}::StartPlay()
403
+ {
404
+ Super::StartPlay();
405
+
406
+ // Apply audio settings
407
+ // Set master volume through audio device
408
+ }
409
+ `;
410
+ this.addTextFile(`Source/${this.moduleName}/${this.moduleName}GameMode.cpp`, source);
411
+ }
412
+ generateActorClass(entity, className, options) {
413
+ const sanitizedName = className.replace(/[^a-zA-Z0-9]/g, '');
414
+ const fullClassName = `A${sanitizedName}`;
415
+ this.usedHeaders.clear();
416
+ // Collect component info
417
+ const componentDeclarations = [];
418
+ const componentInitializations = [];
419
+ const requiredHeaders = ['CoreMinimal.h', 'GameFramework/Actor.h'];
420
+ // Root component
421
+ componentDeclarations.push(`
422
+ /** Root scene component */
423
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
424
+ USceneComponent* RootSceneComponent;`);
425
+ componentInitializations.push(`
426
+ RootSceneComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootSceneComponent"));
427
+ SetRootComponent(RootSceneComponent);`);
428
+ // Process components
429
+ for (const comp of entity.components) {
430
+ const mapping = COMPONENT_MAPPINGS[comp.type];
431
+ if (mapping) {
432
+ requiredHeaders.push(mapping.header);
433
+ const compVarName = `${comp.type.charAt(0).toUpperCase()}${comp.type.slice(1)}Component`;
434
+ componentDeclarations.push(`
435
+ /** ${comp.type} component */
436
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
437
+ ${mapping.unrealClass}* ${compVarName};`);
438
+ componentInitializations.push(`
439
+ ${compVarName} = CreateDefaultSubobject<${mapping.unrealClass}>(TEXT("${compVarName}"));
440
+ ${compVarName}->SetupAttachment(RootSceneComponent);`);
441
+ // Set properties
442
+ if (comp.properties) {
443
+ for (const [key, value] of Object.entries(comp.properties)) {
444
+ const unrealProp = mapping.properties.get(key);
445
+ if (unrealProp) {
446
+ const convertedValue = this.convertPropertyValue(key, value);
447
+ componentInitializations.push(` ${compVarName}->${unrealProp} = ${convertedValue};`);
448
+ }
449
+ }
450
+ }
451
+ }
452
+ }
453
+ // Header file
454
+ const headerIncludes = [...new Set(requiredHeaders)].map((h) => `#include "${h}"`).join('\n');
455
+ const header = `// Copyright Nice2Dev. All Rights Reserved.
456
+
457
+ #pragma once
458
+
459
+ ${headerIncludes}
460
+ #include "${sanitizedName}.generated.h"
461
+
462
+ /**
463
+ * ${entity.name ?? className}
464
+ * Generated from Nice2Dev prefab
465
+ */
466
+ UCLASS(Blueprintable, BlueprintType)
467
+ class ${this.moduleName.toUpperCase()}_API ${fullClassName} : public AActor
468
+ {
469
+ GENERATED_BODY()
470
+
471
+ public:
472
+ ${fullClassName}();
473
+
474
+ protected:
475
+ virtual void BeginPlay() override;
476
+
477
+ public:
478
+ virtual void Tick(float DeltaTime) override;
479
+
480
+ ${componentDeclarations.join('\n')}
481
+
482
+ // Custom properties from Nice2Dev
483
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Nice2Dev")
484
+ FString EntityId;
485
+
486
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Nice2Dev")
487
+ TArray<FString> Tags;
488
+
489
+ protected:
490
+ /** Called when entity is spawned (from Nice2Dev Start event) */
491
+ UFUNCTION(BlueprintNativeEvent, Category = "Nice2Dev")
492
+ void OnNiceStart();
493
+
494
+ /** Called every frame (from Nice2Dev Update event) */
495
+ UFUNCTION(BlueprintNativeEvent, Category = "Nice2Dev")
496
+ void OnNiceUpdate(float DeltaTime);
497
+ };
498
+ `;
499
+ this.addTextFile(`Source/${this.moduleName}/Actors/${sanitizedName}.h`, header);
500
+ // Source file
501
+ const source = `// Copyright Nice2Dev. All Rights Reserved.
502
+
503
+ #include "Actors/${sanitizedName}.h"
504
+
505
+ ${fullClassName}::${fullClassName}()
506
+ {
507
+ PrimaryActorTick.bCanEverTick = true;
508
+
509
+ EntityId = TEXT("${entity.id}");
510
+ ${componentInitializations.join('\n')}
511
+ }
512
+
513
+ void ${fullClassName}::BeginPlay()
514
+ {
515
+ Super::BeginPlay();
516
+
517
+ // Set initial transform
518
+ SetActorLocation(FVector(${entity.position?.x ?? 0}f, ${entity.position?.y ?? 0}f, 0.0f));
519
+ SetActorRotation(FRotator(0.0f, ${entity.rotation ?? 0}f, 0.0f));
520
+ SetActorScale3D(FVector(${entity.scale?.x ?? 1}f, ${entity.scale?.y ?? 1}f, 1.0f));
521
+
522
+ OnNiceStart();
523
+ }
524
+
525
+ void ${fullClassName}::Tick(float DeltaTime)
526
+ {
527
+ Super::Tick(DeltaTime);
528
+ OnNiceUpdate(DeltaTime);
529
+ }
530
+
531
+ void ${fullClassName}::OnNiceStart_Implementation()
532
+ {
533
+ // Override in Blueprint for custom start logic
534
+ }
535
+
536
+ void ${fullClassName}::OnNiceUpdate_Implementation(float DeltaTime)
537
+ {
538
+ // Override in Blueprint for custom update logic
539
+ }
540
+ `;
541
+ this.addTextFile(`Source/${this.moduleName}/Actors/${sanitizedName}.cpp`, source);
542
+ }
543
+ convertPropertyValue(key, value) {
544
+ if (value === null || value === undefined) {
545
+ return '0';
546
+ }
547
+ if (typeof value === 'object') {
548
+ if ('x' in value && 'y' in value) {
549
+ const v = value;
550
+ if ('z' in v) {
551
+ return `FVector(${v.x}f, ${v.y}f, ${v.z}f)`;
552
+ }
553
+ return `FVector2D(${v.x}f, ${v.y}f)`;
554
+ }
555
+ }
556
+ if (typeof value === 'string') {
557
+ if (value.startsWith('#')) {
558
+ return mapNiceValueToUnreal('color', value);
559
+ }
560
+ return `TEXT("${value}")`;
561
+ }
562
+ if (typeof value === 'boolean') {
563
+ return value ? 'true' : 'false';
564
+ }
565
+ if (typeof value === 'number') {
566
+ return Number.isInteger(value) ? String(value) : `${value}f`;
567
+ }
568
+ return String(value);
569
+ }
570
+ async generateConfigFiles(project, options) {
571
+ // Default Engine.ini
572
+ const engineIni = `[/Script/EngineSettings.GameMapsSettings]
573
+ GameDefaultMap=/Game/Maps/MainMenu
574
+ GlobalDefaultGameMode=/Script/${this.moduleName}.${this.moduleName}GameMode
575
+
576
+ [/Script/Engine.RendererSettings]
577
+ r.DefaultFeature.AntiAliasing=${project.settings.rendering?.antialias ? '2' : '0'}
578
+ r.DefaultFeature.AutoExposure=False
579
+
580
+ [/Script/Engine.PhysicsSettings]
581
+ DefaultGravityZ=${project.settings.physics?.gravity?.y ?? -980}
582
+ `;
583
+ this.addTextFile('Config/DefaultEngine.ini', engineIni);
584
+ // Default Input.ini (Enhanced Input)
585
+ const inputIni = `[/Script/Engine.InputSettings]
586
+ +ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar)
587
+ +ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton)
588
+ +AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
589
+ +AxisMappings=(AxisName="MoveRight",Scale=-1.000000,Key=A)
590
+ +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=W)
591
+ +AxisMappings=(AxisName="MoveUp",Scale=-1.000000,Key=S)
592
+ `;
593
+ this.addTextFile('Config/DefaultInput.ini', inputIni);
594
+ // Default Game.ini
595
+ const gameIni = `[/Script/${this.moduleName}.${this.moduleName}GameMode]
596
+ ; Nice2Dev project: ${project.name}
597
+ ; Version: ${project.version}
598
+ `;
599
+ this.addTextFile('Config/DefaultGame.ini', gameIni);
600
+ }
601
+ /* ── Scene Export ───────────────────────────────────────────── */
602
+ async exportScene(scene, project, options) {
603
+ // Generate level blueprint
604
+ const levelHeader = this.generateLevelBlueprint(scene, project);
605
+ this.addTextFile(`Content/Maps/${scene.name}_LevelScript.h`, levelHeader.header);
606
+ this.addTextFile(`Content/Maps/${scene.name}_LevelScript.cpp`, levelHeader.source);
607
+ // Generate spawn data
608
+ const spawnData = this.generateSpawnData(scene);
609
+ this.addTextFile(`Content/Data/${scene.name}_SpawnData.json`, JSON.stringify(spawnData, null, 2));
610
+ }
611
+ generateLevelBlueprint(scene, project) {
612
+ const className = `A${scene.name.replace(/[^a-zA-Z0-9]/g, '')}LevelScript`;
613
+ const header = `// Copyright Nice2Dev. All Rights Reserved.
614
+
615
+ #pragma once
616
+
617
+ #include "CoreMinimal.h"
618
+ #include "Engine/LevelScriptActor.h"
619
+ #include "${scene.name}_LevelScript.generated.h"
620
+
621
+ /**
622
+ * Level script for ${scene.name}
623
+ * Generated from Nice2Dev scene
624
+ */
625
+ UCLASS()
626
+ class ${this.moduleName.toUpperCase()}_API ${className} : public ALevelScriptActor
627
+ {
628
+ GENERATED_BODY()
629
+
630
+ public:
631
+ ${className}();
632
+
633
+ protected:
634
+ virtual void BeginPlay() override;
635
+
636
+ /** Spawn all entities defined in the Nice2Dev scene */
637
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev")
638
+ void SpawnSceneEntities();
639
+
640
+ private:
641
+ /** Entity spawn data loaded from JSON */
642
+ void LoadSpawnData();
643
+
644
+ TArray<AActor*> SpawnedEntities;
645
+ };
646
+ `;
647
+ const source = `// Copyright Nice2Dev. All Rights Reserved.
648
+
649
+ #include "${scene.name}_LevelScript.h"
650
+ #include "Kismet/GameplayStatics.h"
651
+ #include "Engine/World.h"
652
+
653
+ ${className}::${className}()
654
+ {
655
+ }
656
+
657
+ void ${className}::BeginPlay()
658
+ {
659
+ Super::BeginPlay();
660
+ LoadSpawnData();
661
+ SpawnSceneEntities();
662
+ }
663
+
664
+ void ${className}::LoadSpawnData()
665
+ {
666
+ // Load spawn data from Content/Data/${scene.name}_SpawnData.json
667
+ // In production, use UDataTable or UDataAsset
668
+ }
669
+
670
+ void ${className}::SpawnSceneEntities()
671
+ {
672
+ UWorld* World = GetWorld();
673
+ if (!World) return;
674
+
675
+ ${scene.entities.map((e) => this.generateEntitySpawnCode(e)).join('\n')}
676
+ }
677
+ `;
678
+ return { header, source };
679
+ }
680
+ generateEntitySpawnCode(entity) {
681
+ const pos = entity.position ?? { x: 0, y: 0 };
682
+ const rot = entity.rotation ?? 0;
683
+ return ` // Spawn ${entity.name ?? entity.id}
684
+ {
685
+ FActorSpawnParameters SpawnParams;
686
+ SpawnParams.Name = TEXT("${entity.id}");
687
+ FVector Location(${pos.x}f, ${pos.y}f, 0.0f);
688
+ FRotator Rotation(0.0f, ${rot}f, 0.0f);
689
+ // AActor* Entity = World->SpawnActor<AYourActorClass>(Location, Rotation, SpawnParams);
690
+ // SpawnedEntities.Add(Entity);
691
+ }`;
692
+ }
693
+ generateSpawnData(scene) {
694
+ return {
695
+ sceneName: scene.name,
696
+ sceneId: scene.id,
697
+ entities: scene.entities.map((e) => ({
698
+ id: e.id,
699
+ name: e.name,
700
+ type: e.type,
701
+ position: e.position,
702
+ rotation: e.rotation,
703
+ scale: e.scale,
704
+ components: e.components,
705
+ prefabId: e.prefabId,
706
+ tags: e.tags,
707
+ })),
708
+ tilemaps: scene.tilemaps ?? [],
709
+ };
710
+ }
711
+ /* ── Asset Export ───────────────────────────────────────────── */
712
+ async exportAsset(asset, options) {
713
+ switch (asset.type) {
714
+ case 'sprite':
715
+ case 'texture':
716
+ this.addWarning('ASSET_MANUAL', `Texture asset "${asset.name}" requires manual import`, 'Import textures through Unreal Editor for proper compression settings');
717
+ break;
718
+ case 'audio':
719
+ this.addWarning('ASSET_MANUAL', `Audio asset "${asset.name}" requires manual import`, 'Import audio through Unreal Editor for proper format conversion');
720
+ break;
721
+ case 'data':
722
+ // Export as DataTable or JSON
723
+ this.generateDataAsset(asset);
724
+ break;
725
+ }
726
+ }
727
+ generateDataAsset(asset) {
728
+ const sanitizedName = asset.name.replace(/[^a-zA-Z0-9]/g, '');
729
+ // Create a simple JSON data asset that can be read by Unreal
730
+ const dataContent = {
731
+ assetId: asset.id,
732
+ assetName: asset.name,
733
+ assetType: asset.type,
734
+ data: asset.data ?? {},
735
+ metadata: asset.metadata ?? {},
736
+ };
737
+ this.addTextFile(`Content/Data/${sanitizedName}.json`, JSON.stringify(dataContent, null, 2));
738
+ }
739
+ /* ── Blueprint Library ──────────────────────────────────────── */
740
+ async generateBlueprintLibrary(project, options) {
741
+ const header = `// Copyright Nice2Dev. All Rights Reserved.
742
+
743
+ #pragma once
744
+
745
+ #include "CoreMinimal.h"
746
+ #include "Kismet/BlueprintFunctionLibrary.h"
747
+ #include "Nice2DevBlueprintLibrary.generated.h"
748
+
749
+ /**
750
+ * Blueprint function library exposing Nice2Dev game engine features
751
+ */
752
+ UCLASS()
753
+ class ${this.moduleName.toUpperCase()}_API UNice2DevBlueprintLibrary : public UBlueprintFunctionLibrary
754
+ {
755
+ GENERATED_BODY()
756
+
757
+ public:
758
+ // === Transform Utilities ===
759
+
760
+ /** Move an actor towards a target position at specified speed */
761
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|Movement")
762
+ static void MoveTowards(AActor* Actor, FVector TargetPosition, float Speed, float DeltaTime);
763
+
764
+ /** Rotate an actor to face a target position */
765
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|Movement")
766
+ static void LookAt2D(AActor* Actor, FVector TargetPosition);
767
+
768
+ // === Math Utilities ===
769
+
770
+ /** Get a random point within a circle */
771
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|Math")
772
+ static FVector2D RandomPointInCircle(FVector2D Center, float Radius);
773
+
774
+ /** Lerp between colors */
775
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|Math")
776
+ static FLinearColor LerpColor(FLinearColor A, FLinearColor B, float Alpha);
777
+
778
+ /** Remap a value from one range to another */
779
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|Math")
780
+ static float Remap(float Value, float InMin, float InMax, float OutMin, float OutMax);
781
+
782
+ // === Game Utilities ===
783
+
784
+ /** Spawn an entity from a prefab ID */
785
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|Spawn", meta = (WorldContext = "WorldContextObject"))
786
+ static AActor* SpawnPrefab(UObject* WorldContextObject, const FString& PrefabId, FVector Location, FRotator Rotation);
787
+
788
+ /** Find all entities with a specific tag */
789
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|Query", meta = (WorldContext = "WorldContextObject"))
790
+ static TArray<AActor*> FindEntitiesWithTag(UObject* WorldContextObject, const FString& Tag);
791
+
792
+ /** Get the distance between two actors */
793
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|Query")
794
+ static float GetDistance2D(AActor* ActorA, AActor* ActorB);
795
+
796
+ // === State Management ===
797
+
798
+ /** Set a global game variable */
799
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|State")
800
+ static void SetGameVariable(const FString& Key, const FString& Value);
801
+
802
+ /** Get a global game variable */
803
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|State")
804
+ static FString GetGameVariable(const FString& Key);
805
+
806
+ /** Check if a global variable exists */
807
+ UFUNCTION(BlueprintPure, Category = "Nice2Dev|State")
808
+ static bool HasGameVariable(const FString& Key);
809
+
810
+ // === Audio Utilities ===
811
+
812
+ /** Play a sound with volume and pitch variation */
813
+ UFUNCTION(BlueprintCallable, Category = "Nice2Dev|Audio", meta = (WorldContext = "WorldContextObject"))
814
+ static void PlaySoundWithVariation(UObject* WorldContextObject, USoundBase* Sound, FVector Location,
815
+ float VolumeMin = 0.9f, float VolumeMax = 1.0f,
816
+ float PitchMin = 0.95f, float PitchMax = 1.05f);
817
+ };
818
+ `;
819
+ const source = `// Copyright Nice2Dev. All Rights Reserved.
820
+
821
+ #include "Nice2DevBlueprintLibrary.h"
822
+ #include "Kismet/GameplayStatics.h"
823
+ #include "Engine/World.h"
824
+ #include "GameFramework/Actor.h"
825
+
826
+ // Static game variables storage
827
+ static TMap<FString, FString> GameVariables;
828
+
829
+ void UNice2DevBlueprintLibrary::MoveTowards(AActor* Actor, FVector TargetPosition, float Speed, float DeltaTime)
830
+ {
831
+ if (!Actor) return;
832
+
833
+ FVector CurrentLocation = Actor->GetActorLocation();
834
+ FVector Direction = (TargetPosition - CurrentLocation).GetSafeNormal();
835
+ FVector NewLocation = CurrentLocation + Direction * Speed * DeltaTime;
836
+
837
+ // Don't overshoot
838
+ if (FVector::DistSquared(NewLocation, TargetPosition) < FMath::Square(Speed * DeltaTime))
839
+ {
840
+ NewLocation = TargetPosition;
841
+ }
842
+
843
+ Actor->SetActorLocation(NewLocation);
844
+ }
845
+
846
+ void UNice2DevBlueprintLibrary::LookAt2D(AActor* Actor, FVector TargetPosition)
847
+ {
848
+ if (!Actor) return;
849
+
850
+ FVector CurrentLocation = Actor->GetActorLocation();
851
+ FVector Direction = TargetPosition - CurrentLocation;
852
+ float Angle = FMath::RadiansToDegrees(FMath::Atan2(Direction.Y, Direction.X));
853
+
854
+ Actor->SetActorRotation(FRotator(0.0f, Angle, 0.0f));
855
+ }
856
+
857
+ FVector2D UNice2DevBlueprintLibrary::RandomPointInCircle(FVector2D Center, float Radius)
858
+ {
859
+ float Angle = FMath::FRand() * 2.0f * PI;
860
+ float Distance = FMath::Sqrt(FMath::FRand()) * Radius;
861
+ return Center + FVector2D(FMath::Cos(Angle), FMath::Sin(Angle)) * Distance;
862
+ }
863
+
864
+ FLinearColor UNice2DevBlueprintLibrary::LerpColor(FLinearColor A, FLinearColor B, float Alpha)
865
+ {
866
+ return FLinearColor::LerpUsingHSV(A, B, FMath::Clamp(Alpha, 0.0f, 1.0f));
867
+ }
868
+
869
+ float UNice2DevBlueprintLibrary::Remap(float Value, float InMin, float InMax, float OutMin, float OutMax)
870
+ {
871
+ return OutMin + (Value - InMin) * (OutMax - OutMin) / (InMax - InMin);
872
+ }
873
+
874
+ AActor* UNice2DevBlueprintLibrary::SpawnPrefab(UObject* WorldContextObject, const FString& PrefabId, FVector Location, FRotator Rotation)
875
+ {
876
+ UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull);
877
+ if (!World) return nullptr;
878
+
879
+ // In production, look up prefab class from a registry
880
+ // For now, return nullptr with a warning
881
+ UE_LOG(LogTemp, Warning, TEXT("SpawnPrefab: Prefab registry not implemented. ID: %s"), *PrefabId);
882
+ return nullptr;
883
+ }
884
+
885
+ TArray<AActor*> UNice2DevBlueprintLibrary::FindEntitiesWithTag(UObject* WorldContextObject, const FString& Tag)
886
+ {
887
+ TArray<AActor*> Result;
888
+ UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull);
889
+ if (!World) return Result;
890
+
891
+ TArray<AActor*> AllActors;
892
+ UGameplayStatics::GetAllActorsOfClass(World, AActor::StaticClass(), AllActors);
893
+
894
+ for (AActor* Actor : AllActors)
895
+ {
896
+ if (Actor->Tags.Contains(FName(*Tag)))
897
+ {
898
+ Result.Add(Actor);
899
+ }
900
+ }
901
+
902
+ return Result;
903
+ }
904
+
905
+ float UNice2DevBlueprintLibrary::GetDistance2D(AActor* ActorA, AActor* ActorB)
906
+ {
907
+ if (!ActorA || !ActorB) return 0.0f;
908
+
909
+ FVector LocationA = ActorA->GetActorLocation();
910
+ FVector LocationB = ActorB->GetActorLocation();
911
+
912
+ return FVector2D::Distance(FVector2D(LocationA), FVector2D(LocationB));
913
+ }
914
+
915
+ void UNice2DevBlueprintLibrary::SetGameVariable(const FString& Key, const FString& Value)
916
+ {
917
+ GameVariables.Add(Key, Value);
918
+ }
919
+
920
+ FString UNice2DevBlueprintLibrary::GetGameVariable(const FString& Key)
921
+ {
922
+ if (const FString* Value = GameVariables.Find(Key))
923
+ {
924
+ return *Value;
925
+ }
926
+ return FString();
927
+ }
928
+
929
+ bool UNice2DevBlueprintLibrary::HasGameVariable(const FString& Key)
930
+ {
931
+ return GameVariables.Contains(Key);
932
+ }
933
+
934
+ void UNice2DevBlueprintLibrary::PlaySoundWithVariation(UObject* WorldContextObject, USoundBase* Sound, FVector Location,
935
+ float VolumeMin, float VolumeMax,
936
+ float PitchMin, float PitchMax)
937
+ {
938
+ if (!Sound) return;
939
+
940
+ UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull);
941
+ if (!World) return;
942
+
943
+ float Volume = FMath::FRandRange(VolumeMin, VolumeMax);
944
+ float Pitch = FMath::FRandRange(PitchMin, PitchMax);
945
+
946
+ UGameplayStatics::PlaySoundAtLocation(World, Sound, Location, Volume, Pitch);
947
+ }
948
+ `;
949
+ this.addTextFile(`Source/${this.moduleName}/Nice2DevBlueprintLibrary.h`, header);
950
+ this.addTextFile(`Source/${this.moduleName}/Nice2DevBlueprintLibrary.cpp`, source);
951
+ }
952
+ }
953
+ /* ── Factory ──────────────────────────────────────────────────── */
954
+ function createUnrealExporter() {
955
+ return new UnrealExporter();
956
+ }
957
+
958
+ export { UnrealExporter, createUnrealExporter };
959
+ //# sourceMappingURL=UnrealExporter.js.map