Revision: 36499
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36499
Author:   lukastoenne
Date:     2011-05-05 13:29:16 +0000 (Thu, 05 May 2011)
Log Message:
-----------
do_versions for node socket default values. These are now stored in a custom 
struct for each type and need to be converted from the bNodeStack data.

Modified Paths:
--------------
    branches/particles-2010/source/blender/blenloader/CMakeLists.txt
    branches/particles-2010/source/blender/blenloader/intern/readfile.c
    branches/particles-2010/source/blender/makesdna/DNA_node_types.h

Modified: branches/particles-2010/source/blender/blenloader/CMakeLists.txt
===================================================================
--- branches/particles-2010/source/blender/blenloader/CMakeLists.txt    
2011-05-05 10:36:43 UTC (rev 36498)
+++ branches/particles-2010/source/blender/blenloader/CMakeLists.txt    
2011-05-05 13:29:16 UTC (rev 36499)
@@ -31,6 +31,7 @@
        ../makesdna
        ../readblenfile
        ../makesrna
+       ../nodes
        ../render/extern/include
        ../../../intern/guardedalloc
        ${ZLIB_INCLUDE_DIRS}

Modified: branches/particles-2010/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/readfile.c 
2011-05-05 10:36:43 UTC (rev 36498)
+++ branches/particles-2010/source/blender/blenloader/intern/readfile.c 
2011-05-05 13:29:16 UTC (rev 36499)
@@ -142,6 +142,8 @@
 #include "RNA_access.h"
 #include "RNA_types.h"
 
+#include "intern/node_socket.h"
+
 #include "readfile.h"
 
 #include "PIL_time.h"
@@ -6887,6 +6889,50 @@
                do_version_bone_roll_256(child);
 }
 
+static void do_versions_socket_default_value(bNodeSocket *sock)
+{
+       bNodeSocketValueFloat *valfloat;
+       bNodeSocketValueVector *valvector;
+       bNodeSocketValueRGBA *valrgba;
+       
+       switch (sock->type) {
+       case SOCK_VALUE:
+               valfloat = sock->default_value = 
MEM_callocN(sizeof(bNodeSocketValueFloat), "default socket value");
+               valfloat->value = sock->ns.vec[0];
+               valfloat->min = sock->ns.min;
+               valfloat->max = sock->ns.max;
+               valfloat->subtype = PROP_NONE;
+               break;
+       case SOCK_VECTOR:
+               valvector = sock->default_value = 
MEM_callocN(sizeof(bNodeSocketValueVector), "default socket value");
+               copy_v3_v3(valvector->value, sock->ns.vec);
+               valvector->min = sock->ns.min;
+               valvector->max = sock->ns.max;
+               valvector->subtype = PROP_NONE;
+               break;
+       case SOCK_RGBA:
+               valrgba = sock->default_value = 
MEM_callocN(sizeof(bNodeSocketValueRGBA), "default socket value");
+               copy_v4_v4(valrgba->value, sock->ns.vec);
+               break;
+       }
+}
+
+static void do_versions_nodetree_default_value(bNodeTree *ntree)
+{
+       bNode *node;
+       bNodeSocket *sock;
+       for (node=ntree->nodes.first; node; node=node->next) {
+               for (sock=node->inputs.first; sock; sock=sock->next)
+                       do_versions_socket_default_value(sock);
+               for (sock=node->outputs.first; sock; sock=sock->next)
+                       do_versions_socket_default_value(sock);
+       }
+       for (sock=ntree->inputs.first; sock; sock=sock->next)
+               do_versions_socket_default_value(sock);
+       for (sock=ntree->outputs.first; sock; sock=sock->next)
+               do_versions_socket_default_value(sock);
+}
+
 static void do_versions(FileData *fd, Library *lib, Main *main)
 {
        /* WATCH IT!!!: pointers from libdata have not been converted */
@@ -11688,6 +11734,25 @@
                }
        }
        
+       {
+               /* Convert default socket values from bNodeStack */
+               Scene *sce;
+               Material *mat;
+               Tex *tex;
+               bNodeTree *ntree;
+               for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next)
+                       do_versions_nodetree_default_value(ntree);
+               for (sce=main->scene.first; sce; sce=sce->id.next)
+                       if (sce->nodetree)
+                               
do_versions_nodetree_default_value(sce->nodetree);
+               for (mat=main->mat.first; mat; mat=mat->id.next)
+                       if (mat->nodetree)
+                               
do_versions_nodetree_default_value(mat->nodetree);
+               for (tex=main->tex.first; tex; tex=tex->id.next)
+                       if (tex->nodetree)
+                               
do_versions_nodetree_default_value(tex->nodetree);
+       }
+       
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! 
*/
        /* WATCH IT 2!: Userdef struct init has to be in 
editors/interface/resources.c! */
 

Modified: branches/particles-2010/source/blender/makesdna/DNA_node_types.h
===================================================================
--- branches/particles-2010/source/blender/makesdna/DNA_node_types.h    
2011-05-05 10:36:43 UTC (rev 36498)
+++ branches/particles-2010/source/blender/makesdna/DNA_node_types.h    
2011-05-05 13:29:16 UTC (rev 36499)
@@ -99,8 +99,6 @@
        float locx, locy;
        
        void *default_value;            /* default input value used for 
unlinked sockets */
-       /* XXX don't remove, will be needed for do_versions later */
-//     bNodeStack ns;                          /* DEPRECATED custom data for 
inputs, only UI writes in this */
        
        /* execution data */
        short stack_index;                      /* local stack index */
@@ -114,6 +112,9 @@
        struct bNodeSocket *groupsock;
        
        struct bNodeLink *link;         /* a link pointer, set in 
nodeSolveOrder() */
+
+       /* DEPRECATED only needed for do_versions */
+       bNodeStack ns;                          /* custom data for inputs, only 
UI writes in this */
 } bNodeSocket;
 
 /* socket side (input/output) */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to