[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36334] branches/particles-2010/source/ blender/nodes/intern/MOD_nodes: Added back the MOD_nodes directory, this was messed up by git+svn conflicts.

Lukas Toenne lukas.toenne at googlemail.com
Tue Apr 26 12:00:12 CEST 2011


Revision: 36334
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36334
Author:   lukastoenne
Date:     2011-04-26 10:00:11 +0000 (Tue, 26 Apr 2011)
Log Message:
-----------
Added back the MOD_nodes directory, this was messed up by git+svn conflicts.

Modified Paths:
--------------
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_common.c
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_join.c
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_mesh.c
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_transform.c

Added Paths:
-----------
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_morph.c
    branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_vertexgroup.c

Modified: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_common.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_common.c	2011-04-26 09:27:43 UTC (rev 36333)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_common.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -105,7 +105,7 @@
 	
 	node->id = (ID*)ntemp->ngroup;
 	
-	sock = nodeAddSocket(ntree, node, SOCK_IN, "Iterations", SOCK_INT, PROP_UNSIGNED);
+	sock = nodeAddInputInt(ntree, node, "Iterations", PROP_UNSIGNED, 1, 0, 0);
 	sock->flag |= SOCK_STATIC;
 	
 	/* NB: group socket input/output roles are inverted internally!
@@ -114,9 +114,9 @@
 	if (ntemp->ngroup) {
 		bNodeSocket *gsock;
 		for (gsock=ntemp->ngroup->inputs.first; gsock; gsock=gsock->next)
-			group_add_extern_socket(&node->inputs, SOCK_IN, gsock);
+			group_add_extern_socket(ntree, &node->inputs, SOCK_IN, gsock);
 		for (gsock=ntemp->ngroup->outputs.first; gsock; gsock=gsock->next)
-			group_add_extern_socket(&node->outputs, SOCK_OUT, gsock);
+			group_add_extern_socket(ntree, &node->outputs, SOCK_OUT, gsock);
 	}
 }
 

Modified: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_join.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_join.c	2011-04-26 09:27:43 UTC (rev 36333)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_join.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -30,10 +30,10 @@
 
 static void init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp))
 {
-	nodeAddSocket(ntree, node, SOCK_IN, "A", SOCK_MESH, PROP_NONE);
-	nodeAddSocket(ntree, node, SOCK_IN, "B", SOCK_MESH, PROP_NONE);
+	nodeAddInputMesh(ntree, node, "A");
+	nodeAddInputMesh(ntree, node, "B");
 	
-	nodeAddSocket(ntree, node, SOCK_OUT, "Mesh", SOCK_MESH, PROP_NONE);
+	nodeAddOutputMesh(ntree, node, "Mesh");
 }
 
 static void exec(ModNodeContext *UNUSED(ctx), void *UNUSED(nodedata), bNodeDataReader *in, bNodeDataSource *out)

Modified: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_mesh.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_mesh.c	2011-04-26 09:27:43 UTC (rev 36333)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_mesh.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -32,7 +32,7 @@
 
 static void init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp))
 {
-	nodeAddSocket(ntree, node, SOCK_OUT, "Mesh", SOCK_MESH, PROP_NONE);
+	nodeAddOutputMesh(ntree, node, "Mesh");
 }
 
 typedef struct ExecData {

Added: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_morph.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_morph.c	                        (rev 0)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_morph.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -0,0 +1,105 @@
+/**
+* ***** BEGIN GPL LICENSE BLOCK *****
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version. 
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+* 
+* The Original Code is Copyright (C) 2006 Blender Foundation.
+* All rights reserved.
+* 
+* The Original Code is: all of this file.
+* 
+* Contributor(s): none yet.
+* 
+* ***** END GPL LICENSE BLOCK *****
+
+*/
+
+#include "DNA_meshdata_types.h"
+
+#include "BLI_math.h"
+
+#include "BKE_DerivedMesh.h"
+#include "BKE_cdderivedmesh.h"
+
+#include "../MOD_util.h"
+#include "node_socket.h"
+
+static void init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp))
+{
+	nodeAddInputMesh(ntree, node, "A");
+	nodeAddInputMesh(ntree, node, "B");
+	nodeAddInputFloat(ntree, node, "Factor", PROP_FACTOR, 0.5f, 0, 0);
+	
+	nodeAddOutputMesh(ntree, node, "Mesh");
+}
+
+static void exec(ModNodeContext *UNUSED(ctx), void *UNUSED(nodedata), bNodeDataReader *in, bNodeDataSource *out)
+{
+	int totv_a=0;
+	int totv_b=0;
+	DerivedMesh *dm=NULL, *dm_a=NULL, *dm_b=NULL;
+	MVert *srcv_a, *srcv_b, *dstv;
+	int i;
+	int numFactor = nodeInputSizeValue(&in[2]);
+	
+	nodeSourceInitMesh(&out[0]);
+	
+	dm_a = nodeInputReadMesh(&in[0]);
+	dm_b = nodeInputReadMesh(&in[1]);
+	if (dm_a) {
+		totv_a = dm_a->getNumVerts(dm_a);
+	}
+	else
+		return;
+	if (dm_b) {
+		totv_b = dm_b->getNumVerts(dm_b);
+	}
+	else
+		return;
+	
+	if (totv_a != totv_b)
+		return;
+	
+	dm = CDDM_copy(dm_a);
+	
+	dstv = dm->getVertArray(dm);
+	srcv_a = dm_a->getVertArray(dm_a);
+	srcv_b = dm_b->getVertArray(dm_b);
+	if (numFactor > 1) {
+		for (i=0; i < totv_a; ++i, ++srcv_a, ++srcv_b, ++dstv) {
+			interp_v3_v3v3(dstv->co, srcv_a->co, srcv_b->co, nodeInputReadValue(&in[2], MIN2(i, numFactor)));
+		}
+	}
+	else {
+		float factor = nodeInputReadValue(&in[2], 0);
+		for (i=0; i < totv_a; ++i, ++srcv_a, ++srcv_b, ++dstv) {
+			interp_v3_v3v3(dstv->co, srcv_a->co, srcv_b->co, factor);
+		}
+	}
+	
+	nodeOutputWriteMesh(&out[0], 0, dm);
+}
+
+void register_node_type_mod_morph(ListBase *typelist)
+{
+	static ModNodeType modntype;
+	
+	mod_node_type_base(&modntype, MOD_NODE_MORPH, "Morph", NODE_CLASS_COMBINE, 0);
+	node_type_init(&modntype.ntype, init);
+	
+	modntype.modexecfunc = exec;
+	
+	nodeRegisterType(typelist, &modntype.ntype);
+}

