summaryrefslogtreecommitdiffstats
path: root/editor/plugins/sprite_2d_editor_plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/plugins/sprite_2d_editor_plugin.cpp')
-rw-r--r--editor/plugins/sprite_2d_editor_plugin.cpp53
1 files changed, 24 insertions, 29 deletions
diff --git a/editor/plugins/sprite_2d_editor_plugin.cpp b/editor/plugins/sprite_2d_editor_plugin.cpp
index e90609cd2f..56d74bba0a 100644
--- a/editor/plugins/sprite_2d_editor_plugin.cpp
+++ b/editor/plugins/sprite_2d_editor_plugin.cpp
@@ -127,59 +127,57 @@ void Sprite2DEditor::_menu_option(int p_option) {
debug_uv_dialog->set_ok_button_text(TTR("Create MeshInstance2D"));
debug_uv_dialog->set_title(TTR("MeshInstance2D Preview"));
- _update_mesh_data();
- debug_uv_dialog->popup_centered();
- debug_uv->queue_redraw();
-
+ _popup_debug_uv_dialog();
} break;
case MENU_OPTION_CONVERT_TO_POLYGON_2D: {
debug_uv_dialog->set_ok_button_text(TTR("Create Polygon2D"));
debug_uv_dialog->set_title(TTR("Polygon2D Preview"));
- _update_mesh_data();
- debug_uv_dialog->popup_centered();
- debug_uv->queue_redraw();
+ _popup_debug_uv_dialog();
} break;
case MENU_OPTION_CREATE_COLLISION_POLY_2D: {
debug_uv_dialog->set_ok_button_text(TTR("Create CollisionPolygon2D"));
debug_uv_dialog->set_title(TTR("CollisionPolygon2D Preview"));
- _update_mesh_data();
- debug_uv_dialog->popup_centered();
- debug_uv->queue_redraw();
-
+ _popup_debug_uv_dialog();
} break;
case MENU_OPTION_CREATE_LIGHT_OCCLUDER_2D: {
debug_uv_dialog->set_ok_button_text(TTR("Create LightOccluder2D"));
debug_uv_dialog->set_title(TTR("LightOccluder2D Preview"));
- _update_mesh_data();
- debug_uv_dialog->popup_centered();
- debug_uv->queue_redraw();
-
+ _popup_debug_uv_dialog();
} break;
}
}
-void Sprite2DEditor::_update_mesh_data() {
+void Sprite2DEditor::_popup_debug_uv_dialog() {
+ String error_message;
if (node->get_owner() != get_tree()->get_edited_scene_root()) {
- err_dialog->set_text(TTR("Can't convert a Sprite2D from a foreign scene."));
- err_dialog->popup_centered();
+ error_message = TTR("Can't convert a sprite from a foreign scene.");
}
-
Ref<Texture2D> texture = node->get_texture();
if (texture.is_null()) {
- err_dialog->set_text(TTR("Sprite2D is empty!"));
- err_dialog->popup_centered();
- return;
+ error_message = TTR("Can't convert an empty sprite to mesh.");
}
-
if (node->get_hframes() > 1 || node->get_vframes() > 1) {
- err_dialog->set_text(TTR("Can't convert a sprite using animation frames to mesh."));
+ error_message = TTR("Can't convert a sprite using animation frames to mesh.");
+ }
+
+ if (!error_message.is_empty()) {
+ err_dialog->set_text(error_message);
err_dialog->popup_centered();
return;
}
+ _update_mesh_data();
+ debug_uv_dialog->popup_centered();
+ debug_uv->queue_redraw();
+}
+
+void Sprite2DEditor::_update_mesh_data() {
+ ERR_FAIL_NULL(node);
+ Ref<Texture2D> texture = node->get_texture();
+ ERR_FAIL_COND(texture.is_null());
Ref<Image> image = texture->get_image();
ERR_FAIL_COND(image.is_null());
@@ -187,12 +185,9 @@ void Sprite2DEditor::_update_mesh_data() {
image->decompress();
}
+ // TODO: Add support for Sprite2D's region.
Rect2 rect;
- if (node->is_region_enabled()) {
- rect = node->get_region_rect();
- } else {
- rect.size = image->get_size();
- }
+ rect.size = image->get_size();
Ref<BitMap> bm;
bm.instantiate();