summaryrefslogtreecommitdiff
path: root/tools/editor/multi_node_edit.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2017-03-02 11:47:11 +0100
committerGitHub <noreply@github.com>2017-03-02 11:47:11 +0100
commit74eace2b14b337e23d0dc552f3bc3e60f1710f65 (patch)
tree09c8e2db6b3ce6382ad4b65048710f3a5f80ffa3 /tools/editor/multi_node_edit.cpp
parentee53f85bea20f1d579dae5cce849b4ad9806a9bd (diff)
parent1e867cb9d439f1e989f44730b936e2a00e213100 (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.cpp21
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()
{
}