@nice2dev/game-engine 1.0.2 → 1.0.4

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 (188) hide show
  1. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  2. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  3. package/dist/cjs/ai/StateMachine.js +783 -0
  4. package/dist/cjs/ai/StateMachine.js.map +1 -0
  5. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  6. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  7. package/dist/cjs/editor/TimelineEditor.js +819 -0
  8. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  9. package/dist/cjs/export/GodotExporter.js +1102 -0
  10. package/dist/cjs/export/GodotExporter.js.map +1 -0
  11. package/dist/cjs/export/PlatformExporter.js +236 -0
  12. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  13. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  14. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  15. package/dist/cjs/export/UnityExporter.js +1193 -0
  16. package/dist/cjs/export/UnityExporter.js.map +1 -0
  17. package/dist/cjs/export/WebExporter.js +1036 -0
  18. package/dist/cjs/export/WebExporter.js.map +1 -0
  19. package/dist/cjs/export/index.js +58 -0
  20. package/dist/cjs/export/index.js.map +1 -0
  21. package/dist/cjs/import/AsepriteImporter.js +761 -0
  22. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  23. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  24. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  25. package/dist/cjs/import/GameMakerImporter.js +559 -0
  26. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  27. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  28. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  29. package/dist/cjs/import/LDtkImporter.js +481 -0
  30. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  31. package/dist/cjs/import/Live2DImporter.js +553 -0
  32. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  33. package/dist/cjs/import/NdgFormat.js +499 -0
  34. package/dist/cjs/import/NdgFormat.js.map +1 -0
  35. package/dist/cjs/import/OgmoImporter.js +529 -0
  36. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  37. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  38. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/SceneImporter.js +449 -0
  40. package/dist/cjs/import/SceneImporter.js.map +1 -0
  41. package/dist/cjs/import/SpineImporter.js +583 -0
  42. package/dist/cjs/import/SpineImporter.js.map +1 -0
  43. package/dist/cjs/import/SpriterImporter.js +652 -0
  44. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  45. package/dist/cjs/import/TiledMapImporter.js +859 -0
  46. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  47. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  48. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  49. package/dist/cjs/import/index.js +305 -0
  50. package/dist/cjs/import/index.js.map +1 -0
  51. package/dist/cjs/index.js +201 -0
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/scripting/GraphToAST.js +567 -0
  54. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  55. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  56. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  57. package/dist/cjs/scripting/ScriptAST.js +67 -0
  58. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  59. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  60. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  61. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  62. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  63. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  64. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  65. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  66. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  67. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  68. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  69. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  70. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  71. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  72. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  73. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  74. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  75. package/dist/esm/ai/BehaviorTree.js +1186 -0
  76. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  77. package/dist/esm/ai/StateMachine.js +767 -0
  78. package/dist/esm/ai/StateMachine.js.map +1 -0
  79. package/dist/esm/editor/ShaderGraph.js +1606 -0
  80. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  81. package/dist/esm/editor/TimelineEditor.js +800 -0
  82. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  83. package/dist/esm/export/GodotExporter.js +1100 -0
  84. package/dist/esm/export/GodotExporter.js.map +1 -0
  85. package/dist/esm/export/PlatformExporter.js +230 -0
  86. package/dist/esm/export/PlatformExporter.js.map +1 -0
  87. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  88. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  89. package/dist/esm/export/UnityExporter.js +1191 -0
  90. package/dist/esm/export/UnityExporter.js.map +1 -0
  91. package/dist/esm/export/WebExporter.js +1033 -0
  92. package/dist/esm/export/WebExporter.js.map +1 -0
  93. package/dist/esm/export/index.js +44 -0
  94. package/dist/esm/export/index.js.map +1 -0
  95. package/dist/esm/import/AsepriteImporter.js +759 -0
  96. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  97. package/dist/esm/import/DragonBonesImporter.js +496 -0
  98. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  99. package/dist/esm/import/GameMakerImporter.js +556 -0
  100. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  101. package/dist/esm/import/GodotSceneImporter.js +822 -0
  102. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  103. package/dist/esm/import/LDtkImporter.js +479 -0
  104. package/dist/esm/import/LDtkImporter.js.map +1 -0
  105. package/dist/esm/import/Live2DImporter.js +550 -0
  106. package/dist/esm/import/Live2DImporter.js.map +1 -0
  107. package/dist/esm/import/NdgFormat.js +490 -0
  108. package/dist/esm/import/NdgFormat.js.map +1 -0
  109. package/dist/esm/import/OgmoImporter.js +526 -0
  110. package/dist/esm/import/OgmoImporter.js.map +1 -0
  111. package/dist/esm/import/RPGMakerImporter.js +517 -0
  112. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  113. package/dist/esm/import/SceneImporter.js +441 -0
  114. package/dist/esm/import/SceneImporter.js.map +1 -0
  115. package/dist/esm/import/SpineImporter.js +580 -0
  116. package/dist/esm/import/SpineImporter.js.map +1 -0
  117. package/dist/esm/import/SpriterImporter.js +649 -0
  118. package/dist/esm/import/SpriterImporter.js.map +1 -0
  119. package/dist/esm/import/TiledMapImporter.js +857 -0
  120. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  121. package/dist/esm/import/UnitySceneImporter.js +730 -0
  122. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  123. package/dist/esm/import/index.js +279 -0
  124. package/dist/esm/import/index.js.map +1 -0
  125. package/dist/esm/index.js +36 -0
  126. package/dist/esm/index.js.map +1 -1
  127. package/dist/esm/scripting/GraphToAST.js +564 -0
  128. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  129. package/dist/esm/scripting/LanguageExporter.js +311 -0
  130. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  131. package/dist/esm/scripting/ScriptAST.js +52 -0
  132. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  133. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  134. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  135. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  136. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  137. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  138. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  139. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  140. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  141. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  142. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  143. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  144. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  145. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  146. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  147. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  148. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  149. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  150. package/dist/types/ai/StateMachine.d.ts +296 -0
  151. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  152. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  153. package/dist/types/export/GodotExporter.d.ts +56 -0
  154. package/dist/types/export/PlatformExporter.d.ts +201 -0
  155. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  156. package/dist/types/export/UnityExporter.d.ts +69 -0
  157. package/dist/types/export/WebExporter.d.ts +58 -0
  158. package/dist/types/export/index.d.ts +19 -0
  159. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  160. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  161. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  162. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  163. package/dist/types/import/LDtkImporter.d.ts +177 -0
  164. package/dist/types/import/Live2DImporter.d.ts +237 -0
  165. package/dist/types/import/NdgFormat.d.ts +387 -0
  166. package/dist/types/import/OgmoImporter.d.ts +237 -0
  167. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  168. package/dist/types/import/SceneImporter.d.ts +276 -0
  169. package/dist/types/import/SpineImporter.d.ts +372 -0
  170. package/dist/types/import/SpriterImporter.d.ts +230 -0
  171. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  172. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  173. package/dist/types/import/index.d.ts +59 -0
  174. package/dist/types/index.d.ts +29 -17
  175. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  176. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  177. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  178. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  179. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  180. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  181. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  182. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  183. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  184. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  185. package/dist/types/scripting/exporters/index.d.ts +8 -0
  186. package/dist/types/scripting/index.d.ts +11 -0
  187. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  188. package/package.json +3 -3
