Revision: 32497
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32497
Author: lukastoenne
Date: 2010-10-15 13:30:29 +0200 (Fri, 15 Oct 2010)
Log Message:
-----------
Removed the contexttype variable from bNodeSocket. This was intended for at
least partially checking matching contexts while building the node tree, but
that does not work. To make the artists life a little easier with this, a
better feedback and error reporting system should be devised instead, so bad
context combinations can be detected when executing the tree.
Modified Paths:
--------------
branches/particles-2010/source/blender/blenkernel/intern/node.c
branches/particles-2010/source/blender/blenloader/intern/readfile.c
branches/particles-2010/source/blender/blenloader/intern/writefile.c
branches/particles-2010/source/blender/makesdna/DNA_node_types.h
branches/particles-2010/source/blender/nodes/intern/simulation/node_tree_simulation.c
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_get_data.c
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_set_data.c
Modified: branches/particles-2010/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/particles-2010/source/blender/blenkernel/intern/node.c
2010-10-15 10:47:22 UTC (rev 32496)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -160,7 +160,6 @@
BLI_strncpy(sock->name, name, NODE_MAXSTR);
sock->limit = (is_input ? 1 : 0xFFF);
sock->type= type;
- sock->contexttype = NULL;
sock->intern = 1;
if (type == SOCK_ANY)
sock->flag |= SOCK_ADAPT_TYPE;
Modified: branches/particles-2010/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/readfile.c
2010-10-15 10:47:22 UTC (rev 32496)
+++ branches/particles-2010/source/blender/blenloader/intern/readfile.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -2180,23 +2180,11 @@
node->lasty= 0;
for(sock= node->inputs.first; sock; sock= sock->next) {
sock->link= newdataadr(fd, sock->link);
- sock->contexttype_name= newdataadr(fd,
(void*)sock->contexttype_name);
- sock->contexttype =
RNA_find_struct(sock->contexttype_name);
- if (sock->contexttype_name) {
- MEM_freeN((void*)sock->contexttype_name);
- sock->contexttype_name = NULL;
- }
sock->storage= newdataadr(fd, sock->storage);
sock->panel= newdataadr(fd, sock->panel);
}
for(sock= node->outputs.first; sock; sock= sock->next) {
sock->ns.data= NULL;
- sock->contexttype_name= newdataadr(fd,
(void*)sock->contexttype_name);
- sock->contexttype =
RNA_find_struct(sock->contexttype_name);
- if (sock->contexttype_name) {
- MEM_freeN((void*)sock->contexttype_name);
- sock->contexttype_name = NULL;
- }
sock->storage= newdataadr(fd, sock->storage);
sock->panel= newdataadr(fd, sock->panel);
}
Modified: branches/particles-2010/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/writefile.c
2010-10-15 10:47:22 UTC (rev 32496)
+++ branches/particles-2010/source/blender/blenloader/intern/writefile.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -494,21 +494,11 @@
for(node= ntree->nodes.first; node; node= node->next) {
for(sock= node->inputs.first; sock; sock= sock->next) {
writestruct(wd, DATA, "bNodeSocket", 1, sock);
- if (sock->contexttype) {
- /* save identifier string, to allow restoring
the StructRNA pointer */
- sock->contexttype_name=
RNA_struct_identifier(sock->contexttype);
- writedata(wd, DATA,
strlen(sock->contexttype_name)+1, (void*)sock->contexttype_name);
- }
if (sock->storage)
writestruct(wd, DATA,
node->typeinfo->socketstoragename, 1, sock->storage);
}
for(sock= node->outputs.first; sock; sock= sock->next) {
writestruct(wd, DATA, "bNodeSocket", 1, sock);
- if (sock->contexttype) {
- /* save identifier string, to allow restoring
the StructRNA pointer */
- sock->contexttype_name=
RNA_struct_identifier(sock->contexttype);
- writedata(wd, DATA,
strlen(sock->contexttype_name)+1, (void*)sock->contexttype_name);
- }
if (sock->storage)
writestruct(wd, DATA,
node->typeinfo->socketstoragename, 1, sock->storage);
}
Modified: branches/particles-2010/source/blender/makesdna/DNA_node_types.h
===================================================================
--- branches/particles-2010/source/blender/makesdna/DNA_node_types.h
2010-10-15 10:47:22 UTC (rev 32496)
+++ branches/particles-2010/source/blender/makesdna/DNA_node_types.h
2010-10-15 11:30:29 UTC (rev 32497)
@@ -102,9 +102,6 @@
/* internal data to retrieve relations and groups */
int own_index, to_index; /* group socket identifiers, to find
matching pairs after reading files */
- /* TODO contexttype is deprecated, remove */
- struct StructRNA *contexttype; /* data context type (simulation nodes)
*/
- const char *contexttype_name; /* temporary name
string, only used during save/load! */
int island; /* used during island
calculation, for finding shared socket groups */
int pad2;
Modified:
branches/particles-2010/source/blender/nodes/intern/simulation/node_tree_simulation.c
===================================================================
---
branches/particles-2010/source/blender/nodes/intern/simulation/node_tree_simulation.c
2010-10-15 10:47:22 UTC (rev 32496)
+++
branches/particles-2010/source/blender/nodes/intern/simulation/node_tree_simulation.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -280,93 +280,6 @@
}
}
-static void resolve_input_contexts(bNode *node)
-{
- bNodeSocket *sock;
-
- /* first get input contexts from links */
- for (sock=node->inputs.first; sock; sock=sock->next) {
- if ((sock->flag & SOCK_ADAPT_CONTEXT)!=0) {
- /* propagate context along link (fromnode is fully
resolved) */
- if (sock->link && sock->link->fromsock) {
- sock->contexttype =
sock->link->fromsock->contexttype;
- }
- else if (sock->intern) {
- /* socket uses default singleton data */
- sock->contexttype = NULL;
- }
- }
- }
-
- if (node->type == NODE_GROUP) {
- for (sock=node->inputs.first; sock; sock=sock->next)
- if (sock->tosock && (sock->flag &
SOCK_ADAPT_CONTEXT)!=0)
- sock->tosock->contexttype = sock->contexttype;
- }
-}
-
-static void resolve_output_contexts(bNode *node)
-{
- bNodeSocket *sock;
-
- if (node->type == NODE_GROUP) {
- /* internal nodes may be unresolvable and have reset the
context, so we copy it back to the inputs */
- for (sock=node->inputs.first; sock; sock=sock->next)
- if (sock->tosock && (sock->flag &
SOCK_ADAPT_CONTEXT)!=0)
- sock->contexttype = sock->tosock->contexttype;
- for (sock=node->outputs.first; sock; sock=sock->next)
- if (sock->tosock && (sock->flag &
SOCK_ADAPT_CONTEXT)!=0)
- sock->contexttype = sock->tosock->contexttype;
- }
- else {
- StructRNA *res= NULL;
- for (sock=node->inputs.first; sock; sock=sock->next) {
- if ((sock->flag & SOCK_ADAPT_CONTEXT)!=0) {
- if (res == NULL) {
- if (sock->contexttype != NULL)
- res = sock->contexttype;
- }
- else if (sock->contexttype != NULL) {
- if (RNA_struct_is_a(sock->contexttype,
res)) {
- res = sock->contexttype;
- } else {
- res = NULL;
- }
- }
- }
- }
-
- /* context unresolvable, reset all other inputs too */
- if (res == NULL) {
- for (sock=node->inputs.first; sock; sock=sock->next) {
- if ((sock->flag & SOCK_ADAPT_CONTEXT)!=0) {
- sock->contexttype = NULL;
- }
- }
- }
- for (sock=node->outputs.first; sock; sock=sock->next) {
- if ((sock->flag & SOCK_ADAPT_CONTEXT)!=0) {
- sock->contexttype = res;
- }
- }
- }
-}
-
-static void resolve_socket_contexts_recursive(bNodeTree *ntree)
-{
- bNode *node;
-
- /* nodes are assumed fully sorted, so context can be propagated from
left to right */
- for (node=ntree->nodes.first; node; node = node->next) {
- resolve_input_contexts(node);
-
- if (node->type == NODE_GROUP && node->id)
- resolve_socket_contexts_recursive((bNodeTree*)node->id);
-
- resolve_output_contexts(node);
- }
-}
-
#if 0
static void ntree_clear_tag_recursive(bNodeTree *ntree)
{
@@ -1276,12 +1189,11 @@
ntreeSolveNodeOrder(ntree);
- /* Note: The resolve functions access lower-level trees.
+ /* Note: The resolve function accesses lower-level trees.
* They have to be recalculated for each tree up in the hierarchy,
* because the result on higher levels may differ from local level
result.
*/
resolve_socket_types(ntree);
- resolve_socket_contexts_recursive(ntree);
ntreeValidateLinks(ntree);
Modified:
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_get_data.c
===================================================================
---
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_get_data.c
2010-10-15 10:47:22 UTC (rev 32496)
+++
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_get_data.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -58,30 +58,20 @@
if (type == data->type)
return;
- /* TODO check type validity */
- data->type = type;
-
- /* check existing property sockets for compatibility and remove if
necessary */
- /* TODO this is just a quick and simple way for now: remove all
property sockets that do not match exactly */
- sock=node->outputs.first;
- /* first socket is data path, do not remove! */
- sock = sock->next;
- while (sock) {
- next = sock->next;
- if (RNA_struct_is_a(type, sock->contexttype))
- sock->contexttype = type;
- else
+ if (!RNA_struct_is_a(type, data->type)) {
+ /* remove property sockets */
+ sock=node->outputs.first;
+ /* first socket is data path, do not remove! */
+ sock = sock->next;
+ while (sock) {
+ next = sock->next;
nodeRemoveOutputSocket(ntree, node, sock);
- sock = next;
+ sock = next;
+ }
}
- /* now set the context type to all remaining property sockets */
- sock=node->outputs.first;
- sock = sock->next;
- while (sock) {
- sock->contexttype = type;
- sock = sock->next;
- }
+ /* TODO check type validity */
+ data->type = type;
}
int simnode_getdata_property_valid(bNode *node, PropertyRNA *prop)
@@ -101,7 +91,6 @@
void simnode_getdata_add_rna_socket(bNode *node, PropertyRNA *prop)
{
if (simnode_getdata_property_valid(node, prop)) {
- NodeRNAData *stor= (NodeRNAData*)node->storage;
bNodeSocket *sock;
const char *name= RNA_property_ui_name(prop);
int type;
@@ -113,7 +102,6 @@
sim_rna_socket_set_defaults(prop, sock);
/* disable context adaptation and set the context type */
sock->flag &= ~SOCK_ADAPT_CONTEXT;
- sock->contexttype = stor->type;
/* associate with the property */
((NodeSocketProperty*)sock->storage)->prop = prop;
}
Modified:
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_set_data.c
===================================================================
---
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_set_data.c
2010-10-15 10:47:22 UTC (rev 32496)
+++
branches/particles-2010/source/blender/nodes/intern/simulation/nodes/SIM_set_data.c
2010-10-15 11:30:29 UTC (rev 32497)
@@ -63,27 +63,17 @@
/* TODO check type validity */
data->type = type;
- /* check existing property sockets for compatibility and remove if
necessary */
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs