forked from bartvdbraak/blender
Sculpt:
Small cleanup, de-duplicated the code for combining proxies
This commit is contained in:
parent
604d029ddf
commit
57ce3072d1
@ -2343,87 +2343,45 @@ static void sculpt_combine_proxies(Sculpt *sd, SculptSession *ss)
|
|||||||
{
|
{
|
||||||
Brush *brush= paint_brush(&sd->paint);
|
Brush *brush= paint_brush(&sd->paint);
|
||||||
PBVHNode** nodes;
|
PBVHNode** nodes;
|
||||||
int totnode;
|
int use_orco, totnode, n;
|
||||||
int n;
|
|
||||||
|
|
||||||
BLI_pbvh_gather_proxies(ss->pbvh, &nodes, &totnode);
|
BLI_pbvh_gather_proxies(ss->pbvh, &nodes, &totnode);
|
||||||
|
|
||||||
switch (brush->sculpt_tool) {
|
if(!ELEM(brush->sculpt_tool, SCULPT_TOOL_SMOOTH, SCULPT_TOOL_LAYER)) {
|
||||||
case SCULPT_TOOL_GRAB:
|
/* these brushes start from original coordinates */
|
||||||
case SCULPT_TOOL_ROTATE:
|
use_orco = (ELEM3(brush->sculpt_tool, SCULPT_TOOL_GRAB,
|
||||||
case SCULPT_TOOL_THUMB:
|
SCULPT_TOOL_ROTATE, 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;
|
#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) {
|
BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count);
|
||||||
float val[3];
|
|
||||||
int p;
|
|
||||||
|
|
||||||
copy_v3_v3(val, origco[vd.i]);
|
BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
|
||||||
|
float val[3];
|
||||||
for (p= 0; p < proxy_count; p++)
|
int 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);
|
copy_v3_v3(val, vd.co);
|
||||||
|
|
||||||
for (p= 0; p < proxy_count; p++)
|
for (p= 0; p < proxy_count; p++)
|
||||||
add_v3_v3(val, proxies[p].co[vd.i]);
|
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;
|
BLI_pbvh_node_free_proxies(nodes[n]);
|
||||||
|
}
|
||||||
case SCULPT_TOOL_SMOOTH:
|
|
||||||
case SCULPT_TOOL_LAYER:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nodes)
|
if (nodes)
|
||||||
|
Loading…
Reference in New Issue
Block a user