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