@@ -0,0 +1,449 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @file SceneImporter.ts
5
+ * @description Base infrastructure for importing scenes from external game engine formats
6
+ * PRO-1.3: Scene Format Interoperability
7
+ *
8
+ * Supports importing from:
9
+ * - Unity (.unity, .prefab)
10
+ * - Godot (.tscn, .tres)
11
+ * - Tiled (.tmx, .tsx)
12
+ * - LDtk (.ldtk, .ldtkl)
13
+ * - Aseprite (.aseprite, .ase)
14
+ * - OGMO (.ogmo, .json)
15
+ * - GameMaker (.yy)
16
+ * - Spine (.json, .atlas)
17
+ * - DragonBones (.json)
18
+ */
19
+ const IMPORT_SOURCES = {
20
+ unity: {
21
+ type: 'unity',
22
+ name: 'Unity',
23
+ description: 'Unity scene and prefab files',
24
+ extensions: ['.unity', '.prefab', '.asset', '.meta'],
25
+ supportsAnimation: true,
26
+ supportsLayers: true,
27
+ supportsTilemap: true,
28
+ },
29
+ godot: {
30
+ type: 'godot',
31
+ name: 'Godot',
32
+ description: 'Godot scene and resource files',
33
+ extensions: ['.tscn', '.tres', '.godot'],
34
+ supportsAnimation: true,
35
+ supportsLayers: true,
36
+ supportsTilemap: true,
37
+ },
38
+ tiled: {
39
+ type: 'tiled',
40
+ name: 'Tiled',
41
+ description: 'Tiled Map Editor files',
42
+ extensions: ['.tmx', '.tsx', '.tx', '.tj'],
43
+ supportsAnimation: true,
44
+ supportsLayers: true,
45
+ supportsTilemap: true,
46
+ },
47
+ ldtk: {
48
+ type: 'ldtk',
49
+ name: 'LDtk',
50
+ description: 'LDtk Level Designer Toolkit',
51
+ extensions: ['.ldtk', '.ldtkl'],
52
+ supportsAnimation: false,
53
+ supportsLayers: true,
54
+ supportsTilemap: true,
55
+ },
56
+ aseprite: {
57
+ type: 'aseprite',
58
+ name: 'Aseprite',
59
+ description: 'Aseprite sprite editor files',
60
+ extensions: ['.aseprite', '.ase'],
61
+ supportsAnimation: true,
62
+ supportsLayers: true,
63
+ supportsTilemap: false,
64
+ },
65
+ ogmo: {
66
+ type: 'ogmo',
67
+ name: 'OGMO',
68
+ description: 'OGMO Editor levels',
69
+ extensions: ['.ogmo', '.json'],
70
+ supportsAnimation: false,
71
+ supportsLayers: true,
72
+ supportsTilemap: true,
73
+ },
74
+ gamemaker: {
75
+ type: 'gamemaker',
76
+ name: 'GameMaker',
77
+ description: 'GameMaker Studio room files',
78
+ extensions: ['.yy', '.yyp'],
79
+ supportsAnimation: true,
80
+ supportsLayers: true,
81
+ supportsTilemap: true,
82
+ },
83
+ rpgmaker: {
84
+ type: 'rpgmaker',
85
+ name: 'RPG Maker',
86
+ description: 'RPG Maker MV/MZ map files',
87
+ extensions: ['.json'],
88
+ supportsAnimation: true,
89
+ supportsLayers: true,
90
+ supportsTilemap: true,
91
+ },
92
+ spine: {
93
+ type: 'spine',
94
+ name: 'Spine',
95
+ description: 'Spine skeletal animation',
96
+ extensions: ['.json', '.skel', '.atlas'],
97
+ supportsAnimation: true,
98
+ supportsLayers: false,
99
+ supportsTilemap: false,
100
+ },
101
+ dragonbones: {
102
+ type: 'dragonbones',
103
+ name: 'DragonBones',
104
+ description: 'DragonBones skeletal animation',
105
+ extensions: ['.json', '.dbbin'],
106
+ supportsAnimation: true,
107
+ supportsLayers: false,
108
+ supportsTilemap: false,
109
+ },
110
+ live2d: {
111
+ type: 'live2d',
112
+ name: 'Live2D',
113
+ description: 'Live2D Cubism character animation',
114
+ extensions: ['.model3.json', '.moc3', '.cdi3.json'],
115
+ supportsAnimation: true,
116
+ supportsLayers: false,
117
+ supportsTilemap: false,
118
+ },
119
+ spriter: {
120
+ type: 'spriter',
121
+ name: 'Spriter',
122
+ description: 'Spriter Pro animations',
123
+ extensions: ['.scml', '.scon'],
124
+ supportsAnimation: true,
125
+ supportsLayers: false,
126
+ supportsTilemap: false,
127
+ },
128
+ };
129
+ // ============================================================
130
+ // Abstract Scene Importer
131
+ // ============================================================
132
+ class SceneImporter {
133
+ constructor(sourceType) {
134
+ this.errors = [];
135
+ this.warnings = [];
136
+ this.sourceType = sourceType;
137
+ this.options = { sourcePath: '' };
138
+ }
139
+ /** Get importer source info */
140
+ getSourceInfo() {
141
+ return IMPORT_SOURCES[this.sourceType];
142
+ }
143
+ /** Check if this importer can handle the given file */
144
+ canHandle(filePath) {
145
+ const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
146
+ return this.getSourceInfo().extensions.includes(ext);
147
+ }
148
+ // ----------------------------------------
149
+ // Helper Methods
150
+ // ----------------------------------------
151
+ addError(code, message, file, line, fatal = false) {
152
+ this.errors.push({ code, message, file, line, fatal });
153
+ }
154
+ addWarning(code, message, file, suggestion) {
155
+ this.warnings.push({ code, message, file, suggestion });
156
+ }
157
+ clearMessages() {
158
+ this.errors = [];
159
+ this.warnings = [];
160
+ }
161
+ /** Convert parsed scene to Nice2Dev scene */
162
+ convertToNiceScene(parsed) {
163
+ const entities = this.flattenEntities(parsed.entities, parsed.layers);
164
+ return {
165
+ id: this.generateId(),
166
+ name: parsed.name,
167
+ entities: entities.map((e) => this.convertToNiceEntity(e)),
168
+ settings: {
169
+ width: parsed.width || 1920,
170
+ height: parsed.height || 1080,
171
+ backgroundColor: parsed.backgroundColor || '#1a1a2e',
172
+ gravity: { x: 0, y: 980 },
173
+ ...parsed.properties,
174
+ },
175
+ };
176
+ }
177
+ /** Alias for convertToNiceScene (used by subclass importers) */
178
+ convertParsedToNiceScene(parsed) {
179
+ return this.convertToNiceScene(parsed);
180
+ }
181
+ /** Flatten layer-based entities into single list */
182
+ flattenEntities(entities, layers) {
183
+ const result = [...entities];
184
+ for (const layer of layers) {
185
+ if (layer.objects) {
186
+ for (const obj of layer.objects) {
187
+ result.push({
188
+ ...obj,
189
+ properties: {
190
+ ...obj.properties,
191
+ layerName: layer.name,
192
+ zIndex: layer.zIndex,
193
+ },
194
+ });
195
+ }
196
+ }
197
+ }
198
+ return result;
199
+ }
200
+ /** Convert parsed entity to Nice2Dev entity */
201
+ convertToNiceEntity(parsed) {
202
+ const components = [];
203
+ // Transform component
204
+ components.push({
205
+ type: 'Transform',
206
+ data: {
207
+ position: { x: parsed.x, y: parsed.y },
208
+ rotation: parsed.rotation,
209
+ scale: { x: parsed.scaleX, y: parsed.scaleY },
210
+ },
211
+ });
212
+ // Convert parsed components
213
+ for (const comp of parsed.components) {
214
+ components.push(this.convertComponent(comp));
215
+ }
216
+ return {
217
+ id: parsed.id || this.generateId(),
218
+ name: parsed.name,
219
+ components,
220
+ children: parsed.children.map((c) => this.convertToNiceEntity(c)),
221
+ tags: parsed.type ? [parsed.type] : [],
222
+ active: parsed.visible,
223
+ };
224
+ }
225
+ /** Convert a component from source format to Nice2Dev format */
226
+ convertComponent(parsed) {
227
+ // This should be overridden by specific importers
228
+ return {
229
+ type: parsed.type,
230
+ data: parsed.data,
231
+ };
232
+ }
233
+ /** Convert parsed asset to Nice2Dev asset */
234
+ convertToNiceAsset(parsed) {
235
+ return {
236
+ id: parsed.id || this.generateId(),
237
+ name: parsed.name,
238
+ type: parsed.type,
239
+ path: parsed.path,
240
+ data: parsed.metadata,
241
+ };
242
+ }
243
+ /** Generate unique ID */
244
+ generateId() {
245
+ return `nice_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
246
+ }
247
+ /** Create empty import result */
248
+ createEmptyResult() {
249
+ return {
250
+ success: false,
251
+ scenes: [],
252
+ entities: [],
253
+ assets: [],
254
+ errors: [],
255
+ warnings: [],
256
+ statistics: {
257
+ scenesImported: 0,
258
+ entitiesImported: 0,
259
+ assetsImported: 0,
260
+ animationsImported: 0,
261
+ tilemapsImported: 0,
262
+ scriptsConverted: 0,
263
+ importDurationMs: 0,
264
+ },
265
+ };
266
+ }
267
+ /** Create successful result */
268
+ createResult(scenes, assets, startTime, project) {
269
+ const entities = scenes.flatMap((s) => s.entities);
270
+ return {
271
+ success: this.errors.filter((e) => e.fatal).length === 0,
272
+ project,
273
+ scenes,
274
+ entities,
275
+ assets,
276
+ errors: [...this.errors],
277
+ warnings: [...this.warnings],
278
+ statistics: {
279
+ scenesImported: scenes.length,
280
+ entitiesImported: entities.length,
281
+ assetsImported: assets.length,
282
+ animationsImported: assets.filter((a) => a.type === 'animation').length,
283
+ tilemapsImported: scenes.filter((s) => s.entities.some((e) => e.components.some((c) => c.type === 'Tilemap'))).length,
284
+ scriptsConverted: assets.filter((a) => a.type === 'script').length,
285
+ importDurationMs: Date.now() - startTime,
286
+ },
287
+ };
288
+ }
289
+ }
290
+ // ============================================================
291
+ // Utility Functions
292
+ // ============================================================
293
+ /** Parse YAML content (basic implementation) */
294
+ function parseYAML(content) {
295
+ // Basic YAML parser for Unity files
296
+ const lines = content.split('\n');
297
+ const result = {};
298
+ const stack = [{ obj: result, indent: -1 }];
299
+ for (const line of lines) {
300
+ if (line.trim() === '' || line.trim().startsWith('#') || line.trim().startsWith('%')) {
301
+ continue;
302
+ }
303
+ const indent = line.search(/\S/);
304
+ const trimmed = line.trim();
305
+ // Pop stack until we find parent
306
+ while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
307
+ stack.pop();
308
+ }
309
+ const parent = stack[stack.length - 1].obj;
310
+ if (trimmed.startsWith('- ')) {
311
+ // Array item
312
+ const key = Object.keys(parent).pop();
313
+ if (key && !Array.isArray(parent[key])) {
314
+ parent[key] = [];
315
+ }
316
+ if (key && Array.isArray(parent[key])) {
317
+ const value = trimmed.substring(2);
318
+ if (value.includes(':')) {
319
+ const obj = {};
320
+ const [k, v] = value.split(':').map((s) => s.trim());
321
+ obj[k] = parseYAMLValue(v);
322
+ parent[key].push(obj);
323
+ stack.push({ obj, indent });
324
+ }
325
+ else {
326
+ parent[key].push(parseYAMLValue(value));
327
+ }
328
+ }
329
+ }
330
+ else if (trimmed.includes(':')) {
331
+ const colonIndex = trimmed.indexOf(':');
332
+ const key = trimmed.substring(0, colonIndex).trim();
333
+ const value = trimmed.substring(colonIndex + 1).trim();
334
+ if (value === '' || value === '|' || value === '>') {
335
+ // Nested object or multiline string
336
+ parent[key] = {};
337
+ stack.push({ obj: parent[key], indent });
338
+ }
339
+ else if (value.startsWith('{') && value.endsWith('}')) {
340
+ // Inline object
341
+ parent[key] = parseInlineYAMLObject(value);
342
+ }
343
+ else {
344
+ parent[key] = parseYAMLValue(value);
345
+ }
346
+ }
347
+ }
348
+ return result;
349
+ }
350
+ function parseYAMLValue(value) {
351
+ if (value === 'true')
352
+ return true;
353
+ if (value === 'false')
354
+ return false;
355
+ if (value === 'null' || value === '~')
356
+ return null;
357
+ if (/^-?\d+$/.test(value))
358
+ return parseInt(value, 10);
359
+ if (/^-?\d+\.\d+$/.test(value))
360
+ return parseFloat(value);
361
+ if ((value.startsWith('"') && value.endsWith('"')) ||
362
+ (value.startsWith("'") && value.endsWith("'"))) {
363
+ return value.slice(1, -1);
364
+ }
365
+ return value;
366
+ }
367
+ function parseInlineYAMLObject(value) {
368
+ const result = {};
369
+ const content = value.slice(1, -1).trim();
370
+ const pairs = content.split(',').map((s) => s.trim());
371
+ for (const pair of pairs) {
372
+ const [k, v] = pair.split(':').map((s) => s.trim());
373
+ result[k] = parseYAMLValue(v);
374
+ }
375
+ return result;
376
+ }
377
+ /** Parse XML content to object */
378
+ function parseXML(content) {
379
+ const parser = new DOMParser();
380
+ const doc = parser.parseFromString(content, 'text/xml');
381
+ return xmlToObject(doc.documentElement);
382
+ }
383
+ function xmlToObject(element) {
384
+ var _a;
385
+ const result = {
386
+ name: element.tagName,
387
+ attributes: {},
388
+ children: [],
389
+ text: '',
390
+ };
391
+ // Get attributes
392
+ for (const attr of Array.from(element.attributes)) {
393
+ result.attributes[attr.name] = attr.value;
394
+ }
395
+ // Get children
396
+ for (const child of Array.from(element.children)) {
397
+ result.children.push(xmlToObject(child));
398
+ }
399
+ // Get text content
400
+ const textNode = Array.from(element.childNodes).find((n) => n.nodeType === Node.TEXT_NODE);
401
+ if (textNode) {
402
+ result.text = ((_a = textNode.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
403
+ }
404
+ return result;
405
+ }
406
+ /** Detect import source type from file */
407
+ function detectSourceType(filePath, content) {
408
+ const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
409
+ // By extension
410
+ for (const [type, info] of Object.entries(IMPORT_SOURCES)) {
411
+ if (info.extensions.includes(ext)) {
412
+ // Handle ambiguous extensions
413
+ if (ext === '.json' && content) {
414
+ // Check content to distinguish between formats
415
+ if (content.includes('"ldtkVersion"'))
416
+ return 'ldtk';
417
+ if (content.includes('"ogmoVersion"'))
418
+ return 'ogmo';
419
+ if (content.includes('"skeleton"') && content.includes('"bones"'))
420
+ return 'spine';
421
+ if (content.includes('"armature"') && content.includes('"slot"'))
422
+ return 'dragonbones';
423
+ if (content.includes('"FileVersion"') && content.includes('"Cubism"'))
424
+ return 'live2d';
425
+ if (content.includes('"events"') && content.includes('"tilesets"'))
426
+ return 'rpgmaker';
427
+ }
428
+ return type;
429
+ }
430
+ }
431
+ return null;
432
+ }
433
+ /** Get all available importers */
434
+ function getAvailableImporters() {
435
+ return Object.values(IMPORT_SOURCES);
436
+ }
437
+ /** Check if an importer exists for the given source type */
438
+ function hasImporter(sourceType) {
439
+ return sourceType in IMPORT_SOURCES;
440
+ }
441
+
442
+ exports.IMPORT_SOURCES = IMPORT_SOURCES;
443
+ exports.SceneImporter = SceneImporter;
444
+ exports.detectSourceType = detectSourceType;
445
+ exports.getAvailableImporters = getAvailableImporters;
446
+ exports.hasImporter = hasImporter;
447
+ exports.parseXML = parseXML;
448
+ exports.parseYAML = parseYAML;
449
+ //# sourceMappingURL=SceneImporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneImporter.js","sources":["../../../src/import/SceneImporter.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}