@@ -11,6 +11,8 @@ global.__ldtk_config = {
1111 room_prefix: " r" ,
1212 object_prefix: " o" ,
1313
14+ clear_timemaps: false , // clear tilemaps on reload with empty tiles
15+
1416 mappings: { // if a mapping doesn't exist - ldtk name (with a prefix) is used
1517 levels: { // ldtk_level_name -> gm_room_name
1618
@@ -283,8 +285,6 @@ function LDtkLoad(level_name) {
283285 gm_field_name = field_name
284286
285287
286-
287-
288288 // some types require additional work
289289 switch (field_type) {
290290 case " Point" :
@@ -362,31 +362,25 @@ function LDtkLoad(level_name) {
362362 break
363363 case " Tiles" : // tile map!
364364 var tilemap = layer_tilemap_get_id (gm_layer_id)
365- // if this is commented, you can pipe different layers to
366- // var empty_tile = 0
367- // tilemap_clear(tilemap, empty_tile)
368365
369- // this is layer 's cell size
370- // var cwid = this_layer.__cWid
371- // var chei = this_layer.__cHei
366+ // this is the layers 's size in cells
367+ var cwid = this_layer.__cWid
368+ var chei = this_layer.__cHei
372369
373- // this is tileset's cell size
374- var cwid = -1
375- var chei = -1
370+ // find the tileset definition
376371 var tileset_def = undefined
372+ var found_tileset_def = false
377373
378374 for (var ts = 0 ; ts < array_length (data.defs .tilesets ); ++ts) {
379375 tileset_def = data.defs .tilesets [ts]
380376
381377 if tileset_def.uid == this_layer.__tilesetDefUid {
382- cwid = tileset_def.__cWid
383- chei = tileset_def.__cHei
384-
378+ found_tileset_def = true
385379 break
386380 }
387381 }
388382
389- if tileset_def == undefined
383+ if !found_tileset_def
390384 break
391385
392386 var tile_size = this_layer.__gridSize
@@ -404,8 +398,17 @@ function LDtkLoad(level_name) {
404398 if gm_tileset_id == -1
405399 break
406400
407- tilemap = layer_tilemap_create (gm_layer_id, this_layer.__pxTotalOffsetX , this_layer.__pxTotalOffsetY , gm_tileset_id, cwid * tile_size, chei * tile_size)
408- } else { // respect layer offsets
401+ tilemap = layer_tilemap_create (gm_layer_id, this_layer.__pxTotalOffsetX , this_layer.__pxTotalOffsetY , gm_tileset_id, cwid, chei)
402+ } else { // the tilemap is already there
403+ // resize it
404+ tilemap_set_width (tilemap, cwid)
405+ tilemap_set_height (tilemap, chei)
406+
407+ // clear of any remaining tiles
408+ if (config.clear_timemaps )
409+ tilemap_clear (tilemap, 0 )
410+
411+ // respect layer offsets
409412 tilemap_x (tilemap, this_layer.__pxTotalOffsetX )
410413 tilemap_y (tilemap, this_layer.__pxTotalOffsetY )
411414 }
0 commit comments