add zstd support and fix a bug
This commit is contained in:
parent
4f4d6b0a03
commit
9b0102ee44
@ -84,6 +84,11 @@ func get_import_options(preset):
|
|||||||
"default_value": 1,
|
"default_value": 1,
|
||||||
"property_hint": PROPERTY_HINT_LAYERS_2D_PHYSICS
|
"property_hint": PROPERTY_HINT_LAYERS_2D_PHYSICS
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "collision_mask",
|
||||||
|
"default_value": 1,
|
||||||
|
"property_hint": PROPERTY_HINT_LAYERS_2D_PHYSICS
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "embed_internal_images",
|
"name": "embed_internal_images",
|
||||||
"default_value": true if preset == PRESET_PIXEL_ART else false
|
"default_value": true if preset == PRESET_PIXEL_ART else false
|
||||||
|
@ -231,6 +231,7 @@ func make_layer(layer, parent, root, data):
|
|||||||
tilemap.cell_y_sort = true
|
tilemap.cell_y_sort = true
|
||||||
tilemap.cell_tile_origin = TileMap.TILE_ORIGIN_BOTTOM_LEFT
|
tilemap.cell_tile_origin = TileMap.TILE_ORIGIN_BOTTOM_LEFT
|
||||||
tilemap.collision_layer = options.collision_layer
|
tilemap.collision_layer = options.collision_layer
|
||||||
|
tilemap.collision_mask = options.collision_mask
|
||||||
tilemap.z_index = z_index
|
tilemap.z_index = z_index
|
||||||
|
|
||||||
var offset = Vector2()
|
var offset = Vector2()
|
||||||
@ -280,7 +281,7 @@ func make_layer(layer, parent, root, data):
|
|||||||
var gid = int_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG)
|
var gid = int_id & ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG)
|
||||||
|
|
||||||
var cell_x = cell_offset.x + chunk.x + (count % int(chunk.width))
|
var cell_x = cell_offset.x + chunk.x + (count % int(chunk.width))
|
||||||
var cell_y = cell_offset.y + chunk.y + int(count / chunk.width)
|
var cell_y = cell_offset.y + chunk.y + int(count / chunk.width) + 1
|
||||||
tilemap.set_cell(cell_x, cell_y, gid, flipped_h, flipped_v, flipped_d)
|
tilemap.set_cell(cell_x, cell_y, gid, flipped_h, flipped_v, flipped_d)
|
||||||
|
|
||||||
count += 1
|
count += 1
|
||||||
@ -1047,13 +1048,19 @@ func is_convex(vertices):
|
|||||||
return true
|
return true
|
||||||
|
|
||||||
# Decompress the data of the layer
|
# Decompress the data of the layer
|
||||||
# Compression argument is a string, either "gzip" or "zlib"
|
# Compression argument is a string, either "gzip", "zlib", or "zstd"
|
||||||
func decompress_layer_data(layer_data, compression, map_size):
|
func decompress_layer_data(layer_data, compression, map_size):
|
||||||
if compression != "gzip" and compression != "zlib":
|
var compression_type = -1
|
||||||
|
match compression:
|
||||||
|
"zlib":
|
||||||
|
compression_type = File.COMPRESSION_DEFLATE
|
||||||
|
"gzip":
|
||||||
|
compression_type = File.COMPRESSION_GZIP
|
||||||
|
"zstd":
|
||||||
|
compression_type = File.COMPRESSION_ZSTD
|
||||||
|
_:
|
||||||
print_error("Unrecognized compression format: %s" % [compression])
|
print_error("Unrecognized compression format: %s" % [compression])
|
||||||
return ERR_INVALID_DATA
|
return ERR_INVALID_DATA
|
||||||
|
|
||||||
var compression_type = File.COMPRESSION_DEFLATE if compression == "zlib" else File.COMPRESSION_GZIP
|
|
||||||
var expected_size = int(map_size.x) * int(map_size.y) * 4
|
var expected_size = int(map_size.x) * int(map_size.y) * 4
|
||||||
var raw_data = Marshalls.base64_to_raw(layer_data).decompress(expected_size, compression_type)
|
var raw_data = Marshalls.base64_to_raw(layer_data).decompress(expected_size, compression_type)
|
||||||
|
|
||||||
@ -1220,7 +1227,7 @@ func validate_layer(layer):
|
|||||||
print_error("Invalid data layer property.")
|
print_error("Invalid data layer property.")
|
||||||
return ERR_INVALID_DATA
|
return ERR_INVALID_DATA
|
||||||
if "compression" in layer:
|
if "compression" in layer:
|
||||||
if layer.compression != "gzip" and layer.compression != "zlib":
|
if layer.compression != "gzip" and layer.compression != "zlib" and layer.compression != "zstd":
|
||||||
print_error("Invalid compression type.")
|
print_error("Invalid compression type.")
|
||||||
return ERR_INVALID_DATA
|
return ERR_INVALID_DATA
|
||||||
"imagelayer":
|
"imagelayer":
|
||||||
|
Loading…
Reference in New Issue
Block a user