Skip to content

Commit

Permalink
Ensure C# script properties are added to the end
Browse files Browse the repository at this point in the history
Ensures that the `get_property_list` and `get_script_property_list`
methods push the script properties to the end of the given list, this
prevents the script property from appearing after the script variables.
  • Loading branch information
raulsntos committed Oct 30, 2021
1 parent 6b0b1a4 commit 2913c32
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions modules/mono/csharp_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1813,8 +1813,9 @@ void CSharpInstance::get_event_signals_state_for_reloading(List<Pair<StringName,
}

void CSharpInstance::get_property_list(List<PropertyInfo> *p_properties) const {
List<PropertyInfo> props;
for (OrderedHashMap<StringName, PropertyInfo>::ConstElement E = script->member_info.front(); E; E = E.next()) {
p_properties->push_front(E.value());
props.push_front(E.value());
}

// Call _get_property_list
Expand All @@ -1837,15 +1838,19 @@ void CSharpInstance::get_property_list(List<PropertyInfo> *p_properties) const {
if (ret) {
Array array = Array(GDMonoMarshal::mono_object_to_variant(ret));
for (int i = 0, size = array.size(); i < size; i++) {
p_properties->push_back(PropertyInfo::from_dict(array.get(i)));
props.push_back(PropertyInfo::from_dict(array.get(i)));
}
}

return;
break;
}

top = top->get_parent_class();
}

for (const PropertyInfo &prop : props) {
p_properties->push_back(prop);
}
}

Variant::Type CSharpInstance::get_property_type(const StringName &p_name, bool *r_is_valid) const {
Expand Down Expand Up @@ -3499,8 +3504,14 @@ Ref<Script> CSharpScript::get_base_script() const {
}

void CSharpScript::get_script_property_list(List<PropertyInfo> *r_list) const {
List<PropertyInfo> props;

for (OrderedHashMap<StringName, PropertyInfo>::ConstElement E = member_info.front(); E; E = E.next()) {
r_list->push_front(E.value());
props.push_front(E.value());
}

for (const PropertyInfo &prop : props) {
r_list->push_back(prop);
}
}

Expand Down

0 comments on commit 2913c32

Please sign in to comment.