@nice2dev/game-engine 0.1.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/CHANGELOG.md +193 -1
  2. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  3. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  4. package/dist/cjs/ai/StateMachine.js +783 -0
  5. package/dist/cjs/ai/StateMachine.js.map +1 -0
  6. package/dist/cjs/audio/AudioBridge.js +454 -0
  7. package/dist/cjs/audio/AudioBridge.js.map +1 -0
  8. package/dist/cjs/devtools/GameplayAnalytics.js +651 -0
  9. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -0
  10. package/dist/cjs/dialogue/DialogueSystem.js +1023 -0
  11. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -0
  12. package/dist/cjs/editor/NiceGameEditor.js +569 -71
  13. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  14. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  15. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  16. package/dist/cjs/editor/TimelineEditor.js +819 -0
  17. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  18. package/dist/cjs/engine/SaveSystemV2.js +494 -0
  19. package/dist/cjs/engine/SaveSystemV2.js.map +1 -0
  20. package/dist/cjs/export/GodotExporter.js +1102 -0
  21. package/dist/cjs/export/GodotExporter.js.map +1 -0
  22. package/dist/cjs/export/PlatformExporter.js +236 -0
  23. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  24. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  25. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  26. package/dist/cjs/export/UnityExporter.js +1193 -0
  27. package/dist/cjs/export/UnityExporter.js.map +1 -0
  28. package/dist/cjs/export/WebExporter.js +1036 -0
  29. package/dist/cjs/export/WebExporter.js.map +1 -0
  30. package/dist/cjs/export/index.js +58 -0
  31. package/dist/cjs/export/index.js.map +1 -0
  32. package/dist/cjs/i18n/useTranslation.js +11 -11
  33. package/dist/cjs/import/AsepriteImporter.js +761 -0
  34. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  35. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  36. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  37. package/dist/cjs/import/GameMakerImporter.js +559 -0
  38. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  40. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  41. package/dist/cjs/import/LDtkImporter.js +481 -0
  42. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  43. package/dist/cjs/import/Live2DImporter.js +553 -0
  44. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  45. package/dist/cjs/import/NdgFormat.js +499 -0
  46. package/dist/cjs/import/NdgFormat.js.map +1 -0
  47. package/dist/cjs/import/OgmoImporter.js +529 -0
  48. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  49. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  50. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  51. package/dist/cjs/import/SceneImporter.js +449 -0
  52. package/dist/cjs/import/SceneImporter.js.map +1 -0
  53. package/dist/cjs/import/SpineImporter.js +583 -0
  54. package/dist/cjs/import/SpineImporter.js.map +1 -0
  55. package/dist/cjs/import/SpriterImporter.js +652 -0
  56. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  57. package/dist/cjs/import/TiledMapImporter.js +859 -0
  58. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  59. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  60. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  61. package/dist/cjs/import/index.js +305 -0
  62. package/dist/cjs/import/index.js.map +1 -0
  63. package/dist/cjs/index.js +291 -1
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/input/GamepadNavigation.js +21 -21
  66. package/dist/cjs/input/useGamepads.js +6 -6
  67. package/dist/cjs/integration/IconSprite.js +281 -0
  68. package/dist/cjs/integration/IconSprite.js.map +1 -0
  69. package/dist/cjs/inventory/InventorySystem.js +930 -0
  70. package/dist/cjs/inventory/InventorySystem.js.map +1 -0
  71. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  72. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  73. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  74. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  75. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  97. package/dist/cjs/quest/QuestSystem.js +924 -0
  98. package/dist/cjs/quest/QuestSystem.js.map +1 -0
  99. package/dist/cjs/rendering/WebGPURenderPipeline.js +658 -0
  100. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -0
  101. package/dist/cjs/scripting/GraphToAST.js +567 -0
  102. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  103. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  104. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  105. package/dist/cjs/scripting/ScriptAST.js +67 -0
  106. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  107. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  108. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  109. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  110. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  111. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  112. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  113. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  114. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  115. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  116. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  117. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  118. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  119. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  120. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  121. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  122. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  123. package/dist/cjs/xr/ARVR.js.map +1 -1
  124. package/dist/esm/ai/BehaviorTree.js +1186 -0
  125. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  126. package/dist/esm/ai/StateMachine.js +767 -0
  127. package/dist/esm/ai/StateMachine.js.map +1 -0
  128. package/dist/esm/audio/AudioBridge.js +446 -0
  129. package/dist/esm/audio/AudioBridge.js.map +1 -0
  130. package/dist/esm/devtools/GameplayAnalytics.js +639 -0
  131. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -0
  132. package/dist/esm/dialogue/DialogueSystem.js +1008 -0
  133. package/dist/esm/dialogue/DialogueSystem.js.map +1 -0
  134. package/dist/esm/editor/NiceGameEditor.js +556 -58
  135. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  136. package/dist/esm/editor/ShaderGraph.js +1606 -0
  137. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  138. package/dist/esm/editor/TimelineEditor.js +800 -0
  139. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  140. package/dist/esm/engine/SaveSystemV2.js +487 -0
  141. package/dist/esm/engine/SaveSystemV2.js.map +1 -0
  142. package/dist/esm/export/GodotExporter.js +1100 -0
  143. package/dist/esm/export/GodotExporter.js.map +1 -0
  144. package/dist/esm/export/PlatformExporter.js +230 -0
  145. package/dist/esm/export/PlatformExporter.js.map +1 -0
  146. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  147. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  148. package/dist/esm/export/UnityExporter.js +1191 -0
  149. package/dist/esm/export/UnityExporter.js.map +1 -0
  150. package/dist/esm/export/WebExporter.js +1033 -0
  151. package/dist/esm/export/WebExporter.js.map +1 -0
  152. package/dist/esm/export/index.js +44 -0
  153. package/dist/esm/export/index.js.map +1 -0
  154. package/dist/esm/import/AsepriteImporter.js +759 -0
  155. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  156. package/dist/esm/import/DragonBonesImporter.js +496 -0
  157. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  158. package/dist/esm/import/GameMakerImporter.js +556 -0
  159. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  160. package/dist/esm/import/GodotSceneImporter.js +822 -0
  161. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  162. package/dist/esm/import/LDtkImporter.js +479 -0
  163. package/dist/esm/import/LDtkImporter.js.map +1 -0
  164. package/dist/esm/import/Live2DImporter.js +550 -0
  165. package/dist/esm/import/Live2DImporter.js.map +1 -0
  166. package/dist/esm/import/NdgFormat.js +490 -0
  167. package/dist/esm/import/NdgFormat.js.map +1 -0
  168. package/dist/esm/import/OgmoImporter.js +526 -0
  169. package/dist/esm/import/OgmoImporter.js.map +1 -0
  170. package/dist/esm/import/RPGMakerImporter.js +517 -0
  171. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  172. package/dist/esm/import/SceneImporter.js +441 -0
  173. package/dist/esm/import/SceneImporter.js.map +1 -0
  174. package/dist/esm/import/SpineImporter.js +580 -0
  175. package/dist/esm/import/SpineImporter.js.map +1 -0
  176. package/dist/esm/import/SpriterImporter.js +649 -0
  177. package/dist/esm/import/SpriterImporter.js.map +1 -0
  178. package/dist/esm/import/TiledMapImporter.js +857 -0
  179. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  180. package/dist/esm/import/UnitySceneImporter.js +730 -0
  181. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  182. package/dist/esm/import/index.js +279 -0
  183. package/dist/esm/import/index.js.map +1 -0
  184. package/dist/esm/index.js +47 -3
  185. package/dist/esm/index.js.map +1 -1
  186. package/dist/esm/integration/IconSprite.js +266 -0
  187. package/dist/esm/integration/IconSprite.js.map +1 -0
  188. package/dist/esm/inventory/InventorySystem.js +924 -0
  189. package/dist/esm/inventory/InventorySystem.js.map +1 -0
  190. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  191. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  192. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  193. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  194. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  195. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  196. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  197. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  198. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  199. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  200. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  201. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  202. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  203. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  204. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  205. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  206. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  207. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  208. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  209. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  210. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  211. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  212. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  213. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  214. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  215. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  216. package/dist/esm/quest/QuestSystem.js +916 -0
  217. package/dist/esm/quest/QuestSystem.js.map +1 -0
  218. package/dist/esm/rendering/WebGPURenderPipeline.js +642 -0
  219. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -0
  220. package/dist/esm/scripting/GraphToAST.js +564 -0
  221. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  222. package/dist/esm/scripting/LanguageExporter.js +311 -0
  223. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  224. package/dist/esm/scripting/ScriptAST.js +52 -0
  225. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  226. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  227. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  228. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  229. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  230. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  231. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  232. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  233. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  234. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  235. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  236. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  237. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  238. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  239. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  240. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  241. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  242. package/dist/esm/xr/ARVR.js.map +1 -1
  243. package/dist/types/__tests__/setup.d.ts +1 -1
  244. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  245. package/dist/types/ai/StateMachine.d.ts +296 -0
  246. package/dist/types/audio/AudioBridge.d.ts +199 -0
  247. package/dist/types/devtools/GameplayAnalytics.d.ts +279 -0
  248. package/dist/types/dialogue/DialogueSystem.d.ts +326 -0
  249. package/dist/types/dialogue/index.d.ts +2 -0
  250. package/dist/types/editor/NiceGameEditor.d.ts +12 -1
  251. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  252. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  253. package/dist/types/engine/SaveSystemV2.d.ts +155 -0
  254. package/dist/types/export/GodotExporter.d.ts +56 -0
  255. package/dist/types/export/PlatformExporter.d.ts +201 -0
  256. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  257. package/dist/types/export/UnityExporter.d.ts +69 -0
  258. package/dist/types/export/WebExporter.d.ts +58 -0
  259. package/dist/types/export/index.d.ts +19 -0
  260. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  261. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  262. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  263. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  264. package/dist/types/import/LDtkImporter.d.ts +177 -0
  265. package/dist/types/import/Live2DImporter.d.ts +237 -0
  266. package/dist/types/import/NdgFormat.d.ts +387 -0
  267. package/dist/types/import/OgmoImporter.d.ts +237 -0
  268. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  269. package/dist/types/import/SceneImporter.d.ts +276 -0
  270. package/dist/types/import/SpineImporter.d.ts +372 -0
  271. package/dist/types/import/SpriterImporter.d.ts +230 -0
  272. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  273. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  274. package/dist/types/import/index.d.ts +59 -0
  275. package/dist/types/index.d.ts +46 -18
  276. package/dist/types/integration/IconSprite.d.ts +196 -0
  277. package/dist/types/inventory/InventorySystem.d.ts +336 -0
  278. package/dist/types/performance/WebGPUCompute.d.ts +0 -10
  279. package/dist/types/quest/QuestSystem.d.ts +287 -0
  280. package/dist/types/rendering/WebGPURenderPipeline.d.ts +255 -0
  281. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  282. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  283. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  284. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  285. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  286. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  287. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  288. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  289. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  290. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  291. package/dist/types/scripting/exporters/index.d.ts +8 -0
  292. package/dist/types/scripting/index.d.ts +11 -0
  293. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  294. package/package.json +7 -1
