Browse Source

Merge pull request #61795 from KoBeWi/image_comes_back

Re-add internal image field to ImageTexture
Rémi Verschelde 3 years ago
parent
commit
2e041f91fd
2 changed files with 23 additions and 0 deletions
  1. 18 0
      scene/resources/texture.cpp
  2. 5 0
      scene/resources/texture.h

+ 18 - 0
scene/resources/texture.cpp

@@ -147,6 +147,24 @@ void ImageTexture::reload_from_file() {
 	}
 }
 
+bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) {
+	if (p_name == "image") {
+		create_from_image(p_value);
+	}
+	return false;
+}
+
+bool ImageTexture::_get(const StringName &p_name, Variant &r_ret) const {
+	if (p_name == "image") {
+		r_ret = get_image();
+	}
+	return false;
+}
+
+void ImageTexture::_get_property_list(List<PropertyInfo> *p_list) const {
+	p_list->push_back(PropertyInfo(Variant::OBJECT, PNAME("image"), PROPERTY_HINT_RESOURCE_TYPE, "Image", PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT));
+}
+
 void ImageTexture::create_from_image(const Ref<Image> &p_image) {
 	ERR_FAIL_COND_MSG(p_image.is_null() || p_image->is_empty(), "Invalid image");
 	w = p_image->get_width();

+ 5 - 0
scene/resources/texture.h

@@ -102,6 +102,11 @@ class ImageTexture : public Texture2D {
 
 protected:
 	virtual void reload_from_file() override;
+
+	bool _set(const StringName &p_name, const Variant &p_value);
+	bool _get(const StringName &p_name, Variant &r_ret) const;
+	void _get_property_list(List<PropertyInfo> *p_list) const;
+
 	static void _bind_methods();
 
 public: