|
@@ -76,6 +76,8 @@ const char *VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX
|
|
"rad2deg",
|
|
"rad2deg",
|
|
"linear2db",
|
|
"linear2db",
|
|
"db2linear",
|
|
"db2linear",
|
|
|
|
+ "wrapi",
|
|
|
|
+ "wrapf",
|
|
"max",
|
|
"max",
|
|
"min",
|
|
"min",
|
|
"clamp",
|
|
"clamp",
|
|
@@ -195,6 +197,8 @@ int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) {
|
|
return 2;
|
|
return 2;
|
|
case MATH_LERP:
|
|
case MATH_LERP:
|
|
case MATH_DECTIME:
|
|
case MATH_DECTIME:
|
|
|
|
+ case MATH_WRAP:
|
|
|
|
+ case MATH_WRAPF:
|
|
case LOGIC_CLAMP:
|
|
case LOGIC_CLAMP:
|
|
return 3;
|
|
return 3;
|
|
case FUNC_MAX: {
|
|
case FUNC_MAX: {
|
|
@@ -340,6 +344,22 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
|
|
case MATH_DB2LINEAR: {
|
|
case MATH_DB2LINEAR: {
|
|
return PropertyInfo(Variant::REAL, "db");
|
|
return PropertyInfo(Variant::REAL, "db");
|
|
} break;
|
|
} break;
|
|
|
|
+ case MATH_WRAP: {
|
|
|
|
+ if (p_idx == 0)
|
|
|
|
+ return PropertyInfo(Variant::INT, "value");
|
|
|
|
+ else if (p_idx == 1)
|
|
|
|
+ return PropertyInfo(Variant::INT, "min");
|
|
|
|
+ else
|
|
|
|
+ return PropertyInfo(Variant::INT, "max");
|
|
|
|
+ } break;
|
|
|
|
+ case MATH_WRAPF: {
|
|
|
|
+ if (p_idx == 0)
|
|
|
|
+ return PropertyInfo(Variant::REAL, "value");
|
|
|
|
+ else if (p_idx == 1)
|
|
|
|
+ return PropertyInfo(Variant::REAL, "min");
|
|
|
|
+ else
|
|
|
|
+ return PropertyInfo(Variant::REAL, "max");
|
|
|
|
+ } break;
|
|
case LOGIC_MAX: {
|
|
case LOGIC_MAX: {
|
|
if (p_idx == 0)
|
|
if (p_idx == 0)
|
|
return PropertyInfo(Variant::REAL, "a");
|
|
return PropertyInfo(Variant::REAL, "a");
|
|
@@ -523,9 +543,13 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
|
|
case MATH_DEG2RAD:
|
|
case MATH_DEG2RAD:
|
|
case MATH_RAD2DEG:
|
|
case MATH_RAD2DEG:
|
|
case MATH_LINEAR2DB:
|
|
case MATH_LINEAR2DB:
|
|
|
|
+ case MATH_WRAPF:
|
|
case MATH_DB2LINEAR: {
|
|
case MATH_DB2LINEAR: {
|
|
t = Variant::REAL;
|
|
t = Variant::REAL;
|
|
} break;
|
|
} break;
|
|
|
|
+ case MATH_WRAP: {
|
|
|
|
+ t = Variant::INT;
|
|
|
|
+ } break;
|
|
case LOGIC_MAX:
|
|
case LOGIC_MAX:
|
|
case LOGIC_MIN:
|
|
case LOGIC_MIN:
|
|
case LOGIC_CLAMP: {
|
|
case LOGIC_CLAMP: {
|
|
@@ -856,6 +880,18 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
|
|
VALIDATE_ARG_NUM(0);
|
|
VALIDATE_ARG_NUM(0);
|
|
*r_return = Math::db2linear((double)*p_inputs[0]);
|
|
*r_return = Math::db2linear((double)*p_inputs[0]);
|
|
} break;
|
|
} break;
|
|
|
|
+ case VisualScriptBuiltinFunc::MATH_WRAP: {
|
|
|
|
+ VALIDATE_ARG_NUM(0);
|
|
|
|
+ VALIDATE_ARG_NUM(1);
|
|
|
|
+ VALIDATE_ARG_NUM(2);
|
|
|
|
+ *r_return = Math::wrapi((int64_t)*p_inputs[0], (int64_t)*p_inputs[1], (int64_t)*p_inputs[2]);
|
|
|
|
+ } break;
|
|
|
|
+ case VisualScriptBuiltinFunc::MATH_WRAPF: {
|
|
|
|
+ VALIDATE_ARG_NUM(0);
|
|
|
|
+ VALIDATE_ARG_NUM(1);
|
|
|
|
+ VALIDATE_ARG_NUM(2);
|
|
|
|
+ *r_return = Math::wrapf((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
|
|
|
+ } break;
|
|
case VisualScriptBuiltinFunc::LOGIC_MAX: {
|
|
case VisualScriptBuiltinFunc::LOGIC_MAX: {
|
|
|
|
|
|
if (p_inputs[0]->get_type() == Variant::INT && p_inputs[1]->get_type() == Variant::INT) {
|
|
if (p_inputs[0]->get_type() == Variant::INT && p_inputs[1]->get_type() == Variant::INT) {
|
|
@@ -1214,6 +1250,8 @@ void VisualScriptBuiltinFunc::_bind_methods() {
|
|
BIND_ENUM_CONSTANT(MATH_RAD2DEG);
|
|
BIND_ENUM_CONSTANT(MATH_RAD2DEG);
|
|
BIND_ENUM_CONSTANT(MATH_LINEAR2DB);
|
|
BIND_ENUM_CONSTANT(MATH_LINEAR2DB);
|
|
BIND_ENUM_CONSTANT(MATH_DB2LINEAR);
|
|
BIND_ENUM_CONSTANT(MATH_DB2LINEAR);
|
|
|
|
+ BIND_ENUM_CONSTANT(MATH_WRAP);
|
|
|
|
+ BIND_ENUM_CONSTANT(MATH_WRAPF);
|
|
BIND_ENUM_CONSTANT(LOGIC_MAX);
|
|
BIND_ENUM_CONSTANT(LOGIC_MAX);
|
|
BIND_ENUM_CONSTANT(LOGIC_MIN);
|
|
BIND_ENUM_CONSTANT(LOGIC_MIN);
|
|
BIND_ENUM_CONSTANT(LOGIC_CLAMP);
|
|
BIND_ENUM_CONSTANT(LOGIC_CLAMP);
|
|
@@ -1294,6 +1332,8 @@ void register_visual_script_builtin_func_node() {
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/rad2deg", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAD2DEG>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/rad2deg", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAD2DEG>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/linear2db", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LINEAR2DB>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/linear2db", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LINEAR2DB>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/db2linear", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DB2LINEAR>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/db2linear", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DB2LINEAR>);
|
|
|
|
+ VisualScriptLanguage::singleton->add_register_func("functions/built_in/wrapi", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_WRAP>);
|
|
|
|
+ VisualScriptLanguage::singleton->add_register_func("functions/built_in/wrapf", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_WRAPF>);
|
|
|
|
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/max", create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MAX>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/max", create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MAX>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/min", create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MIN>);
|
|
VisualScriptLanguage::singleton->add_register_func("functions/built_in/min", create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MIN>);
|