@@ -0,0 +1,732 @@
1
+ 'use strict';
2
+
3
+ var SceneImporter = require('./SceneImporter.js');
4
+
5
+ /**
6
+ * @file UnitySceneImporter.ts
7
+ * @description Import Unity scenes (.unity) and prefabs (.prefab)
8
+ * PRO-1.3: Scene Format Interoperability
9
+ *
10
+ * Parses Unity's YAML serialization format and converts to Nice2Dev entities.
11
+ * Supports:
12
+ * - Scene files (.unity)
13
+ * - Prefab files (.prefab)
14
+ * - Asset files (.asset)
15
+ * - Animation clips (.anim)
16
+ * - Materials (.mat)
17
+ */
18
+ // ============================================================
19
+ // Unity Class IDs
20
+ // ============================================================
21
+ const UNITY_CLASS_IDS = {
22
+ 1: 'GameObject',
23
+ 2: 'Component',
24
+ 3: 'LevelGameManager',
25
+ 4: 'Transform',
26
+ 20: 'Camera',
27
+ 21: 'Material',
28
+ 23: 'MeshRenderer',
29
+ 25: 'Renderer',
30
+ 28: 'Texture2D',
31
+ 33: 'MeshFilter',
32
+ 43: 'Mesh',
33
+ 47: 'RenderTexture',
34
+ 48: 'Shader',
35
+ 49: 'TextAsset',
36
+ 50: 'Rigidbody2D',
37
+ 54: 'Rigidbody',
38
+ 56: 'Cloth',
39
+ 58: 'CircleCollider2D',
40
+ 60: 'PolygonCollider2D',
41
+ 61: 'BoxCollider2D',
42
+ 64: 'MeshCollider',
43
+ 65: 'BoxCollider',
44
+ 66: 'CompositeCollider2D',
45
+ 68: 'EdgeCollider2D',
46
+ 70: 'CapsuleCollider2D',
47
+ 72: 'ComputeShader',
48
+ 74: 'AnimationClip',
49
+ 76: 'ConstantForce',
50
+ 78: 'WorldParticleCollider',
51
+ 81: 'AudioListener',
52
+ 82: 'AudioSource',
53
+ 83: 'AudioClip',
54
+ 84: 'RenderTexture',
55
+ 86: 'MovieTexture',
56
+ 89: 'Cubemap',
57
+ 90: 'Avatar',
58
+ 91: 'AnimatorController',
59
+ 92: 'GUILayer',
60
+ 93: 'RuntimeAnimatorController',
61
+ 94: 'ScriptMapper',
62
+ 95: 'Animator',
63
+ 96: 'TrailRenderer',
64
+ 102: 'TextMesh',
65
+ 104: 'RenderSettings',
66
+ 108: 'Light',
67
+ 109: 'CGProgram',
68
+ 110: 'BaseAnimationTrack',
69
+ 114: 'MonoBehaviour',
70
+ 115: 'MonoScript',
71
+ 118: 'Texture3D',
72
+ 119: 'Projector',
73
+ 120: 'LineRenderer',
74
+ 121: 'Flare',
75
+ 122: 'Halo',
76
+ 123: 'LensFlare',
77
+ 124: 'FlareLayer',
78
+ 125: 'HaloLayer',
79
+ 126: 'NavMeshAgent',
80
+ 128: 'Font',
81
+ 129: 'NavMeshSettings',
82
+ 130: 'ParticleSystem',
83
+ 131: 'ParticleSystemRenderer',
84
+ 132: 'ShaderVariantCollection',
85
+ 133: 'TilemapCollider2D',
86
+ 134: 'SpriteMask',
87
+ 135: 'CapsuleCollider',
88
+ 136: 'SkinnedMeshRenderer',
89
+ 137: 'FixedJoint',
90
+ 140: 'RaycastCollider',
91
+ 145: 'PhysicMaterial',
92
+ 146: 'SphereCollider',
93
+ 150: 'CharacterController',
94
+ 152: 'CharacterJoint',
95
+ 153: 'SpringJoint',
96
+ 154: 'WheelCollider',
97
+ 156: 'HingeJoint',
98
+ 157: 'ConfigurableJoint',
99
+ 158: 'Grid',
100
+ 160: 'Tilemap',
101
+ 161: 'TilemapRenderer',
102
+ 180: 'BoxCollider2D',
103
+ 181: 'CircleCollider2D',
104
+ 182: 'EdgeCollider2D',
105
+ 183: 'PolygonCollider2D',
106
+ 184: 'CapsuleCollider2D',
107
+ 185: 'CompositeCollider2D',
108
+ 191: 'Rigidbody2D',
109
+ 192: 'DistanceJoint2D',
110
+ 193: 'HingeJoint2D',
111
+ 194: 'SliderJoint2D',
112
+ 195: 'SpringJoint2D',
113
+ 196: 'WheelJoint2D',
114
+ 197: 'RelativeJoint2D',
115
+ 198: 'FixedJoint2D',
116
+ 199: 'FrictionJoint2D',
117
+ 200: 'TargetJoint2D',
118
+ 212: 'SpriteRenderer',
119
+ 213: 'Sprite',
120
+ 215: 'TerrainCollider',
121
+ 218: 'TerrainData',
122
+ 219: 'LightmapSettings',
123
+ 220: 'WebCamTexture',
124
+ 221: 'LODGroup',
125
+ 223: 'Canvas',
126
+ 224: 'RectTransform',
127
+ 225: 'CanvasGroup',
128
+ 226: 'BillboardRenderer',
129
+ 227: 'BillboardAsset',
130
+ 228: 'SpeedTreeWindAsset',
131
+ 229: 'AnchoredJoint2D',
132
+ 230: 'Joint2D',
133
+ 231: 'SpringJoint2D',
134
+ 232: 'DistanceJoint2D',
135
+ 233: 'HingeJoint2D',
136
+ 234: 'SliderJoint2D',
137
+ 235: 'WheelJoint2D',
138
+ 238: 'NavMeshData',
139
+ 240: 'AudioMixer',
140
+ 241: 'AudioMixerGroup',
141
+ 243: 'AudioMixerSnapshot',
142
+ 244: 'PhysicsUpdateBehaviour2D',
143
+ 245: 'ConstantForce2D',
144
+ 246: 'Effector2D',
145
+ 247: 'AreaEffector2D',
146
+ 248: 'PointEffector2D',
147
+ 249: 'PlatformEffector2D',
148
+ 250: 'SurfaceEffector2D',
149
+ 251: 'BuoyancyEffector2D',
150
+ 252: 'RelativeJoint2D',
151
+ 253: 'FixedJoint2D',
152
+ 254: 'FrictionJoint2D',
153
+ 255: 'TargetJoint2D',
154
+ 258: 'LightProbeProxyVolume',
155
+ 259: 'LightProbes',
156
+ 260: 'LightProbeGroup',
157
+ 271: 'VideoPlayer',
158
+ 290: 'SortingGroup',
159
+ 310: 'SpriteMask',
160
+ 330: 'VideoClip',
161
+ 331: 'TilemapCollider2D',
162
+ 363: 'OcclusionCullingData',
163
+ 387: 'SpringBoneJob',
164
+ 388: 'SpringBoneColliderSphere',
165
+ 391: 'SpringBoneColliderCapsule',
166
+ 392: 'SpringBoneColliderPlane',
167
+ 1001: 'Prefab',
168
+ };
169
+ // ============================================================
170
+ // Unity Scene Importer
171
+ // ============================================================
172
+ class UnitySceneImporter extends SceneImporter.SceneImporter {
173
+ constructor() {
174
+ super('unity');
175
+ this.documents = new Map();
176
+ this.gameObjects = new Map();
177
+ this.transforms = new Map();
178
+ this.components = new Map();
179
+ this.prefabs = new Map();
180
+ }
181
+ async import(options) {
182
+ const startTime = Date.now();
183
+ this.options = options;
184
+ this.clearMessages();
185
+ this.documents.clear();
186
+ this.gameObjects.clear();
187
+ this.transforms.clear();
188
+ this.components.clear();
189
+ const errors = await this.validate(options.sourcePath);
190
+ if (errors.some((e) => e.fatal)) {
191
+ return {
192
+ ...this.createEmptyResult(),
193
+ errors: errors,
194
+ };
195
+ }
196
+ const scenes = [];
197
+ const assets = [];
198
+ try {
199
+ // Read and parse the Unity file(s)
200
+ const content = await this.readFile(options.sourcePath);
201
+ const parsed = this.parseUnityFile(content, options.sourcePath);
202
+ if (parsed) {
203
+ // Convert to Nice2Dev scene
204
+ const niceScene = this.convertParsedToNiceScene(parsed);
205
+ scenes.push(niceScene);
206
+ // Extract assets
207
+ const extractedAssets = this.extractAssets(parsed);
208
+ assets.push(...extractedAssets);
209
+ }
210
+ }
211
+ catch (error) {
212
+ this.addError('IMPORT_ERROR', `Failed to import: ${error}`, options.sourcePath, undefined, true);
213
+ }
214
+ return this.createResult(scenes, assets, startTime);
215
+ }
216
+ async parseFile(content, filePath) {
217
+ const stringContent = typeof content === 'string' ? content : new TextDecoder().decode(content);
218
+ return this.parseUnityFile(stringContent, filePath);
219
+ }
220
+ async validate(sourcePath) {
221
+ const errors = [];
222
+ if (!this.canHandle(sourcePath)) {
223
+ errors.push({
224
+ code: 'INVALID_FORMAT',
225
+ message: `File ${sourcePath} is not a valid Unity file`,
226
+ file: sourcePath,
227
+ fatal: true,
228
+ });
229
+ }
230
+ return errors;
231
+ }
232
+ // ----------------------------------------
233
+ // Unity Parsing
234
+ // ----------------------------------------
235
+ parseUnityFile(content, filePath) {
236
+ // Unity files are multi-document YAML with special header
237
+ const documents = this.parseUnityYAML(content);
238
+ // Store all documents for reference resolution
239
+ for (const doc of documents) {
240
+ this.documents.set(doc.fileID, doc);
241
+ // Categorize by class type
242
+ const className = UNITY_CLASS_IDS[doc.classID];
243
+ if (className === 'GameObject') {
244
+ const go = Object.values(doc.data)[0];
245
+ this.gameObjects.set(doc.fileID, go);
246
+ }
247
+ else if (className === 'Transform' || className === 'RectTransform') {
248
+ const transform = Object.values(doc.data)[0];
249
+ this.transforms.set(doc.fileID, { ...transform, fileID: doc.fileID });
250
+ }
251
+ else {
252
+ // Components
253
+ const component = Object.values(doc.data)[0];
254
+ this.components.set(doc.fileID, { ...component, classID: doc.classID, fileID: doc.fileID });
255
+ }
256
+ }
257
+ // Build scene structure
258
+ const scene = this.buildSceneFromDocuments(filePath);
259
+ return scene;
260
+ }
261
+ parseUnityYAML(content) {
262
+ const documents = [];
263
+ // Split by Unity document headers: --- !u!<classID> &<fileID>
264
+ const docRegex = /--- !u!(\d+) &(\d+)/g;
265
+ const matches = [...content.matchAll(docRegex)];
266
+ for (let i = 0; i < matches.length; i++) {
267
+ const match = matches[i];
268
+ const classID = parseInt(match[1], 10);
269
+ const fileID = match[2];
270
+ // Get content until next document or end
271
+ const startIndex = match.index + match[0].length;
272
+ const endIndex = i < matches.length - 1 ? matches[i + 1].index : content.length;
273
+ const docContent = content.substring(startIndex, endIndex).trim();
274
+ // Parse YAML content
275
+ try {
276
+ const data = SceneImporter.parseYAML(docContent);
277
+ documents.push({ fileID, classID, data });
278
+ }
279
+ catch (error) {
280
+ this.addWarning('YAML_PARSE_ERROR', `Failed to parse YAML for document ${fileID}: ${error}`, undefined);
281
+ }
282
+ }
283
+ return documents;
284
+ }
285
+ buildSceneFromDocuments(filePath) {
286
+ const sceneName = filePath.substring(filePath.lastIndexOf('/') + 1).replace(/\.\w+$/, '');
287
+ // Find root transforms (no parent)
288
+ const rootTransforms = [];
289
+ for (const [fileID, transform] of this.transforms) {
290
+ if (!transform.m_Father || transform.m_Father.fileID === 0) {
291
+ rootTransforms.push(transform);
292
+ }
293
+ }
294
+ // Sort by root order
295
+ rootTransforms.sort((a, b) => (a.m_RootOrder || 0) - (b.m_RootOrder || 0));
296
+ // Build entity tree from root transforms
297
+ const entities = [];
298
+ for (const transform of rootTransforms) {
299
+ const entity = this.buildEntityFromTransform(transform);
300
+ if (entity) {
301
+ entities.push(entity);
302
+ }
303
+ }
304
+ // Extract scene settings
305
+ const sceneSettings = this.extractSceneSettings();
306
+ return {
307
+ name: sceneName,
308
+ width: 1920, // Unity doesn't have fixed scene size
309
+ height: 1080,
310
+ backgroundColor: '#3C3C3C', // Unity default
311
+ layers: [],
312
+ entities,
313
+ properties: sceneSettings,
314
+ };
315
+ }
316
+ buildEntityFromTransform(transform) {
317
+ // Find the GameObject that owns this transform
318
+ let gameObjectFileID = null;
319
+ for (const [compFileID, component] of this.components) {
320
+ if (compFileID === transform.fileID) {
321
+ const gameObjectRef = component
322
+ .m_GameObject;
323
+ if (gameObjectRef) {
324
+ gameObjectFileID = gameObjectRef.fileID.toString();
325
+ }
326
+ break;
327
+ }
328
+ }
329
+ // Also check transforms map for m_GameObject reference
330
+ for (const doc of this.documents.values()) {
331
+ if (doc.fileID === transform.fileID) {
332
+ const transformData = Object.values(doc.data)[0];
333
+ if (transformData === null || transformData === void 0 ? void 0 : transformData.m_GameObject) {
334
+ gameObjectFileID = transformData.m_GameObject.fileID.toString();
335
+ }
336
+ break;
337
+ }
338
+ }
339
+ const gameObject = gameObjectFileID ? this.gameObjects.get(gameObjectFileID) : null;
340
+ // Convert quaternion to euler angles (simplified)
341
+ const rotation = this.quaternionToEulerY(transform.m_LocalRotation.x, transform.m_LocalRotation.y, transform.m_LocalRotation.z, transform.m_LocalRotation.w);
342
+ // Get components attached to this GameObject
343
+ const components = this.getComponentsForGameObject(gameObjectFileID);
344
+ // Get children
345
+ const children = [];
346
+ if (transform.m_Children) {
347
+ for (const childRef of transform.m_Children) {
348
+ const childTransform = this.transforms.get(childRef.fileID.toString());
349
+ if (childTransform) {
350
+ const childEntity = this.buildEntityFromTransform(childTransform);
351
+ if (childEntity) {
352
+ children.push(childEntity);
353
+ }
354
+ }
355
+ }
356
+ }
357
+ return {
358
+ id: transform.fileID,
359
+ name: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_Name) || 'GameObject',
360
+ type: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_TagString) || 'Untagged',
361
+ x: transform.m_LocalPosition.x,
362
+ y: transform.m_LocalPosition.y,
363
+ width: 1,
364
+ height: 1,
365
+ rotation: rotation,
366
+ scaleX: transform.m_LocalScale.x,
367
+ scaleY: transform.m_LocalScale.y,
368
+ visible: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_IsActive) !== 0,
369
+ components,
370
+ children,
371
+ properties: {
372
+ layer: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_Layer) || 0,
373
+ tag: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_TagString) || 'Untagged',
374
+ z: transform.m_LocalPosition.z,
375
+ scaleZ: transform.m_LocalScale.z,
376
+ staticFlags: (gameObject === null || gameObject === void 0 ? void 0 : gameObject.m_StaticEditorFlags) || 0,
377
+ },
378
+ };
379
+ }
380
+ getComponentsForGameObject(gameObjectFileID) {
381
+ if (!gameObjectFileID)
382
+ return [];
383
+ const result = [];
384
+ for (const [fileID, component] of this.components) {
385
+ const goRef = component.m_GameObject;
386
+ if (goRef && goRef.fileID.toString() === gameObjectFileID) {
387
+ const converted = this.convertUnityComponent(component);
388
+ if (converted) {
389
+ result.push(converted);
390
+ }
391
+ }
392
+ }
393
+ return result;
394
+ }
395
+ convertUnityComponent(component) {
396
+ const className = UNITY_CLASS_IDS[component.classID];
397
+ switch (className) {
398
+ case 'Transform':
399
+ case 'RectTransform':
400
+ return null; // Already handled
401
+ case 'SpriteRenderer':
402
+ return {
403
+ type: 'SpriteRenderer',
404
+ data: {
405
+ sprite: component.m_Sprite,
406
+ color: component.m_Color,
407
+ flipX: component.m_FlipX,
408
+ flipY: component.m_FlipY,
409
+ sortingLayerID: component.m_SortingLayerID,
410
+ sortingOrder: component.m_SortingOrder,
411
+ enabled: component.m_Enabled !== 0,
412
+ },
413
+ };
414
+ case 'Rigidbody2D':
415
+ return {
416
+ type: 'Rigidbody2D',
417
+ data: {
418
+ bodyType: component.m_BodyType,
419
+ simulated: component.m_Simulated,
420
+ useFullKinematicContacts: component
421
+ .m_UseFullKinematicContacts,
422
+ mass: component.m_Mass,
423
+ linearDrag: component.m_LinearDrag,
424
+ angularDrag: component.m_AngularDrag,
425
+ gravityScale: component.m_GravityScale,
426
+ constraints: component.m_Constraints,
427
+ enabled: component.m_Enabled !== 0,
428
+ },
429
+ };
430
+ case 'BoxCollider2D':
431
+ return {
432
+ type: 'BoxCollider2D',
433
+ data: {
434
+ isTrigger: component.m_IsTrigger,
435
+ size: component.m_Size,
436
+ offset: component.m_Offset,
437
+ enabled: component.m_Enabled !== 0,
438
+ },
439
+ };
440
+ case 'CircleCollider2D':
441
+ return {
442
+ type: 'CircleCollider2D',
443
+ data: {
444
+ isTrigger: component.m_IsTrigger,
445
+ radius: component.m_Radius,
446
+ offset: component.m_Offset,
447
+ enabled: component.m_Enabled !== 0,
448
+ },
449
+ };
450
+ case 'PolygonCollider2D':
451
+ return {
452
+ type: 'PolygonCollider2D',
453
+ data: {
454
+ isTrigger: component.m_IsTrigger,
455
+ points: component.m_Points,
456
+ offset: component.m_Offset,
457
+ enabled: component.m_Enabled !== 0,
458
+ },
459
+ };
460
+ case 'EdgeCollider2D':
461
+ return {
462
+ type: 'EdgeCollider2D',
463
+ data: {
464
+ isTrigger: component.m_IsTrigger,
465
+ points: component.m_Points,
466
+ offset: component.m_Offset,
467
+ enabled: component.m_Enabled !== 0,
468
+ },
469
+ };
470
+ case 'AudioSource':
471
+ return {
472
+ type: 'AudioSource',
473
+ data: {
474
+ clip: component.m_audioClip,
475
+ playOnAwake: component.m_PlayOnAwake,
476
+ loop: component.Loop,
477
+ volume: component.m_Volume,
478
+ pitch: component.m_Pitch,
479
+ spatialBlend: component.SpatialBlend,
480
+ enabled: component.m_Enabled !== 0,
481
+ },
482
+ };
483
+ case 'Animator':
484
+ return {
485
+ type: 'Animator',
486
+ data: {
487
+ controller: component.m_Controller,
488
+ avatar: component.m_Avatar,
489
+ applyRootMotion: component.m_ApplyRootMotion,
490
+ updateMode: component.m_UpdateMode,
491
+ cullingMode: component.m_CullingMode,
492
+ enabled: component.m_Enabled !== 0,
493
+ },
494
+ };
495
+ case 'Camera':
496
+ return {
497
+ type: 'Camera',
498
+ data: {
499
+ clearFlags: component.m_ClearFlags,
500
+ backgroundColor: component.m_BackGroundColor,
501
+ orthographic: component.m_Orthographic,
502
+ orthographicSize: component.m_OrthographicSize,
503
+ fieldOfView: component.m_FieldOfView,
504
+ nearClipPlane: component.m_NearClipPlane,
505
+ farClipPlane: component.m_FarClipPlane,
506
+ depth: component.m_Depth,
507
+ cullingMask: component.m_CullingMask,
508
+ enabled: component.m_Enabled !== 0,
509
+ },
510
+ };
511
+ case 'Light':
512
+ return {
513
+ type: 'Light',
514
+ data: {
515
+ type: component.m_Type,
516
+ color: component.m_Color,
517
+ intensity: component.m_Intensity,
518
+ range: component.m_Range,
519
+ spotAngle: component.m_SpotAngle,
520
+ shadows: component.m_Shadows,
521
+ enabled: component.m_Enabled !== 0,
522
+ },
523
+ };
524
+ case 'ParticleSystem':
525
+ return {
526
+ type: 'ParticleSystem',
527
+ data: {
528
+ duration: component.duration,
529
+ looping: component.looping,
530
+ startLifetime: component.startLifetime,
531
+ startSpeed: component.startSpeed,
532
+ startSize: component.startSize,
533
+ startColor: component.startColor,
534
+ gravityModifier: component.gravityModifier,
535
+ maxParticles: component.maxParticles,
536
+ enabled: component.m_Enabled !== 0,
537
+ },
538
+ };
539
+ case 'Canvas':
540
+ return {
541
+ type: 'Canvas',
542
+ data: {
543
+ renderMode: component.m_RenderMode,
544
+ sortingOrder: component.m_SortingOrder,
545
+ targetDisplay: component.m_TargetDisplay,
546
+ pixelPerfect: component.m_PixelPerfect,
547
+ enabled: component.m_Enabled !== 0,
548
+ },
549
+ };
550
+ case 'Tilemap':
551
+ return {
552
+ type: 'Tilemap',
553
+ data: {
554
+ size: component.m_Size,
555
+ cellSize: component.m_CellSize,
556
+ cellGap: component.m_CellGap,
557
+ cellLayout: component.m_CellLayout,
558
+ tileAnchor: component.m_TileAnchor,
559
+ orientation: component.m_Orientation,
560
+ enabled: component.m_Enabled !== 0,
561
+ },
562
+ };
563
+ case 'Grid':
564
+ return {
565
+ type: 'Grid',
566
+ data: {
567
+ cellSize: component.m_CellSize,
568
+ cellGap: component.m_CellGap,
569
+ cellLayout: component.m_CellLayout,
570
+ cellSwizzle: component.m_CellSwizzle,
571
+ enabled: component.m_Enabled !== 0,
572
+ },
573
+ };
574
+ case 'MonoBehaviour':
575
+ return {
576
+ type: 'Script',
577
+ data: {
578
+ scriptGuid: component.m_Script,
579
+ properties: { ...component },
580
+ enabled: component.m_Enabled !== 0,
581
+ },
582
+ };
583
+ default:
584
+ // Generic component
585
+ return {
586
+ type: className || 'Unknown',
587
+ data: {
588
+ classID: component.classID,
589
+ properties: { ...component },
590
+ enabled: component.m_Enabled !== 0,
591
+ },
592
+ };
593
+ }
594
+ }
595
+ extractSceneSettings() {
596
+ const settings = {};
597
+ // Find physics settings
598
+ for (const doc of this.documents.values()) {
599
+ const data = Object.values(doc.data)[0];
600
+ if (data === null || data === void 0 ? void 0 : data.m_Physics2DSettings) {
601
+ settings.gravity = {
602
+ x: data.m_Physics2DSettings.m_Gravity.x,
603
+ y: data.m_Physics2DSettings.m_Gravity.y,
604
+ };
605
+ }
606
+ if (data === null || data === void 0 ? void 0 : data.m_TagManager) {
607
+ settings.tags = data.m_TagManager.tags;
608
+ settings.layers = data.m_TagManager.layers;
609
+ settings.sortingLayers = data.m_TagManager.sortingLayers;
610
+ }
611
+ }
612
+ return settings;
613
+ }
614
+ extractAssets(scene) {
615
+ const assets = [];
616
+ // Extract sprite references
617
+ const spriteRefs = this.extractSpriteReferences();
618
+ for (const ref of spriteRefs) {
619
+ assets.push({
620
+ id: this.generateId(),
621
+ name: ref.name,
622
+ type: 'texture',
623
+ path: ref.path,
624
+ data: { guid: ref.guid },
625
+ });
626
+ }
627
+ // Extract audio references
628
+ const audioRefs = this.extractAudioReferences();
629
+ for (const ref of audioRefs) {
630
+ assets.push({
631
+ id: this.generateId(),
632
+ name: ref.name,
633
+ type: 'audio',
634
+ path: ref.path,
635
+ data: { guid: ref.guid },
636
+ });
637
+ }
638
+ // Extract animation references
639
+ const animRefs = this.extractAnimationReferences();
640
+ for (const ref of animRefs) {
641
+ assets.push({
642
+ id: this.generateId(),
643
+ name: ref.name,
644
+ type: 'animation',
645
+ path: ref.path,
646
+ data: { guid: ref.guid },
647
+ });
648
+ }
649
+ return assets;
650
+ }
651
+ extractSpriteReferences() {
652
+ const refs = [];
653
+ for (const component of this.components.values()) {
654
+ const sprite = component.m_Sprite;
655
+ if (sprite === null || sprite === void 0 ? void 0 : sprite.guid) {
656
+ refs.push({
657
+ name: `sprite_${sprite.guid.substring(0, 8)}`,
658
+ path: `Assets/Sprites/${sprite.guid}`,
659
+ guid: sprite.guid,
660
+ });
661
+ }
662
+ }
663
+ return refs;
664
+ }
665
+ extractAudioReferences() {
666
+ const refs = [];
667
+ for (const component of this.components.values()) {
668
+ const clip = component.m_audioClip;
669
+ if (clip === null || clip === void 0 ? void 0 : clip.guid) {
670
+ refs.push({
671
+ name: `audio_${clip.guid.substring(0, 8)}`,
672
+ path: `Assets/Audio/${clip.guid}`,
673
+ guid: clip.guid,
674
+ });
675
+ }
676
+ }
677
+ return refs;
678
+ }
679
+ extractAnimationReferences() {
680
+ const refs = [];
681
+ for (const component of this.components.values()) {
682
+ const controller = component.m_Controller;
683
+ if (controller === null || controller === void 0 ? void 0 : controller.guid) {
684
+ refs.push({
685
+ name: `animation_${controller.guid.substring(0, 8)}`,
686
+ path: `Assets/Animations/${controller.guid}`,
687
+ guid: controller.guid,
688
+ });
689
+ }
690
+ }
691
+ return refs;
692
+ }
693
+ // ----------------------------------------
694
+ // Helper Methods
695
+ // ----------------------------------------
696
+ quaternionToEulerY(x, y, z, w) {
697
+ // Simplified conversion - returns Y rotation (most common for 2D)
698
+ const sinr_cosp = 2 * (w * z + x * y);
699
+ const cosr_cosp = 1 - 2 * (y * y + z * z);
700
+ return Math.atan2(sinr_cosp, cosr_cosp) * (180 / Math.PI);
701
+ }
702
+ async readFile(path) {
703
+ var _a;
704
+ // In browser environment, this would use fetch or FileReader
705
+ // In Node.js, this would use fs.readFileSync
706
+ if (typeof globalThis.process !== 'undefined' && ((_a = globalThis.process.versions) === null || _a === void 0 ? void 0 : _a.node)) {
707
+ const fs = await import('fs');
708
+ return fs.readFileSync(path, 'utf-8');
709
+ }
710
+ else if (typeof fetch !== 'undefined') {
711
+ const response = await fetch(path);
712
+ return response.text();
713
+ }
714
+ throw new Error('Unable to read file in current environment');
715
+ }
716
+ /** Convert Unity RectTransform to Nice2Dev format */
717
+ convertRectTransform(transform) {
718
+ return {
719
+ type: 'RectTransform',
720
+ data: {
721
+ anchorMin: transform.m_AnchorMin || { x: 0.5, y: 0.5 },
722
+ anchorMax: transform.m_AnchorMax || { x: 0.5, y: 0.5 },
723
+ anchoredPosition: transform.m_AnchoredPosition || { x: 0, y: 0 },
724
+ sizeDelta: transform.m_SizeDelta || { x: 100, y: 100 },
725
+ pivot: transform.m_Pivot || { x: 0.5, y: 0.5 },
726
+ },
727
+ };
728
+ }
729
+ }
730
+
731
+ exports.UnitySceneImporter = UnitySceneImporter;
732
+ //# sourceMappingURL=UnitySceneImporter.js.map