Fix inst2dict calling to getters to retrieve value

Use `GDScriptInstance` to iterate through all members directly instead.
This is similar to how `dict2inst` works and makes the serialization
behaviour more consistent.
This commit is contained in:
Andrii Doroshenko (Xrayez) 2019-10-23 21:48:48 +03:00
parent 9008cc486e
commit 1b9a7e1c21

View File

@ -1127,25 +1127,11 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_
d["@subpath"] = cp;
d["@path"] = p->path;
p = base.ptr();
while (p) {
for (Set<StringName>::Element *E = p->members.front(); E; E = E->next()) {
Variant value;
if (ins->get(E->get(), value)) {
String k = E->get();
if (!d.has(k)) {
d[k] = value;
}
}
for (Map<StringName, GDScript::MemberInfo>::Element *E = base->member_indices.front(); E; E = E->next()) {
if (!d.has(E->key())) {
d[E->key()] = ins->members[E->get().index];
}
p = p->_base;
}
r_ret = d;
}
}