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:
authorJacques Lucke <jacques@blender.org>2021-05-24 17:07:24 +0300
committerJacques Lucke <jacques@blender.org>2021-05-24 17:07:24 +0300
commita795d243cb3c6c552e20507d12b20339a41ff482 (patch)
tree397c1f012577fca8ecb44fdab229a06cf2be50f1
parent4c322f3fbadd01d792083ad546e74d0c30bce431 (diff)
reference group in attribute processor
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc2
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc2
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c12
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc14
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);