[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24478] trunk/blender/source/blender: * Fixed nodetree animation by giving nodes unique names
Matt Ebb
matt at mke3.net
Wed Nov 11 10:11:21 CET 2009
Revision: 24478
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24478
Author: broken
Date: 2009-11-11 10:11:21 +0100 (Wed, 11 Nov 2009)
Log Message:
-----------
* Fixed nodetree animation by giving nodes unique names
Now the rna path to nodes happens via the node name, which is ensured to be unique via RNA.
As part of this, the node->username string has been removed, upon renaming the node itself it takes care of making sure it's unique (like bones, constraints, etc). There's currently no interactive rename tool, but you can do it via the datablocks editor.
- plus a few notifier tweaks, using the newer NC_NODE notifier to refresh graph editor etc.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_node.h
trunk/blender/source/blender/blenkernel/intern/node.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/editors/space_action/space_action.c
trunk/blender/source/blender/editors/space_graph/space_graph.c
trunk/blender/source/blender/editors/space_nla/space_nla.c
trunk/blender/source/blender/editors/space_node/node_draw.c
trunk/blender/source/blender/editors/space_node/node_edit.c
trunk/blender/source/blender/makesdna/DNA_node_types.h
trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
trunk/blender/source/blender/windowmanager/WM_types.h
Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h 2009-11-11 09:11:21 UTC (rev 24478)
@@ -162,6 +162,7 @@
void nodeAddToPreview(struct bNode *, float *, int, int);
void nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node);
+void nodeUniqueName(struct bNodeTree *ntree, struct bNode *node);
void nodeAddSockets(struct bNode *node, struct bNodeType *ntype);
struct bNode *nodeAddNodeType(struct bNodeTree *ntree, int type, struct bNodeTree *ngroup, struct ID *id);
void nodeRegisterType(struct ListBase *typelist, const struct bNodeType *ntype) ;
Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/blenkernel/intern/node.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -32,6 +32,7 @@
#endif
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "DNA_ID.h"
@@ -903,8 +904,12 @@
}
}
}
+/* Find the first available, non-duplicate name for a given node */
+void nodeUniqueName(bNodeTree *ntree, bNode *node)
+{
+ BLI_uniquename(&ntree->nodes, node, "Node", '.', offsetof(bNode, name), 32);
+}
-
bNode *nodeAddNodeType(bNodeTree *ntree, int type, bNodeTree *ngroup, ID *id)
{
bNode *node= NULL;
@@ -937,6 +942,9 @@
}
else
BLI_strncpy(node->name, ntype->name, NODE_MAXSTR);
+
+ nodeUniqueName(ntree, node);
+
node->type= ntype->type;
node->flag= NODE_SELECT|ntype->flag;
node->width= ntype->width;
@@ -989,6 +997,8 @@
bNodeSocket *sock, *oldsock;
*nnode= *node;
+ nodeUniqueName(ntree, nnode);
+
BLI_addtail(&ntree->nodes, nnode);
BLI_duplicatelist(&nnode->inputs, &node->inputs);
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -10037,6 +10037,20 @@
sce= sce->id.next;
}
}
+ {
+ /* ensure all nodes have unique names */
+ bNodeTree *ntree= main->nodetree.first;
+ while(ntree) {
+ bNode *node=ntree->nodes.first;
+
+ while(node) {
+ nodeUniqueName(ntree, node);
+ node= node->next;
+ }
+
+ ntree= ntree->id.next;
+ }
+ }
}
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
Modified: trunk/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/space_action.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/editors/space_action/space_action.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -341,6 +341,13 @@
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
Modified: trunk/blender/source/blender/editors/space_graph/space_graph.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/space_graph.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/editors/space_graph/space_graph.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -417,6 +417,13 @@
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
Modified: trunk/blender/source/blender/editors/space_nla/space_nla.c
===================================================================
--- trunk/blender/source/blender/editors/space_nla/space_nla.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/editors/space_nla/space_nla.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -432,6 +432,13 @@
break;
}
break;
+ case NC_NODE:
+ switch(wmn->action) {
+ case NA_EDITED:
+ ED_region_tag_redraw(ar);
+ break;
+ }
+ break;
default:
if(wmn->data==ND_KEYS)
ED_region_tag_redraw(ar);
Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -719,12 +719,14 @@
else
UI_ThemeColor(TH_TEXT);
- if(node->flag & NODE_MUTED)
- sprintf(showname, "[%s]", node->name);
- else if(node->username[0])
- sprintf(showname, "(%s) %s", node->username, node->name);
+ if(node->flag & NODE_CUSTOM_NAME)
+ BLI_strncpy(showname, node->name, 32);
else
- BLI_strncpy(showname, node->name, 128);
+ /* todo: auto name display for node types */
+ BLI_strncpy(showname, node->name, 32);
+
+ //if(node->flag & NODE_MUTED)
+ // sprintf(showname, "[%s]", showname);
uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(rct->ymax-NODE_DY),
(int)(iconofs - rct->xmin-18.0f), NODE_DY, NULL, 0, 0, 0, 0, "");
@@ -878,12 +880,15 @@
if(node->miniwidth>0.0f) {
- if(node->flag & NODE_MUTED)
- sprintf(showname, "[%s]", node->name);
- else if(node->username[0])
- sprintf(showname, "(%s)%s", node->username, node->name);
+
+ if(node->flag & NODE_CUSTOM_NAME)
+ BLI_strncpy(showname, node->name, 128);
else
+ /* todo: auto name display */
BLI_strncpy(showname, node->name, 128);
+
+ //if(node->flag & NODE_MUTED)
+ // sprintf(showname, "[%s]", showname);
uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(centy-10),
(int)(rct->xmax - rct->xmin-18.0f -12.0f), NODE_DY, NULL, 0, 0, 0, 0, "");
@@ -1021,12 +1026,8 @@
/* backdrop title */
UI_ThemeColor(TH_TEXT_HI);
- if(gnode->username[0]) {
- strcpy(showname,"(");
- strcat(showname, gnode->username);
- strcat(showname,") ");
- strcat(showname, ngroup->id.name+2);
- }
+ if (gnode->flag & NODE_CUSTOM_NAME)
+ strcat(showname, gnode->name);
else
strcpy(showname, ngroup->id.name+2);
Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -1251,6 +1251,8 @@
/* ******************** rename ******************* */
+
+/* should go through RNA */
void node_rename(SpaceNode *snode)
{
bNode *node, *rename_node;
@@ -1266,7 +1268,7 @@
if(found_node) {
rename_node= nodeGetActive(snode->edittree);
- node_rename_but((char *)rename_node->username);
+ node_rename_but((char *)rename_node->name);
// allqueue(REDRAWNODE, 1);
}
Modified: trunk/blender/source/blender/makesdna/DNA_node_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_node_types.h 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/makesdna/DNA_node_types.h 2009-11-11 09:11:21 UTC (rev 24478)
@@ -110,7 +110,6 @@
struct bNode *next, *prev, *new_node;
char name[32];
- char username[32]; /* custom name defined by user */
short type, flag;
short done, level; /* both for dependency and sorting */
short lasty, menunr; /* lasty: check preview render status, menunr: browse ID blocks */
@@ -152,6 +151,7 @@
#define NODE_TEST 256
/* composite: don't do node but pass on buffer(s) */
#define NODE_MUTED 512
+#define NODE_CUSTOM_NAME 1024
typedef struct bNodeLink {
struct bNodeLink *next, *prev;
Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2009-11-11 08:32:29 UTC (rev 24477)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2009-11-11 09:11:21 UTC (rev 24478)
@@ -36,91 +36,14 @@
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
+#include "BKE_animsys.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_image.h"
#include "BKE_texture.h"
-static EnumPropertyItem node_blend_type_items[] = {
- { 0, "MIX", 0, "Mix", ""},
- { 1, "ADD", 0, "Add", ""},
- { 3, "SUBTRACT", 0, "Subtract", ""},
- { 2, "MULTIPLY", 0, "Multiply", ""},
- { 4, "SCREEN", 0, "Screen", ""},
- { 9, "OVERLAY", 0, "Overlay", ""},
- { 5, "DIVIDE", 0, "Divide", ""},
- { 6, "DIFFERENCE", 0, "Difference", ""},
- { 7, "DARKEN", 0, "Darken", ""},
- { 8, "LIGHTEN", 0, "Lighten", ""},
- {10, "DODGE", 0, "Dodge", ""},
- {11, "BURN", 0, "Burn", ""},
- {15, "COLOR", 0, "Color", ""},
- {14, "VALUE", 0, "Value", ""},
- {13, "SATURATION", 0, "Saturation", ""},
- {12, "HUE", 0, "Hue", ""},
- {16, "SOFT_LIGHT", 0, "Soft Light", ""},
- {17, "LINEAR_LIGHT", 0, "Linear Light",""},
- {0, NULL, 0, NULL, NULL}};
+#include "WM_types.h"
-static EnumPropertyItem node_flip_items[] = {
- {0, "X", 0, "Flip X", ""},
- {1, "Y", 0, "Flip Y", ""},
- {2, "XY", 0, "Flip X & Y", ""},
- {0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem node_math_items[] = {
- { 0, "ADD", 0, "Add", ""},
- { 1, "SUBTRACT", 0, "Subtract", ""},
- { 2, "MULTIPLY", 0, "Multiply", ""},
- { 3, "DIVIDE", 0, "Divide", ""},
- { 4, "SINE", 0, "Sine", ""},
- { 5, "COSINE", 0, "Cosine", ""},
- { 6, "TANGENT", 0, "Tangent", ""},
- { 7, "ARCSINE", 0, "Arcsine", ""},
- { 8, "ARCCOSINE", 0, "Arccosine", ""},
- { 9, "ARCTANGENT", 0, "Arctangent", ""},
- {10, "POWER", 0, "Power", ""},
- {11, "LOGARITHM", 0, "Logarithm", ""},
- {12, "MINIMUM", 0, "Minimum", ""},
- {13, "MAXIMUM", 0, "Maximum", ""},
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list