You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-03 16:55:53 +00:00
Add instance_index option to parameters in visual shaders
This commit is contained in:
@@ -4389,6 +4389,16 @@ VisualShaderNodeParameter::Qualifier VisualShaderNodeParameter::get_qualifier()
|
||||
return qualifier;
|
||||
}
|
||||
|
||||
void VisualShaderNodeParameter::set_instance_index(int p_index) {
|
||||
ERR_FAIL_INDEX(p_index, 16);
|
||||
instance_index = p_index;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
int VisualShaderNodeParameter::get_instance_index() const {
|
||||
return instance_index;
|
||||
}
|
||||
|
||||
void VisualShaderNodeParameter::set_global_code_generated(bool p_enabled) {
|
||||
global_code_generated = p_enabled;
|
||||
}
|
||||
@@ -4415,12 +4425,17 @@ void VisualShaderNodeParameter::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_qualifier", "qualifier"), &VisualShaderNodeParameter::set_qualifier);
|
||||
ClassDB::bind_method(D_METHOD("get_qualifier"), &VisualShaderNodeParameter::get_qualifier);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_instance_index", "instance_index"), &VisualShaderNodeParameter::set_instance_index);
|
||||
ClassDB::bind_method(D_METHOD("get_instance_index"), &VisualShaderNodeParameter::get_instance_index);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "parameter_name"), "set_parameter_name", "get_parameter_name");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "qualifier", PROPERTY_HINT_ENUM, "None,Global,Instance"), "set_qualifier", "get_qualifier");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "qualifier", PROPERTY_HINT_ENUM, "None,Global,Instance,Instance + Index"), "set_qualifier", "get_qualifier");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "instance_index", PROPERTY_HINT_RANGE, "0,15,1"), "set_instance_index", "get_instance_index");
|
||||
|
||||
BIND_ENUM_CONSTANT(QUAL_NONE);
|
||||
BIND_ENUM_CONSTANT(QUAL_GLOBAL);
|
||||
BIND_ENUM_CONSTANT(QUAL_INSTANCE);
|
||||
BIND_ENUM_CONSTANT(QUAL_INSTANCE_INDEX);
|
||||
BIND_ENUM_CONSTANT(QUAL_MAX);
|
||||
}
|
||||
|
||||
@@ -4431,6 +4446,7 @@ String VisualShaderNodeParameter::_get_qual_str() const {
|
||||
break;
|
||||
case QUAL_GLOBAL:
|
||||
return "global ";
|
||||
case QUAL_INSTANCE_INDEX:
|
||||
case QUAL_INSTANCE:
|
||||
return "instance ";
|
||||
default:
|
||||
@@ -4454,6 +4470,7 @@ String VisualShaderNodeParameter::get_warning(Shader::Mode p_mode, VisualShader:
|
||||
case QUAL_GLOBAL:
|
||||
qualifier_str = "global";
|
||||
break;
|
||||
case QUAL_INSTANCE_INDEX:
|
||||
case QUAL_INSTANCE:
|
||||
qualifier_str = "instance";
|
||||
break;
|
||||
@@ -4537,6 +4554,9 @@ String VisualShaderNodeParameter::get_warning(Shader::Mode p_mode, VisualShader:
|
||||
Vector<StringName> VisualShaderNodeParameter::get_editable_properties() const {
|
||||
Vector<StringName> props;
|
||||
props.push_back("qualifier");
|
||||
if (qualifier == QUAL_INSTANCE_INDEX) {
|
||||
props.push_back("instance_index");
|
||||
}
|
||||
return props;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user