diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-06-11 22:43:48 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-06-11 22:43:48 +0400 |
commit | c945e03c7578a9cb044ceeb8f7f1e3b5c0e13e01 (patch) | |
tree | b804c816a823b290a3343c95a7413f3fb66b89af /source/blender/makesrna/intern/rna_nodetree.c | |
parent | e376cbedaff869121d979db2730cfd28ea4a75a7 (diff) |
rna read/write access to ...
node_tree.nodes.active
Diffstat (limited to 'source/blender/makesrna/intern/rna_nodetree.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_nodetree.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 01bf3971439..5ffdfe6d71d 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -634,6 +634,22 @@ static EnumPropertyItem *rna_Node_channel_itemf(bContext *UNUSED(C), PointerRNA return item; } +static PointerRNA rna_NodeTree_active_node_get(PointerRNA *ptr) +{ + bNodeTree *ntree = (bNodeTree *)ptr->data; + bNode *node = nodeGetActive(ntree); + return rna_pointer_inherit_refine(ptr, &RNA_Node, node); +} + +static void rna_NodeTree_active_node_set(PointerRNA *ptr, PointerRNA value) +{ + bNodeTree *ntree = (bNodeTree *)ptr->data; + if (value.data) + nodeSetActive(ntree, (bNode *)value.data); + else + nodeClearActive(ntree); +} + static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *C, ReportList *reports, int type, bNodeTree *group) { @@ -3632,6 +3648,19 @@ static void rna_def_nodetree_link_api(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_ui_description(func, "remove all node links from the node tree"); } +/* shared between all note tree types*/ +static void rna_def_nodetree_active_api(StructRNA *srna, PropertyRNA *cprop) +{ + PropertyRNA *prop; + + prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Node"); + RNA_def_property_pointer_funcs(prop, "rna_NodeTree_active_node_get", "rna_NodeTree_active_node_set", NULL, NULL); + RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_UNLINK); + RNA_def_property_ui_text(prop, "Active Node", "Active node in this tree"); + RNA_def_property_update(prop, NC_SCENE | ND_OB_ACTIVE, NULL); +} + static void rna_def_composite_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; @@ -3661,6 +3690,8 @@ static void rna_def_composite_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) func = RNA_def_function(srna, "clear", "rna_NodeTree_node_clear"); RNA_def_function_ui_description(func, "Remove all nodes from this node tree"); + + rna_def_nodetree_active_api(srna, cprop); } static void rna_def_shader_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) @@ -3692,6 +3723,8 @@ static void rna_def_shader_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) func = RNA_def_function(srna, "clear", "rna_NodeTree_node_clear"); RNA_def_function_ui_description(func, "Remove all nodes from this node tree"); + + rna_def_nodetree_active_api(srna, cprop); } static void rna_def_texture_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) @@ -3723,6 +3756,8 @@ static void rna_def_texture_nodetree_api(BlenderRNA *brna, PropertyRNA *cprop) func = RNA_def_function(srna, "clear", "rna_NodeTree_node_clear"); RNA_def_function_ui_description(func, "Remove all nodes from this node tree"); + + rna_def_nodetree_active_api(srna, cprop); } static void rna_def_node_socket(BlenderRNA *brna) |