diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 89fff008ea3..bc02232b357 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -1791,7 +1791,7 @@ void VisualShaderEditor::_update_options_menu() { } Ref parameter_ref = Object::cast_to(vsn.ptr()); - if (parameter_ref.is_valid()) { + if (parameter_ref.is_valid() && parameter_ref->is_shader_valid()) { check_result = -1; if (members_input_port_type != VisualShaderNode::PORT_TYPE_MAX) { diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 41660767abb..2ed859617ab 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -3591,6 +3591,10 @@ String VisualShaderNodeParameterRef::get_output_port_name(int p_port) const { return ""; } +bool VisualShaderNodeParameterRef::is_shader_valid() const { + return shader_rid.is_valid(); +} + void VisualShaderNodeParameterRef::set_shader_rid(const RID &p_shader_rid) { shader_rid = p_shader_rid; } diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h index 7faebb86ab8..d4d77e7609c 100644 --- a/scene/resources/visual_shader.h +++ b/scene/resources/visual_shader.h @@ -640,6 +640,7 @@ public: virtual PortType get_output_port_type(int p_port) const override; virtual String get_output_port_name(int p_port) const override; + bool is_shader_valid() const; void set_shader_rid(const RID &p_shader); void set_parameter_name(const String &p_name);