From bea39be6349575fe5e5b10b92c27eb6e275fa77e Mon Sep 17 00:00:00 2001 From: Adrenesis Date: Wed, 17 Jun 2020 17:09:48 +0200 Subject: [PATCH] Add ability for TileSet to swap tile ids. --- scene/resources/tile_set.cpp | 7 +++++++ scene/resources/tile_set.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp index db5037172e9d..5275d235a307 100644 --- a/scene/resources/tile_set.cpp +++ b/scene/resources/tile_set.cpp @@ -374,6 +374,12 @@ void TileSet::create_tile(int p_id) { emit_changed(); } +void TileSet::tile_swap_with_id(int p_id_a, int p_id_b) { + TileData tmp = tile_map[p_id_a]; + tile_map[p_id_a] = tile_map[p_id_b]; + tile_map[p_id_b] = tmp; +} + void TileSet::autotile_set_bitmask_mode(int p_id, BitmaskMode p_mode) { ERR_FAIL_COND(!tile_map.has(p_id)); tile_map[p_id].autotile_data.bitmask_mode = p_mode; @@ -1155,6 +1161,7 @@ void TileSet::clear() { void TileSet::_bind_methods() { ClassDB::bind_method(D_METHOD("create_tile", "id"), &TileSet::create_tile); + ClassDB::bind_method(D_METHOD("tile_swap_with_id", "ida", "idb"), &TileSet::tile_swap_with_id); ClassDB::bind_method(D_METHOD("autotile_clear_bitmask_map", "id"), &TileSet::autotile_clear_bitmask_map); ClassDB::bind_method(D_METHOD("autotile_set_icon_coordinate", "id", "coord"), &TileSet::autotile_set_icon_coordinate); ClassDB::bind_method(D_METHOD("autotile_get_icon_coordinate", "id"), &TileSet::autotile_get_icon_coordinate); diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h index eab40ce46713..08a13da7f8bc 100644 --- a/scene/resources/tile_set.h +++ b/scene/resources/tile_set.h @@ -152,6 +152,8 @@ class TileSet : public Resource { public: void create_tile(int p_id); + void tile_swap_with_id(int p_id_a, int p_id_b); + void autotile_set_bitmask_mode(int p_id, BitmaskMode p_mode); BitmaskMode autotile_get_bitmask_mode(int p_id) const;