[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36499] branches/particles-2010/source/ blender: do_versions for node socket default values.

Lukas Toenne lukas.toenne at googlemail.com
Thu May 5 15:29:17 CEST 2011


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) */




More information about the Bf-blender-cvs mailing list