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