Greatly improve editor performances by deferring tiles related updates
Solve few update problems
This commit is contained in:
parent
f86fd80f30
commit
0de2fce3e1
6 changed files with 51 additions and 23 deletions
|
|
@ -3094,6 +3094,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");
|
||||
|
|
@ -3113,8 +3115,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() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue