@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,559 @@
1
+ 'use strict';
2
+
3
+ var SceneImporter = require('./SceneImporter.js');
4
+
5
+ /**
6
+ * @file GameMakerImporter.ts
7
+ * @description GameMaker Studio 2 Room Importer
8
+ * PRO-1.3: Scene Format Interoperability
9
+ *
10
+ * Supports GameMaker Studio 2 .yy format (JSON-based).
11
+ *
12
+ * File Types:
13
+ * - *.yy - Room, object, sprite, script files
14
+ * - *.yyp - Project file
15
+ */
16
+ // ============================================================
17
+ // GameMaker Importer
18
+ // ============================================================
19
+ class GameMakerImporter extends SceneImporter.SceneImporter {
20
+ constructor() {
21
+ super('gamemaker');
22
+ this.objects = new Map();
23
+ this.sprites = new Map();
24
+ }
25
+ canHandle(filePath) {
26
+ const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
27
+ return ext === '.yy' || ext === '.yyp';
28
+ }
29
+ async import(options) {
30
+ var _a;
31
+ const startTime = Date.now();
32
+ this.options = options;
33
+ this.clearMessages();
34
+ const scenes = [];
35
+ const assets = [];
36
+ try {
37
+ const content = await this.readFile(options.sourcePath);
38
+ const data = JSON.parse(content);
39
+ if (this.isRoomFile(data)) {
40
+ const room = data;
41
+ const scene = this.convertRoomToScene(room);
42
+ scenes.push(scene);
43
+ // Extract assets from layers
44
+ this.extractAssetsFromLayers(room.layers, assets);
45
+ }
46
+ else if (this.isSpriteFile(data)) {
47
+ const sprite = data;
48
+ assets.push(this.convertSpriteToAsset(sprite));
49
+ }
50
+ else if (this.isObjectFile(data)) {
51
+ const object = data;
52
+ // Objects become prefabs/templates
53
+ assets.push({
54
+ id: this.generateId(),
55
+ name: object.name,
56
+ type: 'prefab',
57
+ path: options.sourcePath,
58
+ data: {
59
+ spriteId: (_a = object.spriteId) === null || _a === void 0 ? void 0 : _a.name,
60
+ solid: object.solid,
61
+ visible: object.visible,
62
+ persistent: object.persistent,
63
+ physics: object.physicsObject
64
+ ? {
65
+ sensor: object.physicsSensor,
66
+ shape: object.physicsShape,
67
+ density: object.physicsDensity,
68
+ friction: object.physicsFriction,
69
+ restitution: object.physicsRestitution,
70
+ }
71
+ : undefined,
72
+ },
73
+ });
74
+ }
75
+ }
76
+ catch (error) {
77
+ this.addError('IMPORT_ERROR', `Failed to import: ${error}`, options.sourcePath, undefined, true);
78
+ }
79
+ return this.createResult(scenes, assets, startTime);
80
+ }
81
+ async parseFile(content, filePath) {
82
+ const stringContent = typeof content === 'string' ? content : new TextDecoder().decode(content);
83
+ try {
84
+ const data = JSON.parse(stringContent);
85
+ if (this.isRoomFile(data)) {
86
+ return this.convertRoomToParsed(data);
87
+ }
88
+ }
89
+ catch (_a) {
90
+ return null;
91
+ }
92
+ return null;
93
+ }
94
+ async validate(sourcePath) {
95
+ const errors = [];
96
+ if (!this.canHandle(sourcePath)) {
97
+ errors.push({
98
+ code: 'INVALID_FORMAT',
99
+ message: `File ${sourcePath} is not a valid GameMaker file`,
100
+ file: sourcePath,
101
+ fatal: true,
102
+ });
103
+ }
104
+ return errors;
105
+ }
106
+ // ----------------------------------------
107
+ // Type Checks
108
+ // ----------------------------------------
109
+ isRoomFile(data) {
110
+ const obj = data;
111
+ return (obj === null || obj === void 0 ? void 0 : obj.resourceType) === 'GMRoom';
112
+ }
113
+ isSpriteFile(data) {
114
+ const obj = data;
115
+ return (obj === null || obj === void 0 ? void 0 : obj.resourceType) === 'GMSprite';
116
+ }
117
+ isObjectFile(data) {
118
+ const obj = data;
119
+ return (obj === null || obj === void 0 ? void 0 : obj.resourceType) === 'GMObject';
120
+ }
121
+ // ----------------------------------------
122
+ // Room Conversion
123
+ // ----------------------------------------
124
+ convertRoomToScene(room) {
125
+ const entities = [];
126
+ // Convert layers recursively
127
+ for (const layer of room.layers) {
128
+ const layerEntities = this.convertLayer(layer);
129
+ entities.push(...layerEntities);
130
+ }
131
+ return {
132
+ id: this.generateId(),
133
+ name: room.name,
134
+ entities,
135
+ settings: {
136
+ width: room.roomSettings.Width,
137
+ height: room.roomSettings.Height,
138
+ backgroundColor: '#000000',
139
+ persistent: room.roomSettings.persistent,
140
+ physics: room.physicsSettings.PhysicsWorld
141
+ ? {
142
+ gravityX: room.physicsSettings.PhysicsWorldGravityX,
143
+ gravityY: room.physicsSettings.PhysicsWorldGravityY,
144
+ pixelsPerMeter: room.physicsSettings.PhysicsWorldPixToMetres,
145
+ }
146
+ : undefined,
147
+ views: room.viewSettings.enableViews,
148
+ },
149
+ };
150
+ }
151
+ convertRoomToParsed(room) {
152
+ const layers = [];
153
+ const entities = [];
154
+ // Convert layers
155
+ for (const layer of room.layers) {
156
+ const [parsedLayer, layerEntities] = this.convertLayerToParsed(layer);
157
+ if (parsedLayer) {
158
+ layers.push(parsedLayer);
159
+ }
160
+ entities.push(...layerEntities);
161
+ }
162
+ return {
163
+ name: room.name,
164
+ width: room.roomSettings.Width,
165
+ height: room.roomSettings.Height,
166
+ backgroundColor: '#000000',
167
+ layers,
168
+ entities,
169
+ properties: {
170
+ persistent: room.roomSettings.persistent,
171
+ physics: room.physicsSettings.PhysicsWorld,
172
+ views: room.viewSettings.enableViews,
173
+ },
174
+ };
175
+ }
176
+ // ----------------------------------------
177
+ // Layer Conversion
178
+ // ----------------------------------------
179
+ convertLayer(layer) {
180
+ const entities = [];
181
+ switch (layer.resourceType) {
182
+ case 'GMRLayer':
183
+ // Instance layer or folder
184
+ if ('instances' in layer && layer.instances) {
185
+ for (const instance of layer.instances) {
186
+ entities.push(this.convertInstance(instance, layer.depth));
187
+ }
188
+ }
189
+ // Process sublayers
190
+ if (layer.layers) {
191
+ for (const sublayer of layer.layers) {
192
+ entities.push(...this.convertLayer(sublayer));
193
+ }
194
+ }
195
+ break;
196
+ case 'GMRTileLayer':
197
+ entities.push(this.convertTileLayer(layer));
198
+ break;
199
+ case 'GMRBackgroundLayer':
200
+ entities.push(this.convertBackgroundLayer(layer));
201
+ break;
202
+ case 'GMRAssetLayer':
203
+ for (const asset of layer.assets) {
204
+ entities.push(this.convertAsset(asset, layer.depth));
205
+ }
206
+ break;
207
+ }
208
+ return entities;
209
+ }
210
+ convertLayerToParsed(layer) {
211
+ var _a, _b;
212
+ const entities = [];
213
+ let parsedLayer = null;
214
+ switch (layer.resourceType) {
215
+ case 'GMRTileLayer': {
216
+ const tileLayer = layer;
217
+ parsedLayer = {
218
+ name: layer.name,
219
+ type: 'tile',
220
+ visible: layer.visible,
221
+ opacity: 1,
222
+ offsetX: layer.x,
223
+ offsetY: layer.y,
224
+ zIndex: -layer.depth, // GM uses depth (negative = front)
225
+ tileData: tileLayer.tiles
226
+ ? {
227
+ width: tileLayer.tiles.SerialiseWidth,
228
+ height: tileLayer.tiles.SerialiseHeight,
229
+ tiles: tileLayer.tiles.TileSerialiseData || this.decompressTileData(tileLayer.tiles),
230
+ tileWidth: 32, // Default, would need tileset info
231
+ tileHeight: 32,
232
+ }
233
+ : undefined,
234
+ properties: {
235
+ tileset: (_a = tileLayer.tilesetId) === null || _a === void 0 ? void 0 : _a.name,
236
+ },
237
+ };
238
+ break;
239
+ }
240
+ case 'GMRLayer':
241
+ if ('instances' in layer && layer.instances) {
242
+ for (const instance of layer.instances) {
243
+ entities.push(this.convertInstanceToParsed(instance, layer.depth));
244
+ }
245
+ }
246
+ parsedLayer = {
247
+ name: layer.name,
248
+ type: 'object',
249
+ visible: layer.visible,
250
+ opacity: 1,
251
+ offsetX: 0,
252
+ offsetY: 0,
253
+ zIndex: -layer.depth,
254
+ properties: {},
255
+ };
256
+ break;
257
+ case 'GMRBackgroundLayer': {
258
+ const bgLayer = layer;
259
+ parsedLayer = {
260
+ name: layer.name,
261
+ type: 'image',
262
+ visible: layer.visible,
263
+ opacity: 1,
264
+ offsetX: layer.x,
265
+ offsetY: layer.y,
266
+ zIndex: -layer.depth,
267
+ properties: {
268
+ sprite: (_b = bgLayer.spriteId) === null || _b === void 0 ? void 0 : _b.name,
269
+ htiled: bgLayer.htiled,
270
+ vtiled: bgLayer.vtiled,
271
+ stretch: bgLayer.stretch,
272
+ },
273
+ };
274
+ break;
275
+ }
276
+ }
277
+ return [parsedLayer, entities];
278
+ }
279
+ // ----------------------------------------
280
+ // Instance Conversion
281
+ // ----------------------------------------
282
+ convertInstance(instance, depth) {
283
+ const components = [
284
+ {
285
+ type: 'Transform',
286
+ data: {
287
+ position: { x: instance.x, y: instance.y },
288
+ rotation: instance.rotation,
289
+ scale: { x: instance.scaleX, y: instance.scaleY },
290
+ },
291
+ },
292
+ {
293
+ type: 'Sprite',
294
+ data: {
295
+ imageIndex: instance.imageIndex,
296
+ imageSpeed: instance.imageSpeed,
297
+ color: this.colorToHex(instance.colour),
298
+ depth,
299
+ },
300
+ },
301
+ ];
302
+ // Add properties
303
+ if (instance.properties.length > 0) {
304
+ const props = {};
305
+ for (const prop of instance.properties) {
306
+ props[prop.propertyId.name] = prop.value;
307
+ }
308
+ components.push({
309
+ type: 'Properties',
310
+ data: props,
311
+ });
312
+ }
313
+ return {
314
+ id: instance.name,
315
+ name: instance.objectId.name,
316
+ components,
317
+ children: [],
318
+ tags: ['instance', ...(instance.tags || [])],
319
+ active: !instance.ignore,
320
+ };
321
+ }
322
+ convertInstanceToParsed(instance, depth) {
323
+ return {
324
+ id: instance.name,
325
+ name: instance.objectId.name,
326
+ type: instance.objectId.name,
327
+ x: instance.x,
328
+ y: instance.y,
329
+ width: 32, // Would need sprite info
330
+ height: 32,
331
+ rotation: instance.rotation,
332
+ scaleX: instance.scaleX,
333
+ scaleY: instance.scaleY,
334
+ visible: !instance.ignore,
335
+ components: [],
336
+ children: [],
337
+ properties: {
338
+ objectId: instance.objectId.path,
339
+ imageIndex: instance.imageIndex,
340
+ imageSpeed: instance.imageSpeed,
341
+ color: this.colorToHex(instance.colour),
342
+ depth,
343
+ tags: instance.tags,
344
+ },
345
+ };
346
+ }
347
+ // ----------------------------------------
348
+ // Tile Layer Conversion
349
+ // ----------------------------------------
350
+ convertTileLayer(layer) {
351
+ var _a;
352
+ const tileData = layer.tiles.TileSerialiseData || this.decompressTileData(layer.tiles);
353
+ return {
354
+ id: this.generateId(),
355
+ name: layer.name,
356
+ components: [
357
+ {
358
+ type: 'Transform',
359
+ data: {
360
+ position: { x: layer.x, y: layer.y },
361
+ rotation: 0,
362
+ scale: { x: 1, y: 1 },
363
+ },
364
+ },
365
+ {
366
+ type: 'Tilemap',
367
+ data: {
368
+ tileset: (_a = layer.tilesetId) === null || _a === void 0 ? void 0 : _a.name,
369
+ width: layer.tiles.SerialiseWidth,
370
+ height: layer.tiles.SerialiseHeight,
371
+ data: tileData,
372
+ depth: layer.depth,
373
+ },
374
+ },
375
+ ],
376
+ children: [],
377
+ tags: ['tilemap', layer.name],
378
+ active: layer.visible,
379
+ };
380
+ }
381
+ decompressTileData(tiles) {
382
+ if (tiles.TileSerialiseData) {
383
+ return tiles.TileSerialiseData;
384
+ }
385
+ // RLE decompression for compressed data
386
+ if (tiles.TileCompressedData && tiles.TileDataFormat === 1) {
387
+ const result = [];
388
+ const data = tiles.TileCompressedData;
389
+ for (let i = 0; i < data.length; i += 2) {
390
+ const count = data[i];
391
+ const value = data[i + 1];
392
+ for (let j = 0; j < count; j++) {
393
+ result.push(value);
394
+ }
395
+ }
396
+ return result;
397
+ }
398
+ return [];
399
+ }
400
+ // ----------------------------------------
401
+ // Background Layer Conversion
402
+ // ----------------------------------------
403
+ convertBackgroundLayer(layer) {
404
+ var _a;
405
+ return {
406
+ id: this.generateId(),
407
+ name: layer.name,
408
+ components: [
409
+ {
410
+ type: 'Transform',
411
+ data: {
412
+ position: { x: layer.x, y: layer.y },
413
+ rotation: 0,
414
+ scale: { x: 1, y: 1 },
415
+ },
416
+ },
417
+ {
418
+ type: 'Background',
419
+ data: {
420
+ sprite: (_a = layer.spriteId) === null || _a === void 0 ? void 0 : _a.name,
421
+ color: this.colorToHex(layer.colour),
422
+ stretch: layer.stretch,
423
+ htiled: layer.htiled,
424
+ vtiled: layer.vtiled,
425
+ animationFPS: layer.animationFPS,
426
+ depth: layer.depth,
427
+ hspeed: layer.hspeed,
428
+ vspeed: layer.vspeed,
429
+ },
430
+ },
431
+ ],
432
+ children: [],
433
+ tags: ['background'],
434
+ active: layer.visible,
435
+ };
436
+ }
437
+ // ----------------------------------------
438
+ // Asset Conversion
439
+ // ----------------------------------------
440
+ convertAsset(asset, depth) {
441
+ var _a, _b;
442
+ return {
443
+ id: this.generateId(),
444
+ name: asset.name,
445
+ components: [
446
+ {
447
+ type: 'Transform',
448
+ data: {
449
+ position: { x: asset.x, y: asset.y },
450
+ rotation: asset.rotation,
451
+ scale: { x: asset.scaleX, y: asset.scaleY },
452
+ },
453
+ },
454
+ {
455
+ type: 'Sprite',
456
+ data: {
457
+ texture: ((_a = asset.spriteId) === null || _a === void 0 ? void 0 : _a.name) || ((_b = asset.sequenceId) === null || _b === void 0 ? void 0 : _b.name),
458
+ color: this.colorToHex(asset.colour),
459
+ animationSpeed: asset.animationSpeed,
460
+ depth,
461
+ },
462
+ },
463
+ ],
464
+ children: [],
465
+ tags: ['asset', asset.resourceType],
466
+ active: !asset.ignore,
467
+ };
468
+ }
469
+ convertSpriteToAsset(sprite) {
470
+ return {
471
+ id: this.generateId(),
472
+ name: sprite.name,
473
+ type: 'texture',
474
+ path: `sprites/${sprite.name}/${sprite.name}.png`,
475
+ data: {
476
+ width: sprite.width,
477
+ height: sprite.height,
478
+ origin: { x: sprite.xorigin, y: sprite.yorigin },
479
+ bbox: {
480
+ left: sprite.bbox_left,
481
+ top: sprite.bbox_top,
482
+ right: sprite.bbox_right,
483
+ bottom: sprite.bbox_bottom,
484
+ },
485
+ frameCount: sprite.frames.length,
486
+ collisionKind: sprite.collisionKind,
487
+ nineSlice: sprite.nineSlice,
488
+ },
489
+ };
490
+ }
491
+ extractAssetsFromLayers(layers, assets) {
492
+ for (const layer of layers) {
493
+ if (layer.resourceType === 'GMRTileLayer') {
494
+ const tileLayer = layer;
495
+ if (tileLayer.tilesetId) {
496
+ assets.push({
497
+ id: this.generateId(),
498
+ name: tileLayer.tilesetId.name,
499
+ type: 'tileset',
500
+ path: tileLayer.tilesetId.path,
501
+ data: {},
502
+ });
503
+ }
504
+ }
505
+ else if (layer.resourceType === 'GMRBackgroundLayer') {
506
+ const bgLayer = layer;
507
+ if (bgLayer.spriteId) {
508
+ assets.push({
509
+ id: this.generateId(),
510
+ name: bgLayer.spriteId.name,
511
+ type: 'texture',
512
+ path: bgLayer.spriteId.path,
513
+ data: {},
514
+ });
515
+ }
516
+ }
517
+ // Process sublayers
518
+ if (layer.layers) {
519
+ this.extractAssetsFromLayers(layer.layers, assets);
520
+ }
521
+ }
522
+ }
523
+ // ----------------------------------------
524
+ // Utilities
525
+ // ----------------------------------------
526
+ colorToHex(color) {
527
+ // GM uses ARGB format
528
+ const a = (color >> 24) & 0xff;
529
+ const r = (color >> 16) & 0xff;
530
+ const g = (color >> 8) & 0xff;
531
+ const b = color & 0xff;
532
+ if (a < 255) {
533
+ return `rgba(${r}, ${g}, ${b}, ${a / 255})`;
534
+ }
535
+ return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
536
+ }
537
+ async readFile(path) {
538
+ var _a;
539
+ if (typeof globalThis.process !== 'undefined' && ((_a = globalThis.process.versions) === null || _a === void 0 ? void 0 : _a.node)) {
540
+ const fs = await import('fs');
541
+ return fs.readFileSync(path, 'utf-8');
542
+ }
543
+ else if (typeof fetch !== 'undefined') {
544
+ const response = await fetch(path);
545
+ return response.text();
546
+ }
547
+ throw new Error('Unable to read file in current environment');
548
+ }
549
+ }
550
+ // ============================================================
551
+ // Factory Function
552
+ // ============================================================
553
+ function createGameMakerImporter() {
554
+ return new GameMakerImporter();
555
+ }
556
+
557
+ exports.GameMakerImporter = GameMakerImporter;
558
+ exports.createGameMakerImporter = createGameMakerImporter;
559
+ //# sourceMappingURL=GameMakerImporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameMakerImporter.js","sources":["../../../src/import/GameMakerImporter.ts"],"sourcesContent":[null],"names":["SceneImporter"],"mappings":"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"}