Add support for Vector2i, Rect2i and Vector3i to Variant
WARNING: Requires C++17 'guaranteed copy elision' to fix ambiguous operator problems in Variant. This was added for this commit (and future C++17 uses) in #36457.
This commit is contained in:
parent
a7891b9d12
commit
6da0eef9e6
11 changed files with 1026 additions and 10 deletions
|
|
@ -186,6 +186,18 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
|||
if (r_len)
|
||||
(*r_len) += 4 * 2;
|
||||
|
||||
} break; // 5
|
||||
case Variant::VECTOR2I: {
|
||||
|
||||
ERR_FAIL_COND_V(len < 4 * 2, ERR_INVALID_DATA);
|
||||
Vector2i val;
|
||||
val.x = decode_uint32(&buf[0]);
|
||||
val.y = decode_uint32(&buf[4]);
|
||||
r_variant = val;
|
||||
|
||||
if (r_len)
|
||||
(*r_len) += 4 * 2;
|
||||
|
||||
} break; // 5
|
||||
case Variant::RECT2: {
|
||||
|
||||
|
|
@ -200,6 +212,20 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
|||
if (r_len)
|
||||
(*r_len) += 4 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::RECT2I: {
|
||||
|
||||
ERR_FAIL_COND_V(len < 4 * 4, ERR_INVALID_DATA);
|
||||
Rect2i val;
|
||||
val.position.x = decode_uint32(&buf[0]);
|
||||
val.position.y = decode_uint32(&buf[4]);
|
||||
val.size.x = decode_uint32(&buf[8]);
|
||||
val.size.y = decode_uint32(&buf[12]);
|
||||
r_variant = val;
|
||||
|
||||
if (r_len)
|
||||
(*r_len) += 4 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::VECTOR3: {
|
||||
|
||||
|
|
@ -213,6 +239,19 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
|||
if (r_len)
|
||||
(*r_len) += 4 * 3;
|
||||
|
||||
} break;
|
||||
case Variant::VECTOR3I: {
|
||||
|
||||
ERR_FAIL_COND_V(len < 4 * 3, ERR_INVALID_DATA);
|
||||
Vector3i val;
|
||||
val.x = decode_uint32(&buf[0]);
|
||||
val.y = decode_uint32(&buf[4]);
|
||||
val.z = decode_uint32(&buf[8]);
|
||||
r_variant = val;
|
||||
|
||||
if (r_len)
|
||||
(*r_len) += 4 * 3;
|
||||
|
||||
} break;
|
||||
case Variant::TRANSFORM2D: {
|
||||
|
||||
|
|
@ -966,6 +1005,17 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||
|
||||
r_len += 2 * 4;
|
||||
|
||||
} break; // 5
|
||||
case Variant::VECTOR2I: {
|
||||
|
||||
if (buf) {
|
||||
Vector2i v2 = p_variant;
|
||||
encode_uint32(v2.x, &buf[0]);
|
||||
encode_uint32(v2.y, &buf[4]);
|
||||
}
|
||||
|
||||
r_len += 2 * 4;
|
||||
|
||||
} break; // 5
|
||||
case Variant::RECT2: {
|
||||
|
||||
|
|
@ -978,6 +1028,18 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||
}
|
||||
r_len += 4 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::RECT2I: {
|
||||
|
||||
if (buf) {
|
||||
Rect2i r2 = p_variant;
|
||||
encode_uint32(r2.position.x, &buf[0]);
|
||||
encode_uint32(r2.position.y, &buf[4]);
|
||||
encode_uint32(r2.size.x, &buf[8]);
|
||||
encode_uint32(r2.size.y, &buf[12]);
|
||||
}
|
||||
r_len += 4 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::VECTOR3: {
|
||||
|
||||
|
|
@ -990,6 +1052,18 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||
|
||||
r_len += 3 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::VECTOR3I: {
|
||||
|
||||
if (buf) {
|
||||
Vector3i v3 = p_variant;
|
||||
encode_uint32(v3.x, &buf[0]);
|
||||
encode_uint32(v3.y, &buf[4]);
|
||||
encode_uint32(v3.z, &buf[8]);
|
||||
}
|
||||
|
||||
r_len += 3 * 4;
|
||||
|
||||
} break;
|
||||
case Variant::TRANSFORM2D: {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue