diff options
author | Jacques Lucke <jacques@blender.org> | 2021-05-24 17:07:24 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-05-24 17:07:24 +0300 |
commit | a795d243cb3c6c552e20507d12b20339a41ff482 (patch) | |
tree | 397c1f012577fca8ecb44fdab229a06cf2be50f1 | |
parent | 4c322f3fbadd01d792083ad546e74d0c30bce431 (diff) |
reference group in attribute processor
4 files changed, 23 insertions, 7 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index 77661b4870a..875b62ee972 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -1736,7 +1736,7 @@ void DepsgraphNodeBuilder::build_nodetree(bNodeTree *ntree) else if (id_type == ID_MC) { build_movieclip((MovieClip *)id); } - else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP)) { + else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP, GEO_NODE_ATTRIBUTE_PROCESSOR)) { bNodeTree *group_ntree = (bNodeTree *)id; build_nodetree(group_ntree); } diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 8a02228146a..81a12ee2874 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -2490,7 +2490,7 @@ void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree) OperationKey clip_key(id, NodeType::PARAMETERS, OperationCode::MOVIECLIP_EVAL); add_relation(clip_key, shading_key, "Clip -> Node"); } - else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP)) { + else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP, GEO_NODE_ATTRIBUTE_PROCESSOR)) { bNodeTree *group_ntree = (bNodeTree *)id; build_nodetree(group_ntree); ComponentKey group_shading_key(&group_ntree->id, NodeType::SHADING); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 56197a32a0e..4ac27f2c6ce 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -9871,8 +9871,18 @@ static void def_geo_input_material(StructRNA *srna) RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); } -static void def_geo_attribute_processor(StructRNA *UNUSED(srna)) +static void def_geo_attribute_processor(StructRNA *srna) { + PropertyRNA *prop; + + /* TODO: Only allow groups of correct type. */ + prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "id"); + RNA_def_property_struct_type(prop, "NodeTree"); + 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"); } /* -------------------------------------------------------------------------- */ diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc index 2620c663752..5422552fa7a 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc @@ -28,10 +28,10 @@ #include "node_geometry_util.hh" -static void geo_node_attribute_processor_layout(uiLayout *UNUSED(layout), - bContext *UNUSED(C), - PointerRNA *UNUSED(ptr)) +static void geo_node_attribute_processor_layout(uiLayout *layout, bContext *C, PointerRNA *ptr) { + uiTemplateIDBrowse( + layout, C, ptr, "node_tree", nullptr, nullptr, nullptr, UI_TEMPLATE_ID_FILTER_ALL, nullptr); } static void geo_node_attribute_processor_init(bNodeTree *UNUSED(ntree), bNode *node) @@ -44,6 +44,11 @@ static void geo_node_attribute_processor_init(bNodeTree *UNUSED(ntree), bNode *n namespace blender::nodes { +static void geo_node_attribute_processor_group_update(bNodeTree *UNUSED(ntree), + bNode *UNUSED(node)) +{ +} + static void geo_node_attribute_processor_exec(GeoNodeExecParams params) { GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry"); @@ -61,12 +66,13 @@ void register_node_type_geo_attribute_processor() static bNodeType ntype; geo_node_type_base( - &ntype, GEO_NODE_ATTRIBUTE_PROCESSOR, "Attribute Processor", NODE_CLASS_ATTRIBUTE, 0); + &ntype, GEO_NODE_ATTRIBUTE_PROCESSOR, "Attribute Processor", NODE_CLASS_GROUP, 0); node_type_init(&ntype, geo_node_attribute_processor_init); node_type_storage(&ntype, "NodeGeometryAttributeProcessor", node_free_standard_storage, node_copy_standard_storage); + node_type_group_update(&ntype, blender::nodes::geo_node_attribute_processor_group_update); ntype.geometry_node_execute = blender::nodes::geo_node_attribute_processor_exec; ntype.draw_buttons = geo_node_attribute_processor_layout; nodeRegisterType(&ntype); |