From 2106c5175ad5bb9884b506c6a558ba34e96ae833 Mon Sep 17 00:00:00 2001 From: "Wilson E. Alvarez" Date: Mon, 27 Dec 2021 13:35:50 -0500 Subject: [PATCH] Expose autotile_coord parameter in TileMap.set_cellv (cherry picked from commit 4106f95f309d33653c385d15ea85b8491fe052b8) --- doc/classes/TileMap.xml | 3 ++- scene/2d/tile_map.cpp | 6 +++--- scene/2d/tile_map.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index 758d6349225..9480b19d171 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -154,10 +154,11 @@ + Sets the tile index for the cell given by a Vector2. An index of [code]-1[/code] clears the cell. - Optionally, the tile can also be flipped or transposed. + Optionally, the tile can also be flipped, transposed, or given autotile coordinates. The autotile coordinate refers to the column and row of the subtile. [b]Note:[/b] Data such as navigation polygons and collision shapes are not immediately updated for performance reasons. If you need these to be immediately updated, you can call [method update_dirty_quadrants]. diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index 77f626fb641..b937ea7fa77 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -848,8 +848,8 @@ void TileMap::_make_quadrant_dirty(Map::Element *Q, bool updat } } -void TileMap::set_cellv(const Vector2 &p_pos, int p_tile, bool p_flip_x, bool p_flip_y, bool p_transpose) { - set_cell(p_pos.x, p_pos.y, p_tile, p_flip_x, p_flip_y, p_transpose); +void TileMap::set_cellv(const Vector2 &p_pos, int p_tile, bool p_flip_x, bool p_flip_y, bool p_transpose, Vector2 p_autotile_coord) { + set_cell(p_pos.x, p_pos.y, p_tile, p_flip_x, p_flip_y, p_transpose, p_autotile_coord); } void TileMap::_set_celld(const Vector2 &p_pos, const Dictionary &p_data) { @@ -1811,7 +1811,7 @@ void TileMap::_bind_methods() { ClassDB::bind_method(D_METHOD("get_occluder_light_mask"), &TileMap::get_occluder_light_mask); ClassDB::bind_method(D_METHOD("set_cell", "x", "y", "tile", "flip_x", "flip_y", "transpose", "autotile_coord"), &TileMap::set_cell, DEFVAL(false), DEFVAL(false), DEFVAL(false), DEFVAL(Vector2())); - ClassDB::bind_method(D_METHOD("set_cellv", "position", "tile", "flip_x", "flip_y", "transpose"), &TileMap::set_cellv, DEFVAL(false), DEFVAL(false), DEFVAL(false)); + ClassDB::bind_method(D_METHOD("set_cellv", "position", "tile", "flip_x", "flip_y", "transpose", "autotile_coord"), &TileMap::set_cellv, DEFVAL(false), DEFVAL(false), DEFVAL(false), DEFVAL(Vector2())); ClassDB::bind_method(D_METHOD("_set_celld", "position", "data"), &TileMap::_set_celld); ClassDB::bind_method(D_METHOD("get_cell", "x", "y"), &TileMap::get_cell); ClassDB::bind_method(D_METHOD("get_cellv", "position"), &TileMap::get_cellv); diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h index 8edb432774e..f0019e3cb76 100644 --- a/scene/2d/tile_map.h +++ b/scene/2d/tile_map.h @@ -263,7 +263,7 @@ public: Vector2 get_cell_autotile_coord(int p_x, int p_y) const; void _set_celld(const Vector2 &p_pos, const Dictionary &p_data); - void set_cellv(const Vector2 &p_pos, int p_tile, bool p_flip_x = false, bool p_flip_y = false, bool p_transpose = false); + void set_cellv(const Vector2 &p_pos, int p_tile, bool p_flip_x = false, bool p_flip_y = false, bool p_transpose = false, Vector2 p_autotile_coord = Vector2()); int get_cellv(const Vector2 &p_pos) const; void make_bitmask_area_dirty(const Vector2 &p_pos);