Merge pull request #30693 from Chaosus/lerp_angle
Added lerp_angle built-in function
This commit is contained in:
@@ -604,6 +604,29 @@
|
||||
[/codeblock]
|
||||
</description>
|
||||
</method>
|
||||
<method name="lerp_angle">
|
||||
<return type="float">
|
||||
</return>
|
||||
<argument index="0" name="from" type="float">
|
||||
</argument>
|
||||
<argument index="1" name="to" type="float">
|
||||
</argument>
|
||||
<argument index="2" name="weight" type="float">
|
||||
</argument>
|
||||
<description>
|
||||
Linearly interpolates between two angles (in radians) by a normalized value.
|
||||
Similar to [method lerp] but interpolate correctly when the angles wrap around [constant @GDScript.TAU].
|
||||
[codeblock]
|
||||
extends Sprite
|
||||
var elapsed = 0.0
|
||||
func _process(delta):
|
||||
var min_angle = deg2rad(0.0)
|
||||
var max_angle = deg2rad(90.0)
|
||||
rotation = lerp_angle(min_angle, max_angle, elapsed)
|
||||
elapsed += delta
|
||||
[/codeblock]
|
||||
</description>
|
||||
</method>
|
||||
<method name="linear2db">
|
||||
<return type="float">
|
||||
</return>
|
||||
|
||||
@@ -76,6 +76,7 @@ const char *GDScriptFunctions::get_func_name(Function p_func) {
|
||||
"step_decimals",
|
||||
"stepify",
|
||||
"lerp",
|
||||
"lerp_angle",
|
||||
"inverse_lerp",
|
||||
"range_lerp",
|
||||
"smoothstep",
|
||||
@@ -383,6 +384,13 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
case MATH_LERP_ANGLE: {
|
||||
VALIDATE_ARG_COUNT(3);
|
||||
VALIDATE_ARG_NUM(0);
|
||||
VALIDATE_ARG_NUM(1);
|
||||
VALIDATE_ARG_NUM(2);
|
||||
r_ret = Math::lerp_angle((double)*p_args[0], (double)*p_args[1], (double)*p_args[2]);
|
||||
} break;
|
||||
case MATH_INVERSE_LERP: {
|
||||
VALIDATE_ARG_COUNT(3);
|
||||
VALIDATE_ARG_NUM(0);
|
||||
@@ -1676,6 +1684,11 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) {
|
||||
mi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
|
||||
return mi;
|
||||
} break;
|
||||
case MATH_LERP_ANGLE: {
|
||||
MethodInfo mi("lerp_angle", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "weight"));
|
||||
mi.return_val.type = Variant::REAL;
|
||||
return mi;
|
||||
} break;
|
||||
case MATH_INVERSE_LERP: {
|
||||
MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "weight"));
|
||||
mi.return_val.type = Variant::REAL;
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
MATH_STEP_DECIMALS,
|
||||
MATH_STEPIFY,
|
||||
MATH_LERP,
|
||||
MATH_LERP_ANGLE,
|
||||
MATH_INVERSE_LERP,
|
||||
MATH_RANGE_LERP,
|
||||
MATH_SMOOTHSTEP,
|
||||
|
||||
Reference in New Issue
Block a user