From 3b353075dc571e05bde1f4cdcb59d514a27b6cac Mon Sep 17 00:00:00 2001 From: Yuri Rubinsky Date: Sat, 21 Oct 2023 16:37:15 +0300 Subject: [PATCH] Add extra warning messages to `VisualShaderNodeTextureParameter` --- scene/resources/visual_shader_nodes.cpp | 53 +++++++++++++++++++++++++ scene/resources/visual_shader_nodes.h | 1 + 2 files changed, 54 insertions(+) diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp index 71b8af6625a7..a8c0aa604104 100644 --- a/scene/resources/visual_shader_nodes.cpp +++ b/scene/resources/visual_shader_nodes.cpp @@ -6346,6 +6346,7 @@ String get_sampler_hint(VisualShaderNodeTextureParameter::TextureType p_texture_ if (!repeat_code.is_empty()) { if (!has_colon) { code += " : "; + has_colon = true; } else { code += ", "; } @@ -6495,6 +6496,58 @@ bool VisualShaderNodeTextureParameter::is_show_prop_names() const { return true; } +String VisualShaderNodeTextureParameter::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const { + if (texture_source != SOURCE_NONE) { + String texture_source_str; + + switch (texture_source) { + case SOURCE_SCREEN: { + texture_source_str = "Screen"; + } break; + case SOURCE_DEPTH: { + texture_source_str = "Depth"; + } break; + case SOURCE_NORMAL_ROUGHNESS: { + texture_source_str = "NormalRoughness"; + } break; + default: + break; + } + + if (texture_type == TYPE_NORMAL_MAP || texture_type == TYPE_ANISOTROPY) { + String texture_type_str; + + switch (texture_type) { + case TYPE_NORMAL_MAP: { + texture_type_str = "Normal Map"; + } break; + case TYPE_ANISOTROPY: { + texture_type_str = "Anisotropic"; + } break; + default: + break; + } + return vformat(RTR("'%s' type is incompatible with '%s' source."), texture_type_str, texture_source_str); + } else if (color_default != COLOR_DEFAULT_WHITE) { + String color_default_str; + + switch (color_default) { + case COLOR_DEFAULT_BLACK: { + color_default_str = "Black"; + } break; + case COLOR_DEFAULT_TRANSPARENT: { + color_default_str = "Transparent"; + } break; + default: + break; + } + return vformat(RTR("'%s' default color is incompatible with '%s' source."), color_default_str, texture_source_str); + } + } + + return ""; +} + HashMap VisualShaderNodeTextureParameter::get_editable_properties_names() const { HashMap names; names.insert("texture_type", RTR("Type")); diff --git a/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h index 67e2c4633d9f..0b88ad103861 100644 --- a/scene/resources/visual_shader_nodes.h +++ b/scene/resources/visual_shader_nodes.h @@ -2452,6 +2452,7 @@ public: virtual HashMap get_editable_properties_names() const override; virtual bool is_show_prop_names() const override; + virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; Vector get_editable_properties() const override;