summaryrefslogtreecommitdiffstats
path: root/scene/resources/animation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/resources/animation.cpp')
-rw-r--r--scene/resources/animation.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index 7078d60de5..860e48a361 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -427,6 +427,11 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) {
} else {
return false;
}
+#ifndef DISABLE_DEPRECATED
+ } else if (prop_name == "loop" && p_value.operator bool()) { // Compatibility with Godot 3.x.
+ loop_mode = Animation::LoopMode::LOOP_LINEAR;
+ return true;
+#endif // DISABLE_DEPRECATED
} else {
return false;
}
@@ -5503,6 +5508,9 @@ Variant Animation::add_variant(const Variant &a, const Variant &b) {
const ::AABB ab = b.operator ::AABB();
return ::AABB(aa.position + ab.position, aa.size + ab.size);
}
+ case Variant::BASIS: {
+ return (a.operator Basis()) * (b.operator Basis());
+ }
case Variant::QUATERNION: {
return (a.operator Quaternion()) * (b.operator Quaternion());
}
@@ -5550,14 +5558,17 @@ Variant Animation::subtract_variant(const Variant &a, const Variant &b) {
const ::AABB ab = b.operator ::AABB();
return ::AABB(aa.position - ab.position, aa.size - ab.size);
}
+ case Variant::BASIS: {
+ return (b.operator Basis()).inverse() * (a.operator Basis());
+ }
case Variant::QUATERNION: {
return (b.operator Quaternion()).inverse() * (a.operator Quaternion());
}
case Variant::TRANSFORM2D: {
- return (b.operator Transform2D()).inverse() * (a.operator Transform2D());
+ return (b.operator Transform2D()).affine_inverse() * (a.operator Transform2D());
}
case Variant::TRANSFORM3D: {
- return (b.operator Transform3D()).inverse() * (a.operator Transform3D());
+ return (b.operator Transform3D()).affine_inverse() * (a.operator Transform3D());
}
default: {
return Variant::evaluate(Variant::OP_SUBTRACT, a, b);