diff options
author | aXu-AP <1621768+aXu-AP@users.noreply.github.com> | 2024-09-03 00:15:53 +0300 |
---|---|---|
committer | aXu-AP <1621768+aXu-AP@users.noreply.github.com> | 2024-09-03 16:59:15 +0300 |
commit | 7218dd6a3a5964d5866b4d19fd1d44a56dde5b93 (patch) | |
tree | 2ae9a8ff94c65b8670bc188ec23353e2941e3130 /core | |
parent | 8120e0324a48190f58616378746d517e4ad40965 (diff) | |
download | redot-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.cpp | 10 |
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; |