You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Texture region now updates when changing an Atlas
- Removed atlas_changed signal for AtlasTexture - Changes are now handled by _notify_change - Removed unneccesary signal connections - Texture preview now updates in real-time Fixed TextureRegionEditor constantly regenerating
This commit is contained in:
@@ -617,38 +617,24 @@ void TextureRegionEditor::_bind_methods() {
|
||||
}
|
||||
|
||||
void TextureRegionEditor::edit(Object *p_obj) {
|
||||
if (node_sprite && node_sprite->is_connected("texture_changed", this, "_edit_region"))
|
||||
node_sprite->disconnect("texture_changed", this, "_edit_region");
|
||||
if (node_patch9 && node_patch9->is_connected("texture_changed", this, "_edit_region"))
|
||||
node_patch9->disconnect("texture_changed", this, "_edit_region");
|
||||
if (obj_styleBox.is_valid() && obj_styleBox->is_connected("texture_changed", this, "_edit_region"))
|
||||
obj_styleBox->disconnect("texture_changed", this, "_edit_region");
|
||||
if (atlas_tex.is_valid() && atlas_tex->is_connected("atlas_changed", this, "_edit_region"))
|
||||
atlas_tex->disconnect("atlas_changed", this, "_edit_region");
|
||||
if (node_sprite)
|
||||
node_sprite->remove_change_receptor(this);
|
||||
if (node_patch9)
|
||||
node_patch9->remove_change_receptor(this);
|
||||
if (obj_styleBox.is_valid())
|
||||
obj_styleBox->remove_change_receptor(this);
|
||||
if (atlas_tex.is_valid())
|
||||
atlas_tex->remove_change_receptor(this);
|
||||
if (p_obj) {
|
||||
node_sprite = p_obj->cast_to<Sprite>();
|
||||
node_patch9 = p_obj->cast_to<NinePatchRect>();
|
||||
if (p_obj->cast_to<StyleBoxTexture>())
|
||||
obj_styleBox = Ref<StyleBoxTexture>(p_obj->cast_to<StyleBoxTexture>());
|
||||
if (p_obj->cast_to<AtlasTexture>()) {
|
||||
if (p_obj->cast_to<AtlasTexture>())
|
||||
atlas_tex = Ref<AtlasTexture>(p_obj->cast_to<AtlasTexture>());
|
||||
atlas_tex->connect("atlas_changed", this, "_edit_region");
|
||||
} else {
|
||||
p_obj->connect("texture_changed", this, "_edit_region");
|
||||
}
|
||||
p_obj->add_change_receptor(this);
|
||||
p_obj->connect("tree_exited", this, "_node_removed", varray(p_obj), CONNECT_ONESHOT);
|
||||
_edit_region();
|
||||
} else {
|
||||
if (node_sprite)
|
||||
node_sprite->disconnect("tree_exited", this, "_node_removed");
|
||||
else if (node_patch9)
|
||||
node_patch9->disconnect("tree_exited", this, "_node_removed");
|
||||
else if (obj_styleBox.is_valid())
|
||||
obj_styleBox->disconnect("tree_exited", this, "_node_removed");
|
||||
else if (atlas_tex.is_valid())
|
||||
atlas_tex->disconnect("tree_exited", this, "_node_removed");
|
||||
|
||||
node_sprite = NULL;
|
||||
node_patch9 = NULL;
|
||||
obj_styleBox = Ref<StyleBoxTexture>(NULL);
|
||||
@@ -658,9 +644,11 @@ void TextureRegionEditor::edit(Object *p_obj) {
|
||||
}
|
||||
|
||||
void TextureRegionEditor::_changed_callback(Object *p_changed, const char *p_prop) {
|
||||
if ((String)p_prop == "region_rect") {
|
||||
|
||||
if (!is_visible())
|
||||
return;
|
||||
if (p_prop == StringName("atlas") || p_prop == StringName("texture"))
|
||||
_edit_region();
|
||||
}
|
||||
}
|
||||
|
||||
void TextureRegionEditor::_edit_region() {
|
||||
|
||||
Reference in New Issue
Block a user