Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2011-01-13 04:02:55 +0300
committerNicholas Bishop <nicholasbishop@gmail.com>2011-01-13 04:02:55 +0300
commit57ce3072d191480ab8bdfcb1f4b841452819467a (patch)
treeeb6f3e216f13893a0743447590a4e5619ec495c8 /source/blender/editors/sculpt_paint
parent604d029ddf164e87eb453d83c59e65c2f16f8879 (diff)
Sculpt:
Small cleanup, de-duplicated the code for combining proxies
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c94
1 files changed, 26 insertions, 68 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index c0399fadb90..a14811face8 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2343,87 +2343,45 @@ static void sculpt_combine_proxies(Sculpt *sd, SculptSession *ss)
{
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];
-
- origco= sculpt_undo_push_node(ss, nodes[n])->co;
-
- BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count);
+ 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));
- BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
- float val[3];
- int p;
-
- copy_v3_v3(val, origco[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]);
- }
-
- break;
+ #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];
- 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;
+ if(use_orco)
+ orco= sculpt_undo_push_node(ss, nodes[n])->co;
- BLI_pbvh_node_get_proxies(nodes[n], &proxies, &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;
+ 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]);
-
- sculpt_clip(sd, ss, vd.co, val);
- }
- BLI_pbvh_vertex_iter_end;
-
- BLI_pbvh_node_free_proxies(nodes[n]);
+ 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;
- break;
-
- case SCULPT_TOOL_SMOOTH:
- case SCULPT_TOOL_LAYER:
- default:
- break;
+ BLI_pbvh_node_free_proxies(nodes[n]);
+ }
}
if (nodes)