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:
parent
9008cc486e
commit
1b9a7e1c21
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user