Skip to content

Commit

Permalink
Merge pull request #71345 from reduz/support-metadata-multi-node-edit
Browse files Browse the repository at this point in the history
Support metadata in MultiNodeEdit
  • Loading branch information
akien-mga committed Jan 21, 2023
2 parents a58f6a9 + 503d2d1 commit adf109d
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion editor/multi_node_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ bool MultiNodeEdit::_set_impl(const StringName &p_name, const Variant &p_value,

if (name == "scripts") { // Script set is intercepted at object level (check Variant Object::get()), so use a different name.
name = "script";
} else if (name.begins_with("Metadata/")) {
name = name.replace_first("Metadata/", "metadata/");
}

Node *node_path_target = nullptr;
Expand Down Expand Up @@ -98,6 +100,8 @@ bool MultiNodeEdit::_get(const StringName &p_name, Variant &r_ret) const {
String name = p_name;
if (name == "scripts") { // Script set is intercepted at object level (check Variant Object::get()), so use a different name.
name = "script";
} else if (name.begins_with("Metadata/")) {
name = name.replace_first("Metadata/", "metadata/");
}

for (const NodePath &E : nodes) {
Expand Down Expand Up @@ -137,14 +141,18 @@ void MultiNodeEdit::_get_property_list(List<PropertyInfo> *p_list) const {
List<PropertyInfo> plist;
n->get_property_list(&plist, true);

for (const PropertyInfo &F : plist) {
for (PropertyInfo F : plist) {
if (F.name == "script") {
continue; // Added later manually, since this is intercepted before being set (check Variant Object::get()).
} else if (F.name.begins_with("metadata/")) {
F.name = F.name.replace_first("metadata/", "Metadata/"); // Trick to not get actual metadata edited from MultiNodeEdit.
}

if (!usage.has(F.name)) {
PLData pld;
pld.uses = 0;
pld.info = F;
pld.info.name = F.name;
usage[F.name] = pld;
data_list.push_back(usage.getptr(F.name));
}
Expand Down

0 comments on commit adf109d

Please sign in to comment.