1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-07 12:30:27 +00:00

Some improvements for Switch node in visual shaders

This commit is contained in:
Chaosus89
2019-09-03 14:46:31 +03:00
parent 4dfea5fc9c
commit a79d8e3b8f
4 changed files with 48 additions and 3 deletions

View File

@@ -3227,7 +3227,7 @@ VisualShaderNodeIf::VisualShaderNodeIf() {
////////////// Switch
String VisualShaderNodeSwitch::get_caption() const {
return "Switch";
return "VectorSwitch";
}
int VisualShaderNodeSwitch::get_input_port_count() const {
@@ -3269,7 +3269,15 @@ String VisualShaderNodeSwitch::get_output_port_name(int p_port) const {
String VisualShaderNodeSwitch::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
String code;
code += "\tif(" + p_input_vars[0] + ")\n";
if (p_input_vars[0] == String()) {
if ((bool)get_input_port_default_value(0)) {
code += "\tif(true)\n";
} else {
code += "\tif(false)\n";
}
} else {
code += "\tif(" + p_input_vars[0] + ")\n";
}
code += "\t{\n";
code += "\t\t" + p_output_vars[0] + "=" + p_input_vars[1] + ";\n";
code += "\t}\n";
@@ -3282,10 +3290,33 @@ String VisualShaderNodeSwitch::generate_code(Shader::Mode p_mode, VisualShader::
VisualShaderNodeSwitch::VisualShaderNodeSwitch() {
set_input_port_default_value(0, false);
set_input_port_default_value(1, Vector3(0.0, 0.0, 0.0));
set_input_port_default_value(1, Vector3(1.0, 1.0, 1.0));
set_input_port_default_value(2, Vector3(0.0, 0.0, 0.0));
}
////////////// Switch(scalar)
String VisualShaderNodeScalarSwitch::get_caption() const {
return "ScalarSwitch";
}
VisualShaderNodeScalarSwitch::PortType VisualShaderNodeScalarSwitch::get_input_port_type(int p_port) const {
if (p_port == 0) {
return PORT_TYPE_BOOLEAN;
}
return PORT_TYPE_SCALAR;
}
VisualShaderNodeScalarSwitch::PortType VisualShaderNodeScalarSwitch::get_output_port_type(int p_port) const {
return PORT_TYPE_SCALAR;
}
VisualShaderNodeScalarSwitch::VisualShaderNodeScalarSwitch() {
set_input_port_default_value(0, false);
set_input_port_default_value(1, 1.0);
set_input_port_default_value(2, 0.0);
}
////////////// Fresnel
String VisualShaderNodeFresnel::get_caption() const {