@@ -220,6 +220,9 @@ function LDtkLoad(level_name) {
220220 case " Entities" : // instances
221221 var tile_size = this_layer.__gridSize // for scaling
222222
223+ var entity_references = {};
224+ var entity_ref_fetch_list = [];
225+
223226 // for every entity in the level
224227 for (var e = 0 ; e < array_length (this_layer.entityInstances ); ++e) {
225228 var entity = this_layer.entityInstances [e]
@@ -244,13 +247,14 @@ function LDtkLoad(level_name) {
244247
245248 var inst = instance_create_layer (_x, _y, gm_layer_id, oEmpty) // we'll need instance_change() to work around the create event
246249
250+ // add to entity_reference
251+ entity_references[$ entity.iid ] = inst;
252+
247253 // TODO: Change this up for objects without sprites
248254 var spr = object_get_sprite (object_id)
249255 var sw = sprite_get_width (spr)
250256 var sh = sprite_get_height (spr)
251257
252- inst.image_xscale = entity.width / sw
253- inst.image_yscale = entity.height / sh
254258
255259 // Load the fields
256260
@@ -291,6 +295,14 @@ function LDtkLoad(level_name) {
291295 field_value[@ j] = __LDtkPrepareColor (field_value[j])
292296 }
293297 break
298+ case " EntityRef" :
299+ // add to entity_ref_fetch_list so we can add the proper reference later
300+ array_push (entity_ref_fetch_list, {
301+ " gm_instance" : inst,
302+ " gm_var_name" : gm_field_name,
303+ " entity_ref" : field_value.entityIid
304+ })
305+ break
294306 default :
295307 if (string_pos (" LocalEnum" , field_type)) {
296308 var enum_name_idx = string_pos (" ." , field_type)
@@ -306,7 +318,6 @@ function LDtkLoad(level_name) {
306318 field_value = __LDtkPrepareEnum (_enum_name, field_value)
307319 }
308320 }
309-
310321 break
311322 }
312323
@@ -326,6 +337,13 @@ function LDtkLoad(level_name) {
326337 __LDtkTrace (" Loaded Entity! GM instance id=%" , inst)
327338 }
328339
340+ // Add proper instance references to entity reference fields
341+ for (var j = 0 ; j < array_length (entity_ref_fetch_list); ++j) {
342+ var _fetch = entity_ref_fetch_list[j]
343+ var _gm_inst = _fetch.gm_instance
344+ variable_instance_set (_gm_inst, _fetch.gm_var_name , entity_references[$ _fetch.entity_ref ])
345+ }
346+
329347 __LDtkTrace (" Loaded an Entities Layer! name=%, gm_name=%" , _layer_name, gm_layer_name)
330348 break
331349 case " IntGrid" : // just ignore...
0 commit comments