[Bf-blender-cvs] [e3395093fff] geometry-nodes: Geometry Nodes: Create the node group when adding a new Nodes modifier

Dalai Felinto noreply at git.blender.org
Thu Oct 29 17:37:51 CET 2020


Commit: e3395093fff782ad8763ac4f0ad9c9b4ce0b09c8
Author: Dalai Felinto
Date:   Thu Oct 29 17:11:30 2020 +0100
Branches: geometry-nodes
https://developer.blender.org/rBe3395093fff782ad8763ac4f0ad9c9b4ce0b09c8

Geometry Nodes: Create the node group when adding a new Nodes modifier

===================================================================

M	source/blender/editors/object/object_modifier.c
M	source/blender/modifiers/MOD_nodes.h
M	source/blender/modifiers/intern/MOD_nodes.cc

===================================================================

diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 17dc8f46796..a59d438ad6b 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -90,6 +90,8 @@
 #include "ED_screen.h"
 #include "ED_sculpt.h"
 
+#include "MOD_nodes.h"
+
 #include "UI_interface.h"
 
 #include "WM_api.h"
@@ -232,6 +234,9 @@ ModifierData *ED_object_modifier_add(
       /* ensure skin-node customdata exists */
       BKE_mesh_ensure_skin_customdata(ob->data);
     }
+    else if (type == eModifierType_Nodes) {
+      MOD_nodes_init(bmain, (NodesModifierData *)new_md);
+    }
   }
 
   DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
diff --git a/source/blender/modifiers/MOD_nodes.h b/source/blender/modifiers/MOD_nodes.h
index 169a370c862..9c75e7e3416 100644
--- a/source/blender/modifiers/MOD_nodes.h
+++ b/source/blender/modifiers/MOD_nodes.h
@@ -16,6 +16,7 @@
 
 #pragma once
 
+struct Main;
 struct Object;
 struct NodesModifierData;
 
@@ -25,6 +26,8 @@ extern "C" {
 
 void MOD_nodes_update_interface(struct Object *object, struct NodesModifierData *nmd);
 
+void MOD_nodes_init(struct Main *bmain, struct NodesModifierData *nmd);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 4c813950211..bee37c7fdb5 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -66,6 +66,7 @@
 #include "MOD_ui_common.h"
 
 #include "NOD_derived_node_tree.hh"
+#include "NOD_geometry.h"
 #include "NOD_geometry_exec.hh"
 #include "NOD_node_tree_multi_function.hh"
 #include "NOD_type_callbacks.hh"
@@ -435,6 +436,30 @@ void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
   DEG_id_tag_update(&object->id, ID_RECALC_GEOMETRY);
 }
 
+void MOD_nodes_init(Main *bmain, NodesModifierData *nmd)
+{
+  bNodeTree *ntree = ntreeAddTree(bmain, "Geometry Node Group", ntreeType_Geometry->idname);
+  nmd->node_group = ntree;
+
+  ntreeAddSocketInterface(ntree, SOCK_IN, "NodeSocketGeometry", "Geometry");
+  ntreeAddSocketInterface(ntree, SOCK_OUT, "NodeSocketGeometry", "Geometry");
+
+  bNode *group_input_node = nodeAddStaticNode(NULL, ntree, NODE_GROUP_INPUT);
+  bNode *group_output_node = nodeAddStaticNode(NULL, ntree, NODE_GROUP_OUTPUT);
+
+  group_input_node->locx = -200 - group_input_node->width;
+  group_output_node->locx = 200;
+  group_output_node->flag |= NODE_DO_OUTPUT;
+
+  nodeAddLink(ntree,
+              group_output_node,
+              (bNodeSocket *)group_output_node->inputs.first,
+              group_input_node,
+              (bNodeSocket *)group_input_node->outputs.first);
+
+  ntreeUpdateTree(bmain, ntree);
+}
+
 static void initialize_group_input(NodesModifierData &nmd,
                                    const bNodeSocket &socket,
                                    const CPPType &cpp_type,



More information about the Bf-blender-cvs mailing list