diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 76d8207eead..efde01a2a3b 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -1433,6 +1433,10 @@ typedef struct NodeGeometryDeleteGeometry { int8_t domain; /* GeometryNodeDeleteGeometryMode. */ int8_t mode; + + char _pad[6]; + + bNodeTree *node_tree; } NodeGeometryDeleteGeometry; typedef struct NodeGeometryDuplicateElements { diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 24ba8f0fd30..aa49b6e08f3 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -10525,6 +10525,15 @@ static void def_geo_delete_geometry(StructRNA *srna) RNA_def_property_enum_default(prop, ATTR_DOMAIN_POINT); RNA_def_property_ui_text(prop, "Domain", "Which domain to delete in"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); + + prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "node_tree"); + RNA_def_property_struct_type(prop, "NodeTree"); + RNA_def_property_pointer_funcs(prop, NULL, "rna_NodeGroup_node_tree_set", NULL, "rna_NodeGroup_node_tree_poll"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY); + RNA_def_property_ui_text(prop, "Node Tree", ""); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeGroup_update"); } static void def_geo_duplicate_elements(StructRNA *srna) diff --git a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc index b74b4e45199..7705cf13b20 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc @@ -1140,7 +1140,7 @@ static void node_declare(NodeDeclarationBuilder &b) b.add_output(N_("Geometry")); } -static void node_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) +static void node_layout(uiLayout *layout, bContext *C, PointerRNA *ptr) { const bNode *node = static_cast(ptr->data); const NodeGeometryDeleteGeometry &storage = node_storage(*node); @@ -1151,6 +1151,9 @@ static void node_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) if (ELEM(domain, ATTR_DOMAIN_POINT, ATTR_DOMAIN_EDGE, ATTR_DOMAIN_FACE)) { uiItemR(layout, ptr, "mode", 0, "", ICON_NONE); } + + uiItemR(layout, ptr, "node_tree", 0, "", ICON_NONE); + uiTemplateIDBrowse(layout, C, ptr, "node_tree", nullptr, nullptr, nullptr, UI_TEMPLATE_ID_FILTER_ALL, nullptr); } static void node_init(bNodeTree *UNUSED(tree), bNode *node)