Add hint_enum for uniform int in gdshader
This commit is contained in:
parent
97b8ad1af0
commit
1052985b00
5 changed files with 157 additions and 8 deletions
|
|
@ -5368,6 +5368,20 @@ String VisualShaderNodeIntParameter::generate_global(Shader::Mode p_mode, Visual
|
|||
code += _get_qual_str() + "uniform int " + get_parameter_name() + " : hint_range(" + itos(hint_range_min) + ", " + itos(hint_range_max) + ")";
|
||||
} else if (hint == HINT_RANGE_STEP) {
|
||||
code += _get_qual_str() + "uniform int " + get_parameter_name() + " : hint_range(" + itos(hint_range_min) + ", " + itos(hint_range_max) + ", " + itos(hint_range_step) + ")";
|
||||
} else if (hint == HINT_ENUM) {
|
||||
code += _get_qual_str() + "uniform int " + get_parameter_name() + " : hint_enum(";
|
||||
|
||||
bool first = true;
|
||||
for (const String &_name : hint_enum_names) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
code += ", ";
|
||||
}
|
||||
code += "\"" + _name.c_escape() + "\"";
|
||||
}
|
||||
|
||||
code += ")";
|
||||
} else {
|
||||
code += _get_qual_str() + "uniform int " + get_parameter_name();
|
||||
}
|
||||
|
|
@ -5439,6 +5453,18 @@ int VisualShaderNodeIntParameter::get_step() const {
|
|||
return hint_range_step;
|
||||
}
|
||||
|
||||
void VisualShaderNodeIntParameter::set_enum_names(const PackedStringArray &p_names) {
|
||||
if (hint_enum_names == p_names) {
|
||||
return;
|
||||
}
|
||||
hint_enum_names = p_names;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
PackedStringArray VisualShaderNodeIntParameter::get_enum_names() const {
|
||||
return hint_enum_names;
|
||||
}
|
||||
|
||||
void VisualShaderNodeIntParameter::set_default_value_enabled(bool p_default_value_enabled) {
|
||||
if (default_value_enabled == p_default_value_enabled) {
|
||||
return;
|
||||
|
|
@ -5476,22 +5502,27 @@ void VisualShaderNodeIntParameter::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_step", "value"), &VisualShaderNodeIntParameter::set_step);
|
||||
ClassDB::bind_method(D_METHOD("get_step"), &VisualShaderNodeIntParameter::get_step);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_enum_names", "names"), &VisualShaderNodeIntParameter::set_enum_names);
|
||||
ClassDB::bind_method(D_METHOD("get_enum_names"), &VisualShaderNodeIntParameter::get_enum_names);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeIntParameter::set_default_value_enabled);
|
||||
ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeIntParameter::is_default_value_enabled);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeIntParameter::set_default_value);
|
||||
ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeIntParameter::get_default_value);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,Range + Step"), "set_hint", "get_hint");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,Range + Step,Enum"), "set_hint", "get_hint");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "min"), "set_min", "get_min");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "max"), "set_max", "get_max");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "step"), "set_step", "get_step");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "enum_names"), "set_enum_names", "get_enum_names");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "default_value"), "set_default_value", "get_default_value");
|
||||
|
||||
BIND_ENUM_CONSTANT(HINT_NONE);
|
||||
BIND_ENUM_CONSTANT(HINT_RANGE);
|
||||
BIND_ENUM_CONSTANT(HINT_RANGE_STEP);
|
||||
BIND_ENUM_CONSTANT(HINT_ENUM);
|
||||
BIND_ENUM_CONSTANT(HINT_MAX);
|
||||
}
|
||||
|
||||
|
|
@ -5513,6 +5544,9 @@ Vector<StringName> VisualShaderNodeIntParameter::get_editable_properties() const
|
|||
if (hint == HINT_RANGE_STEP) {
|
||||
props.push_back("step");
|
||||
}
|
||||
if (hint == HINT_ENUM) {
|
||||
props.push_back("enum_names");
|
||||
}
|
||||
props.push_back("default_value_enabled");
|
||||
if (default_value_enabled) {
|
||||
props.push_back("default_value");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue