Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-04-18 18:22:15 +0300
committerHans Goudey <h.goudey@me.com>2022-04-18 18:22:15 +0300
commitb45e566097c395f63db84bb76c935ae0850da475 (patch)
tree164b4ba5d09eb68bce02831619ea99d717e3aec6 /source/blender/editors/object/object_modifier.cc
parented7bbbe16448711042cdef0dae8125d0fddd5808 (diff)
parentccd2e89d37fb4887045969c1a50a66ca024c8c11 (diff)
Merge branch 'master' into temp-mesh-cpp
Diffstat (limited to 'source/blender/editors/object/object_modifier.cc')
-rw-r--r--source/blender/editors/object/object_modifier.cc47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/blender/editors/object/object_modifier.cc b/source/blender/editors/object/object_modifier.cc
index 8cbd9a8d3e8..89bca8d76cf 100644
--- a/source/blender/editors/object/object_modifier.cc
+++ b/source/blender/editors/object/object_modifier.cc
@@ -3299,3 +3299,50 @@ void OBJECT_OT_geometry_nodes_input_attribute_toggle(wmOperatorType *ot)
}
/** \} */
+
+/* ------------------------------------------------------------------- */
+/** \name Copy and Assign Geometry Node Group operator
+ * \{ */
+
+static int geometry_node_tree_copy_assign_exec(bContext *C, wmOperator *op)
+{
+ Main *bmain = CTX_data_main(C);
+ Object *ob = ED_object_active_context(C);
+
+ ModifierData *md = BKE_object_active_modifier(ob);
+ if (md->type != eModifierType_Nodes) {
+ return OPERATOR_CANCELLED;
+ }
+
+ NodesModifierData *nmd = (NodesModifierData *)md;
+ bNodeTree *tree = nmd->node_group;
+ if (tree == NULL) {
+ return OPERATOR_CANCELLED;
+ }
+
+ bNodeTree *new_tree = (bNodeTree *)BKE_id_copy_ex(
+ bmain, &tree->id, NULL, LIB_ID_COPY_ACTIONS | LIB_ID_COPY_DEFAULT);
+
+ if (new_tree == NULL) {
+ return OPERATOR_CANCELLED;
+ }
+
+ nmd->node_group = new_tree;
+ id_us_min(&tree->id);
+
+ WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_geometry_node_tree_copy_assign(wmOperatorType *ot)
+{
+ ot->name = "Copy Geometry Node Group";
+ ot->description = "Copy the active geometry node group and assign it to the active modifier";
+ ot->idname = "OBJECT_OT_geometry_node_tree_copy_assign";
+
+ ot->exec = geometry_node_tree_copy_assign_exec;
+
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
+/** \} */