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