From 44817dbe6b64194a371221c66c18cf11d83fed3c Mon Sep 17 00:00:00 2001 From: Yuri Roubinsky Date: Fri, 31 Jul 2020 12:13:00 +0300 Subject: [PATCH] [3.2] Fix port previews for uniforms in visual shaders --- editor/plugins/visual_shader_editor_plugin.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 3379422c7e..6906155e8f 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -3348,11 +3348,17 @@ void VisualShaderNodePortPreview::_shader_changed() { for (int i = EditorNode::get_singleton()->get_editor_history()->get_path_size() - 1; i >= 0; i--) { Object *object = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_history()->get_path_object(i)); + ShaderMaterial *src_mat; if (!object) continue; - ShaderMaterial *src_mat = Object::cast_to(object); + if (object->has_method("get_material_override")) { // trying getting material from MeshInstance + src_mat = Object::cast_to(object->call("get_material_override")); + } else if (object->has_method("get_material")) { // from CanvasItem/Node2D + src_mat = Object::cast_to(object->call("get_material")); + } else { + src_mat = Object::cast_to(object); + } if (src_mat && src_mat->get_shader().is_valid()) { - List params; src_mat->get_shader()->get_param_list(¶ms); for (List::Element *E = params.front(); E; E = E->next()) {