Browse Source

Merge pull request #85723 from ilyabelow/84609-visual-shader-viewport-texture-error

Add a specific error when creating a ViewportTexture in a Texture2D node
Yuri Sizov 1 year ago
parent
commit
7fbaefd244
1 changed files with 8 additions and 0 deletions
  1. 8 0
      editor/editor_properties.cpp

+ 8 - 0
editor/editor_properties.cpp

@@ -56,6 +56,7 @@
 #include "scene/resources/font.h"
 #include "scene/resources/mesh.h"
 #include "scene/resources/packed_scene.h"
+#include "scene/resources/visual_shader_nodes.h"
 
 ///////////////////// Nil /////////////////////////
 
@@ -3204,6 +3205,13 @@ void EditorPropertyResource::_resource_changed(const Ref<Resource> &p_resource)
 	Ref<ViewportTexture> vpt = p_resource;
 	if (vpt.is_valid()) {
 		r = Object::cast_to<Resource>(get_edited_object());
+		if (Object::cast_to<VisualShaderNodeTexture>(r)) {
+			EditorNode::get_singleton()->show_warning(TTR("Can't create a ViewportTexture in a Texture2D node because the texture will not be bound to a scene.\nUse a Texture2DParameter node instead and set the texture in the \"Shader Parameters\" tab."));
+			emit_changed(get_edited_property(), Ref<Resource>());
+			update_property();
+			return;
+		}
+
 		if (r && r->get_path().is_resource_file()) {
 			EditorNode::get_singleton()->show_warning(TTR("Can't create a ViewportTexture on resources saved as a file.\nResource needs to belong to a scene."));
 			emit_changed(get_edited_property(), Ref<Resource>());