Merge pull request #53767 from groud/improve_tile_set_change_performances

This commit is contained in:
Rémi Verschelde 2021-10-13 16:03:31 +02:00 committed by GitHub
commit 004b44e915
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 23 deletions

View file

@ -3095,6 +3095,8 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_tile_data", "layer"), &TileMap::_set_tile_data);
ClassDB::bind_method(D_METHOD("_get_tile_data", "layer"), &TileMap::_get_tile_data);
ClassDB::bind_method(D_METHOD("_tile_set_changed_deferred_update"), &TileMap::_tile_set_changed_deferred_update);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "tile_set", PROPERTY_HINT_RESOURCE_TYPE, "TileSet"), "set_tileset", "get_tileset");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_quadrant_size", PROPERTY_HINT_RANGE, "1,128,1"), "set_quadrant_size", "get_quadrant_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collision_animatable"), "set_collision_animatable", "is_collision_animatable");
@ -3114,8 +3116,16 @@ void TileMap::_bind_methods() {
void TileMap::_tile_set_changed() {
emit_signal(SNAME("changed"));
_clear_internals();
_recreate_internals();
_tile_set_changed_deferred_update_needed = true;
call_deferred("_tile_set_changed_deferred_update");
}
void TileMap::_tile_set_changed_deferred_update() {
if (_tile_set_changed_deferred_update_needed) {
_clear_internals();
_recreate_internals();
_tile_set_changed_deferred_update_needed = false;
}
}
TileMap::TileMap() {