From 7793e8c884ceb10610c7061def9a933dbea0042c Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 21 Oct 2020 12:13:13 +0200 Subject: Modifiers: add node_tree to NodesModifierData --- source/blender/makesdna/DNA_modifier_types.h | 1 + source/blender/makesrna/intern/rna_modifier.c | 15 +++++++++++++++ source/blender/modifiers/intern/MOD_nodes.cc | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index f1d017fe173..7e3c2deb6be 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -2219,6 +2219,7 @@ enum { typedef struct NodesModifierData { ModifierData modifier; + struct bNodeTree *node_tree; } NodesModifierData; typedef struct MeshToVolumeModifierData { diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 9a4898f31db..e3be5c7c7b5 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1597,6 +1597,14 @@ static int rna_MeshSequenceCacheModifier_read_velocity_get(PointerRNA *ptr) # endif } +static bool rna_NodesModifier_node_tree_poll(PointerRNA *ptr, PointerRNA value) +{ + NodesModifierData *nmd = ptr->data; + bNodeTree *ntree = value.data; + UNUSED_VARS(nmd, ntree); + return true; +} + #else /* NOTE: *MUST* return subdivision_type property. */ @@ -6918,6 +6926,7 @@ static void rna_def_modifier_weightednormal(BlenderRNA *brna) static void rna_def_modifier_nodes(BlenderRNA *brna) { StructRNA *srna; + PropertyRNA *prop; srna = RNA_def_struct(brna, "NodesModifier", "Modifier"); RNA_def_struct_ui_text(srna, "Nodes Modifier", ""); @@ -6926,6 +6935,12 @@ static void rna_def_modifier_nodes(BlenderRNA *brna) RNA_define_lib_overridable(true); + prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE); + RNA_def_property_ui_text(prop, "Node Tree", "Node tree that controls what this modifier does"); + RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_NodesModifier_node_tree_poll"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); + RNA_define_lib_overridable(false); } # endif diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index 449bdde9e4c..1231bb9eaca 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -117,7 +117,7 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel) uiLayoutSetPropSep(layout, true); uiLayoutSetPropDecorate(layout, false); - uiItemL(layout, "This modifier does nothing currently", ICON_INFO); + uiItemR(layout, ptr, "node_tree", 0, NULL, ICON_MESH_DATA); modifier_panel_end(layout, ptr); } -- cgit v1.2.3