summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authoraXu-AP <1621768+aXu-AP@users.noreply.github.com>2024-09-03 00:15:53 +0300
committeraXu-AP <1621768+aXu-AP@users.noreply.github.com>2024-09-03 16:59:15 +0300
commit7218dd6a3a5964d5866b4d19fd1d44a56dde5b93 (patch)
tree2ae9a8ff94c65b8670bc188ec23353e2941e3130 /core
parent8120e0324a48190f58616378746d517e4ad40965 (diff)
downloadredot-engine-7218dd6a3a5964d5866b4d19fd1d44a56dde5b93.tar.gz
Add support for Transform2D/3D in lerp()
Implements godotengine/godot-proposals#10579
Diffstat (limited to 'core')
-rw-r--r--core/variant/variant_utility.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp
index 7534a154a1..384fe6c4a6 100644
--- a/core/variant/variant_utility.cpp
+++ b/core/variant/variant_utility.cpp
@@ -452,12 +452,14 @@ Variant VariantUtilityFunctions::lerp(const Variant &from, const Variant &to, do
case Variant::QUATERNION:
case Variant::BASIS:
case Variant::COLOR:
+ case Variant::TRANSFORM2D:
+ case Variant::TRANSFORM3D:
break;
default:
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::NIL;
- return R"(Argument "from" must be "int", "float", "Vector2", "Vector3", "Vector4", "Quaternion", "Basis, or "Color".)";
+ return R"(Argument "from" must be "int", "float", "Vector2", "Vector3", "Vector4", "Color", "Quaternion", "Basis", "Transform2D", or "Transform3D".)";
}
if (from.get_type() != to.get_type()) {
@@ -490,6 +492,12 @@ Variant VariantUtilityFunctions::lerp(const Variant &from, const Variant &to, do
case Variant::BASIS: {
return VariantInternalAccessor<Basis>::get(&from).slerp(VariantInternalAccessor<Basis>::get(&to), weight);
} break;
+ case Variant::TRANSFORM2D: {
+ return VariantInternalAccessor<Transform2D>::get(&from).interpolate_with(VariantInternalAccessor<Transform2D>::get(&to), weight);
+ } break;
+ case Variant::TRANSFORM3D: {
+ return VariantInternalAccessor<Transform3D>::get(&from).interpolate_with(VariantInternalAccessor<Transform3D>::get(&to), weight);
+ } break;
case Variant::COLOR: {
return VariantInternalAccessor<Color>::get(&from).lerp(VariantInternalAccessor<Color>::get(&to), weight);
} break;