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