1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-11 13:10:58 +00:00

[3.x] Add hints and default values to the uniform nodes in visual shader

This commit is contained in:
Yuri Roubinsky
2022-01-03 22:07:18 +03:00
parent ccbfe8563e
commit 5b0fe7880e
10 changed files with 595 additions and 48 deletions

View File

@@ -1302,26 +1302,23 @@ class VisualShaderNodeScalarUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeScalarUniform, VisualShaderNodeUniform);
public:
virtual String get_caption() const;
enum Hint {
HINT_NONE,
HINT_RANGE,
HINT_RANGE_STEP,
HINT_MAX,
};
virtual int get_input_port_count() const;
virtual PortType get_input_port_type(int p_port) const;
virtual String get_input_port_name(int p_port) const;
private:
Hint hint = HINT_NONE;
float hint_range_min;
float hint_range_max;
float hint_range_step;
bool default_value_enabled;
float default_value;
virtual int get_output_port_count() const;
virtual PortType get_output_port_type(int p_port) const;
virtual String get_output_port_name(int p_port) const;
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
VisualShaderNodeScalarUniform();
};
///////////////////////////////////////
class VisualShaderNodeBooleanUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeBooleanUniform, VisualShaderNodeUniform);
protected:
static void _bind_methods();
public:
virtual String get_caption() const;
@@ -1337,6 +1334,65 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
void set_hint(Hint p_hint);
Hint get_hint() const;
void set_min(float p_value);
float get_min() const;
void set_max(float p_value);
float get_max() const;
void set_step(float p_value);
float get_step() const;
void set_default_value_enabled(bool p_enabled);
bool is_default_value_enabled() const;
void set_default_value(float p_value);
float get_default_value() const;
virtual Vector<StringName> get_editable_properties() const;
VisualShaderNodeScalarUniform();
};
VARIANT_ENUM_CAST(VisualShaderNodeScalarUniform::Hint)
///////////////////////////////////////
class VisualShaderNodeBooleanUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeBooleanUniform, VisualShaderNodeUniform);
private:
bool default_value_enabled;
bool default_value;
protected:
static void _bind_methods();
public:
virtual String get_caption() const;
virtual int get_input_port_count() const;
virtual PortType get_input_port_type(int p_port) const;
virtual String get_input_port_name(int p_port) const;
virtual int get_output_port_count() const;
virtual PortType get_output_port_type(int p_port) const;
virtual String get_output_port_name(int p_port) const;
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
void set_default_value_enabled(bool p_enabled);
bool is_default_value_enabled() const;
void set_default_value(bool p_value);
bool get_default_value() const;
virtual Vector<StringName> get_editable_properties() const;
VisualShaderNodeBooleanUniform();
};
@@ -1345,6 +1401,13 @@ public:
class VisualShaderNodeColorUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeColorUniform, VisualShaderNodeUniform);
private:
bool default_value_enabled;
Color default_value;
protected:
static void _bind_methods();
public:
virtual String get_caption() const;
@@ -1359,6 +1422,14 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
void set_default_value_enabled(bool p_enabled);
bool is_default_value_enabled() const;
void set_default_value(const Color &p_value);
Color get_default_value() const;
virtual Vector<StringName> get_editable_properties() const;
VisualShaderNodeColorUniform();
};
@@ -1367,6 +1438,13 @@ public:
class VisualShaderNodeVec3Uniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeVec3Uniform, VisualShaderNodeUniform);
private:
bool default_value_enabled;
Vector3 default_value;
protected:
static void _bind_methods();
public:
virtual String get_caption() const;
@@ -1381,6 +1459,14 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
void set_default_value_enabled(bool p_enabled);
bool is_default_value_enabled() const;
void set_default_value(const Vector3 &p_value);
Vector3 get_default_value() const;
virtual Vector<StringName> get_editable_properties() const;
VisualShaderNodeVec3Uniform();
};
@@ -1389,6 +1475,13 @@ public:
class VisualShaderNodeTransformUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeTransformUniform, VisualShaderNodeUniform);
private:
bool default_value_enabled;
Transform default_value;
protected:
static void _bind_methods();
public:
virtual String get_caption() const;
@@ -1403,6 +1496,14 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const;
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
void set_default_value_enabled(bool p_enabled);
bool is_default_value_enabled() const;
void set_default_value(const Transform &p_value);
Transform get_default_value() const;
virtual Vector<StringName> get_editable_properties() const;
VisualShaderNodeTransformUniform();
};
@@ -1447,6 +1548,7 @@ public:
virtual String 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 = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
virtual bool is_code_generated() const;
virtual bool is_show_prop_names() const;
Vector<StringName> get_editable_properties() const;