Initialize Quaternion variant with identity

(cherry picked from commit c0e36dc493)
This commit is contained in:
detomon 2023-11-08 17:05:10 +01:00 committed by Thaddeus Crews
parent 1e743ad0ab
commit a52de93373
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC

View file

@ -55,6 +55,9 @@ public:
case Variant::TRANSFORM2D:
init_transform2d(v);
break;
case Variant::QUATERNION:
init_quaternion(v);
break;
case Variant::AABB:
init_aabb(v);
break;
@ -220,7 +223,7 @@ public:
// Should be in the same order as Variant::Type for consistency.
// Those primitive and vector types don't need an `init_` method:
// Nil, bool, float, Vector2/i, Rect2/i, Vector3/i, Plane, Quat, RID.
// Nil, bool, float, Vector2/i, Rect2/i, Vector3/i, Plane, RID.
// Object is a special case, handled via `object_reset_data`.
_FORCE_INLINE_ static void init_string(Variant *v) {
memnew_placement(v->_data._mem, String);
@ -231,6 +234,10 @@ public:
memnew_placement(v->_data._transform2d, Transform2D);
v->type = Variant::TRANSFORM2D;
}
_FORCE_INLINE_ static void init_quaternion(Variant *v) {
memnew_placement(v->_data._mem, Quaternion);
v->type = Variant::QUATERNION;
}
_FORCE_INLINE_ static void init_aabb(Variant *v) {
v->_data._aabb = (AABB *)Variant::Pools::_bucket_small.alloc();
memnew_placement(v->_data._aabb, AABB);