diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 5cae151531d..6babd021b5f 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -1792,7 +1792,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 11d91893683..8f06dd4b6b5 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -3576,6 +3576,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 501a538c865..008805d259e 100644 --- a/scene/resources/visual_shader.h +++ b/scene/resources/visual_shader.h @@ -639,6 +639,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);