diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2017-03-02 11:47:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-02 11:47:11 +0100 |
commit | 74eace2b14b337e23d0dc552f3bc3e60f1710f65 (patch) | |
tree | 09c8e2db6b3ce6382ad4b65048710f3a5f80ffa3 /tools/editor/multi_node_edit.cpp | |
parent | ee53f85bea20f1d579dae5cce849b4ad9806a9bd (diff) | |
parent | 1e867cb9d439f1e989f44730b936e2a00e213100 (diff) |
Merge pull request #7911 from RandomShaper/single-field-prop-edit
Implement single-field property change for multinode edit
Diffstat (limited to 'tools/editor/multi_node_edit.cpp')
-rw-r--r-- | tools/editor/multi_node_edit.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tools/editor/multi_node_edit.cpp b/tools/editor/multi_node_edit.cpp index 27bb6d66fc..0428d7ef30 100644 --- a/tools/editor/multi_node_edit.cpp +++ b/tools/editor/multi_node_edit.cpp @@ -29,9 +29,15 @@ #include "multi_node_edit.h" #include "editor_node.h" +#include "core/helper/math_fieldwise.h" bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){ + return _set_impl(p_name, p_value, ""); +} + +bool MultiNodeEdit::_set_impl(const StringName& p_name, const Variant& p_value, const String& p_field) { + Node *es = EditorNode::get_singleton()->get_edited_scene(); if (!es) return false; @@ -59,7 +65,15 @@ bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){ NodePath p_path = n->get_path_to(tonode); ur->add_do_property(n,name,p_path); } else { - ur->add_do_property(n,name,p_value); + Variant new_value; + if (p_field=="") { + // whole value + new_value=p_value; + } else { + // only one field + new_value=fieldwise_assign(n->get(name),p_value,p_field); + } + ur->add_do_property(n,name,new_value); } ur->add_undo_property(n,name,n->get(name)); @@ -167,6 +181,11 @@ void MultiNodeEdit::add_node(const NodePath& p_node){ nodes.push_back(p_node); } +void MultiNodeEdit::set_property_field(const StringName& p_property, const Variant& p_value, const String& p_field) { + + _set_impl(p_property, p_value, p_field); +} + MultiNodeEdit::MultiNodeEdit() { } |