浏览代码

TexturePreview Update text when texture is being changed

kleonc 4 年之前
父节点
当前提交
1a3d53c008
共有 2 个文件被更改,包括 19 次插入10 次删除
  1. 17 10
      editor/plugins/texture_editor_plugin.cpp
  2. 2 0
      editor/plugins/texture_editor_plugin.h

+ 17 - 10
editor/plugins/texture_editor_plugin.cpp

@@ -58,6 +58,21 @@ void TexturePreview::_notification(int p_what) {
 	}
 }
 
+void TexturePreview::_update_metadata_label_text() {
+	Ref<Texture2D> texture = texture_display->get_texture();
+
+	String format;
+	if (Object::cast_to<ImageTexture>(*texture)) {
+		format = Image::get_format_name(Object::cast_to<ImageTexture>(*texture)->get_format());
+	} else if (Object::cast_to<StreamTexture2D>(*texture)) {
+		format = Image::get_format_name(Object::cast_to<StreamTexture2D>(*texture)->get_format());
+	} else {
+		format = texture->get_class();
+	}
+
+	metadata_label->set_text(itos(texture->get_width()) + "x" + itos(texture->get_height()) + " " + format);
+}
+
 TexturePreview::TexturePreview(Ref<Texture2D> p_texture, bool p_show_metadata) {
 	checkerboard = memnew(TextureRect);
 	checkerboard->set_stretch_mode(TextureRect::STRETCH_TILE);
@@ -75,16 +90,8 @@ TexturePreview::TexturePreview(Ref<Texture2D> p_texture, bool p_show_metadata) {
 	if (p_show_metadata) {
 		metadata_label = memnew(Label);
 
-		String format;
-		if (Object::cast_to<ImageTexture>(*p_texture)) {
-			format = Image::get_format_name(Object::cast_to<ImageTexture>(*p_texture)->get_format());
-		} else if (Object::cast_to<StreamTexture2D>(*p_texture)) {
-			format = Image::get_format_name(Object::cast_to<StreamTexture2D>(*p_texture)->get_format());
-		} else {
-			format = p_texture->get_class();
-		}
-
-		metadata_label->set_text(itos(p_texture->get_width()) + "x" + itos(p_texture->get_height()) + " " + format);
+		_update_metadata_label_text();
+		p_texture->connect("changed", callable_mp(this, &TexturePreview::_update_metadata_label_text));
 
 		// It's okay that these colors are static since the grid color is static too.
 		metadata_label->add_theme_color_override("font_color", Color::named("white"));

+ 2 - 0
editor/plugins/texture_editor_plugin.h

@@ -44,6 +44,8 @@ private:
 	TextureRect *checkerboard = nullptr;
 	Label *metadata_label = nullptr;
 
+	void _update_metadata_label_text();
+
 protected:
 	void _notification(int p_what);