[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