Add serialization for RID and Signal
This commit is contained in:
parent
44516d1a5c
commit
f67891fcd1
@ -532,7 +532,13 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
||||
|
||||
} break;
|
||||
case Variant::RID: {
|
||||
r_variant = RID();
|
||||
ERR_FAIL_COND_V(len < 8, ERR_INVALID_DATA);
|
||||
uint64_t id = decode_uint64(buf);
|
||||
if (r_len) {
|
||||
(*r_len) += 8;
|
||||
}
|
||||
|
||||
r_variant = RID::from_uint64(id);
|
||||
} break;
|
||||
case Variant::OBJECT: {
|
||||
if (type & ENCODE_FLAG_OBJECT_AS_ID) {
|
||||
@ -614,9 +620,20 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
||||
r_variant = Callable();
|
||||
} break;
|
||||
case Variant::SIGNAL: {
|
||||
r_variant = Signal();
|
||||
} break;
|
||||
String name;
|
||||
Error err = _decode_string(buf, len, r_len, name);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
ERR_FAIL_COND_V(len < 8, ERR_INVALID_DATA);
|
||||
ObjectID id = ObjectID(decode_uint64(buf));
|
||||
if (r_len) {
|
||||
(*r_len) += 8;
|
||||
}
|
||||
|
||||
r_variant = Signal(id, StringName(name));
|
||||
} break;
|
||||
case Variant::DICTIONARY: {
|
||||
ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
|
||||
int32_t count = decode_uint32(buf);
|
||||
@ -1352,10 +1369,12 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
||||
|
||||
} break;
|
||||
case Variant::RID: {
|
||||
} break;
|
||||
case Variant::CALLABLE: {
|
||||
} break;
|
||||
case Variant::SIGNAL: {
|
||||
RID rid = p_variant;
|
||||
|
||||
if (buf) {
|
||||
encode_uint64(rid.get_id(), buf);
|
||||
}
|
||||
r_len += 8;
|
||||
} break;
|
||||
case Variant::OBJECT: {
|
||||
if (p_full_objects) {
|
||||
@ -1419,6 +1438,18 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
||||
}
|
||||
|
||||
} break;
|
||||
case Variant::CALLABLE: {
|
||||
} break;
|
||||
case Variant::SIGNAL: {
|
||||
Signal signal = p_variant;
|
||||
|
||||
_encode_string(signal.get_name(), buf, r_len);
|
||||
|
||||
if (buf) {
|
||||
encode_uint64(signal.get_object_id(), buf);
|
||||
}
|
||||
r_len += 8;
|
||||
} break;
|
||||
case Variant::DICTIONARY: {
|
||||
Dictionary d = p_variant;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user