[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34289] trunk/blender/source/blender/ editors/sculpt_paint/sculpt.c: Sculpt:

Nicholas Bishop nicholasbishop at gmail.com
Thu Jan 13 02:02:56 CET 2011


Revision: 34289
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34289
Author:   nicholasbishop
Date:     2011-01-13 01:02:55 +0000 (Thu, 13 Jan 2011)
Log Message:
-----------
Sculpt:

Small cleanup, de-duplicated the code for combining proxies

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2011-01-12 20:17:32 UTC (rev 34288)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2011-01-13 01:02:55 UTC (rev 34289)
@@ -2343,87 +2343,45 @@
 {
 	Brush *brush= paint_brush(&sd->paint);
 	PBVHNode** nodes;
-	int totnode;
-	int n;
+	int use_orco, totnode, n;
 
 	BLI_pbvh_gather_proxies(ss->pbvh, &nodes, &totnode);
 
-	switch (brush->sculpt_tool) {
-		case SCULPT_TOOL_GRAB:
-		case SCULPT_TOOL_ROTATE:
-		case SCULPT_TOOL_THUMB:
-			#pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP)
-			for (n= 0; n < totnode; n++) {
-				PBVHVertexIter vd;
-				PBVHProxyNode* proxies;
-				int proxy_count;
-				float (*origco)[3];
+	if(!ELEM(brush->sculpt_tool, SCULPT_TOOL_SMOOTH, SCULPT_TOOL_LAYER)) {
+		/* these brushes start from original coordinates */
+		use_orco = (ELEM3(brush->sculpt_tool, SCULPT_TOOL_GRAB,
+				  SCULPT_TOOL_ROTATE, SCULPT_TOOL_THUMB));
 
-				origco= sculpt_undo_push_node(ss, nodes[n])->co;
+		#pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP)
+		for (n= 0; n < totnode; n++) {
+			PBVHVertexIter vd;
+			PBVHProxyNode* proxies;
+			int proxy_count;
+			float (*orco)[3];
 
-				BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count);
+			if(use_orco)
+				orco= sculpt_undo_push_node(ss, nodes[n])->co;
 
-				BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
-					float val[3];
-					int p;
+			BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count);
 
-					copy_v3_v3(val, origco[vd.i]);
+			BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
+				float val[3];
+				int p;
 
-					for (p= 0; p < proxy_count; p++)
-						add_v3_v3(val, proxies[p].co[vd.i]);
-
-					sculpt_clip(sd, ss, vd.co, val);
-				}
-				BLI_pbvh_vertex_iter_end;
-
-				BLI_pbvh_node_free_proxies(nodes[n]);
-			}
-
-			break;
-
-		case SCULPT_TOOL_DRAW:
-		case SCULPT_TOOL_CLAY:
-		case SCULPT_TOOL_CLAY_TUBES:
-		case SCULPT_TOOL_CREASE:
-		case SCULPT_TOOL_BLOB:
-		case SCULPT_TOOL_FILL:
-		case SCULPT_TOOL_FLATTEN:
-		case SCULPT_TOOL_INFLATE:
-		case SCULPT_TOOL_NUDGE:
-		case SCULPT_TOOL_PINCH:
-		case SCULPT_TOOL_SCRAPE:
-		case SCULPT_TOOL_SNAKE_HOOK:
-			#pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP)
-			for (n= 0; n < totnode; n++) {
-				PBVHVertexIter vd;
-				PBVHProxyNode* proxies;
-				int proxy_count;
-
-				BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count);
-
-				BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
-					float val[3];
-					int p;
-
+				if(use_orco)
+					copy_v3_v3(val, orco[vd.i]);
+				else
 					copy_v3_v3(val, vd.co);
 
-					for (p= 0; p < proxy_count; p++)
-						add_v3_v3(val, proxies[p].co[vd.i]);
+				for (p= 0; p < proxy_count; p++)
+					add_v3_v3(val, proxies[p].co[vd.i]);
 
-					sculpt_clip(sd, ss, vd.co, val);
-				}
-				BLI_pbvh_vertex_iter_end;
-
-				BLI_pbvh_node_free_proxies(nodes[n]);
-
+				sculpt_clip(sd, ss, vd.co, val);
 			}
+			BLI_pbvh_vertex_iter_end;
 
-			break;
-
-		case SCULPT_TOOL_SMOOTH:
-		case SCULPT_TOOL_LAYER:
-		default:
-			break;
+			BLI_pbvh_node_free_proxies(nodes[n]);
+		}
 	}
 
 	if (nodes)




More information about the Bf-blender-cvs mailing list