|
@@ -57,6 +57,8 @@ void TextureRegionEditor::_region_draw() {
|
|
|
base_tex = obj_styleBox->get_texture();
|
|
|
else if (atlas_tex.is_valid())
|
|
|
base_tex = atlas_tex->get_atlas();
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ base_tex = tile_set->tile_get_texture(selected_tile);
|
|
|
if (base_tex.is_null())
|
|
|
return;
|
|
|
|
|
@@ -281,6 +283,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
|
|
|
r = obj_styleBox->get_region_rect();
|
|
|
else if (atlas_tex.is_valid())
|
|
|
r = atlas_tex->get_region();
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ r = tile_set->tile_get_region(selected_tile);
|
|
|
rect.expand_to(r.position);
|
|
|
rect.expand_to(r.position + r.size);
|
|
|
}
|
|
@@ -297,6 +301,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
|
|
|
} else if (atlas_tex.is_valid()) {
|
|
|
undo_redo->add_do_method(atlas_tex.ptr(), "set_region", rect);
|
|
|
undo_redo->add_undo_method(atlas_tex.ptr(), "set_region", atlas_tex->get_region());
|
|
|
+ } else if (tile_set.is_valid() && selected_tile != -1) {
|
|
|
+ undo_redo->add_do_method(tile_set.ptr(), "tile_set_region", selected_tile, rect);
|
|
|
+ undo_redo->add_undo_method(tile_set.ptr(), "tile_set_region", selected_tile, tile_set->tile_get_region(selected_tile));
|
|
|
}
|
|
|
undo_redo->add_do_method(edit_draw, "update");
|
|
|
undo_redo->add_undo_method(edit_draw, "update");
|
|
@@ -319,6 +326,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
|
|
|
rect_prev = obj_styleBox->get_region_rect();
|
|
|
else if (atlas_tex.is_valid())
|
|
|
rect_prev = atlas_tex->get_region();
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ rect_prev = tile_set->tile_get_region(selected_tile);
|
|
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
|
Vector2 tuv = endpoints[i];
|
|
@@ -362,6 +371,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
|
|
|
} else if (obj_styleBox.is_valid()) {
|
|
|
undo_redo->add_do_method(obj_styleBox.ptr(), "set_region_rect", obj_styleBox->get_region_rect());
|
|
|
undo_redo->add_undo_method(obj_styleBox.ptr(), "set_region_rect", rect_prev);
|
|
|
+ } else if (tile_set.is_valid()) {
|
|
|
+ undo_redo->add_do_method(tile_set.ptr(), "tile_set_region", selected_tile, tile_set->tile_get_region(selected_tile));
|
|
|
+ undo_redo->add_undo_method(tile_set.ptr(), "tile_set_region", selected_tile, rect_prev);
|
|
|
}
|
|
|
drag_index = -1;
|
|
|
}
|
|
@@ -582,6 +594,8 @@ void TextureRegionEditor::apply_rect(const Rect2 &rect) {
|
|
|
obj_styleBox->set_region_rect(rect);
|
|
|
else if (atlas_tex.is_valid())
|
|
|
atlas_tex->set_region(rect);
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ tile_set->tile_set_region(selected_tile, rect);
|
|
|
}
|
|
|
|
|
|
void TextureRegionEditor::_notification(int p_what) {
|
|
@@ -596,11 +610,12 @@ void TextureRegionEditor::_notification(int p_what) {
|
|
|
}
|
|
|
|
|
|
void TextureRegionEditor::_node_removed(Object *p_obj) {
|
|
|
- if (p_obj == node_sprite || p_obj == node_ninepatch || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr()) {
|
|
|
+ if (p_obj == node_sprite || p_obj == node_ninepatch || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr() || p_obj == tile_set.ptr()) {
|
|
|
node_ninepatch = NULL;
|
|
|
node_sprite = NULL;
|
|
|
obj_styleBox = Ref<StyleBox>(NULL);
|
|
|
atlas_tex = Ref<AtlasTexture>(NULL);
|
|
|
+ tile_set = Ref<TileSet>(NULL);
|
|
|
hide();
|
|
|
}
|
|
|
}
|
|
@@ -632,6 +647,8 @@ void TextureRegionEditor::edit(Object *p_obj) {
|
|
|
obj_styleBox->remove_change_receptor(this);
|
|
|
if (atlas_tex.is_valid())
|
|
|
atlas_tex->remove_change_receptor(this);
|
|
|
+ if (tile_set.is_valid())
|
|
|
+ tile_set->remove_change_receptor(this);
|
|
|
if (p_obj) {
|
|
|
node_sprite = Object::cast_to<Sprite>(p_obj);
|
|
|
node_ninepatch = Object::cast_to<NinePatchRect>(p_obj);
|
|
@@ -639,6 +656,8 @@ void TextureRegionEditor::edit(Object *p_obj) {
|
|
|
obj_styleBox = Ref<StyleBoxTexture>(Object::cast_to<StyleBoxTexture>(p_obj));
|
|
|
if (Object::cast_to<AtlasTexture>(p_obj))
|
|
|
atlas_tex = Ref<AtlasTexture>(Object::cast_to<AtlasTexture>(p_obj));
|
|
|
+ if (Object::cast_to<TileSet>(p_obj))
|
|
|
+ tile_set = Ref<TileSet>(Object::cast_to<TileSet>(p_obj));
|
|
|
p_obj->add_change_receptor(this);
|
|
|
_edit_region();
|
|
|
} else {
|
|
@@ -646,6 +665,7 @@ void TextureRegionEditor::edit(Object *p_obj) {
|
|
|
node_ninepatch = NULL;
|
|
|
obj_styleBox = Ref<StyleBoxTexture>(NULL);
|
|
|
atlas_tex = Ref<AtlasTexture>(NULL);
|
|
|
+ tile_set = Ref<TileSet>(NULL);
|
|
|
}
|
|
|
edit_draw->update();
|
|
|
}
|
|
@@ -668,6 +688,8 @@ void TextureRegionEditor::_edit_region() {
|
|
|
texture = obj_styleBox->get_texture();
|
|
|
else if (atlas_tex.is_valid())
|
|
|
texture = atlas_tex->get_atlas();
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ texture = tile_set->tile_get_texture(selected_tile);
|
|
|
|
|
|
if (texture.is_null()) {
|
|
|
return;
|
|
@@ -735,6 +757,8 @@ void TextureRegionEditor::_edit_region() {
|
|
|
rect = obj_styleBox->get_region_rect();
|
|
|
else if (atlas_tex.is_valid())
|
|
|
rect = atlas_tex->get_region();
|
|
|
+ else if (tile_set.is_valid() && selected_tile != -1)
|
|
|
+ rect = tile_set->tile_get_region(selected_tile);
|
|
|
|
|
|
edit_draw->update();
|
|
|
}
|
|
@@ -753,6 +777,7 @@ TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) {
|
|
|
node_ninepatch = NULL;
|
|
|
obj_styleBox = Ref<StyleBoxTexture>(NULL);
|
|
|
atlas_tex = Ref<AtlasTexture>(NULL);
|
|
|
+ tile_set = Ref<TileSet>(NULL);
|
|
|
editor = p_editor;
|
|
|
undo_redo = editor->get_undo_redo();
|
|
|
|
|
@@ -903,11 +928,11 @@ bool TextureRegionEditorPlugin::handles(Object *p_object) const {
|
|
|
|
|
|
void TextureRegionEditorPlugin::make_visible(bool p_visible) {
|
|
|
if (p_visible) {
|
|
|
- region_button->show();
|
|
|
- if (region_button->is_pressed())
|
|
|
+ texture_region_button->show();
|
|
|
+ if (texture_region_button->is_pressed())
|
|
|
region_editor->show();
|
|
|
} else {
|
|
|
- region_button->hide();
|
|
|
+ texture_region_button->hide();
|
|
|
region_editor->edit(NULL);
|
|
|
region_editor->hide();
|
|
|
}
|
|
@@ -961,10 +986,10 @@ TextureRegionEditorPlugin::TextureRegionEditorPlugin(EditorNode *p_node) {
|
|
|
editor = p_node;
|
|
|
region_editor = memnew(TextureRegionEditor(p_node));
|
|
|
|
|
|
- region_button = p_node->add_bottom_panel_item(TTR("Texture Region"), region_editor);
|
|
|
- region_button->set_tooltip(TTR("Texture Region Editor"));
|
|
|
+ texture_region_button = p_node->add_bottom_panel_item(TTR("Texture Region"), region_editor);
|
|
|
+ texture_region_button->set_tooltip(TTR("Texture Region Editor"));
|
|
|
|
|
|
region_editor->set_custom_minimum_size(Size2(0, 200));
|
|
|
region_editor->hide();
|
|
|
- region_button->hide();
|
|
|
+ texture_region_button->hide();
|
|
|
}
|