Modified: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_transform.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_transform.c	2011-04-26 09:27:43 UTC (rev 36333)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_transform.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -32,13 +32,13 @@
 
 static void init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp))
 {
-	nodeAddSocket(ntree, node, SOCK_IN, "Mesh", SOCK_MESH, PROP_NONE);
-	nodeAddSocket(ntree, node, SOCK_IN, "Factor", SOCK_FLOAT, PROP_FACTOR);
-	nodeAddSocket(ntree, node, SOCK_IN, "Translate", SOCK_VECTOR, PROP_TRANSLATION);
-	nodeAddSocket(ntree, node, SOCK_IN, "Rotate", SOCK_VECTOR, PROP_EULER);
-	nodeAddSocket(ntree, node, SOCK_IN, "Scale", SOCK_VECTOR, PROP_XYZ);
+	nodeAddInputMesh(ntree, node, "Mesh");
+	nodeAddInputFloat(ntree, node, "Factor", PROP_FACTOR, 1.0f, 0, 0);
+	nodeAddInputVector(ntree, node, "Translate", PROP_TRANSLATION, 0.0f, 0.0f, 0.0f, 0, 0);
+	nodeAddInputVector(ntree, node, "Rotate", PROP_EULER, 0.0f, 0.0f, 0.0f, 0, 0);
+	nodeAddInputVector(ntree, node, "Scale", PROP_XYZ, 1.0f, 1.0f, 1.0f, 0, 0);
 	
-	nodeAddSocket(ntree, node, SOCK_OUT, "Mesh", SOCK_MESH, PROP_NONE);
+	nodeAddOutputMesh(ntree, node, "Mesh");
 }
 
 static void exec(ModNodeContext *UNUSED(ctx), void *UNUSED(nodedata), bNodeDataReader *in, bNodeDataSource *out)

Added: branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_vertexgroup.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_vertexgroup.c	                        (rev 0)
+++ branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_vertexgroup.c	2011-04-26 10:00:11 UTC (rev 36334)
@@ -0,0 +1,111 @@
+/**
+* ***** BEGIN GPL LICENSE BLOCK *****
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version. 
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+* 
+* The Original Code is Copyright (C) 2006 Blender Foundation.
+* All rights reserved.
+* 
+* The Original Code is: all of this file.
+* 
+* Contributor(s): none yet.
+* 
+* ***** END GPL LICENSE BLOCK *****
+
+*/
+
+#include "DNA_node_types.h"
+
+#include "BKE_node.h"
+#include "BKE_deform.h"
+
+#include "node_socket.h"
+#include "MOD_exec.h"
+#include "MOD_util.h"
+
+static void init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp))
+{
+	node->storage = MEM_callocN(sizeof(ModNodeVertexGroup), "ModNodeVertexGroup");
+	
+	nodeAddInputMesh(ntree, node, "Mesh");
+	
+	nodeAddOutputFloat(ntree, node, "Weight");
+}
+
+static void initexec(bNodeExec *nodeexec)
+{
+	nodeexec->data = MEM_dupallocN(nodeexec->node->storage);
+}
+
+static void freeexec(bNodeExec *nodeexec)
+{
+	MEM_freeN(nodeexec->data);
+}
+
+static void exec(ModNodeContext *ctx, void *nodedata, bNodeDataReader *in, bNodeDataSource *out)
+{
+	ModNodeVertexGroup *data= (ModNodeVertexGroup*)nodedata;
+	DerivedMesh *dm= nodeInputReadMesh(&in[0]);
+	int defgroup_index;
+	MDeformVert *dvert = NULL;
+	int v, numVert, g;
+	float weight;
+	
+	defgroup_index = defgroup_name_index(ctx->ob, data->defgroup_name);
+	
+	if (!dm || defgroup_index < 0) {
+		nodeSourceInitValue(&out[0], 1);
+		nodeOutputWriteValue(&out[0], 0, 0.0f);
+		return;
+	}
+	
+	dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
+	numVert = dm->getNumVerts(dm);
+	
+	if (!dvert || numVert==0) {
+		nodeSourceInitValue(&out[0], 1);
+		nodeOutputWriteValue(&out[0], 0, 0.0f);
+		return;
+	}
+	
+	nodeSourceInitValue(&out[0], numVert);
+	
+	for (v=0; v < numVert; ++v) {
+		weight = 0.0f;
+		for(g=0; g < dvert[v].totweight; ++g) {
+			if(dvert[v].dw[g].def_nr == defgroup_index) {
+				weight = dvert[v].dw[g].weight;
+				break;
+			}
+		}
+		
+		nodeOutputWriteValue(&out[0], v, weight);
+	}
+}
+

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list