Skip to content

Commit 8a08cc3

Browse files
committed
Tilemap resize fix
1 parent a71464b commit 8a08cc3

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

scripts/LDtkParser/LDtkParser.gml

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

scripts/LDtkParser/LDtkParser.yy

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)