diff options
author | Chris Want <cwant@ualberta.ca> | 2007-11-04 05:25:32 +0300 |
---|---|---|
committer | Chris Want <cwant@ualberta.ca> | 2007-11-04 05:25:32 +0300 |
commit | 034138b597f206aa6cc0c03872597e09b0d84b1f (patch) | |
tree | 43245e74539516d0aae3e9fc73f7e6f43e0056d3 /source/blender/src/editmesh_lib.c | |
parent | 5baf3bd490f4a9ed36ee7dd9fef6bd262f17f709 (diff) |
Bug fix to handle extruding with a mirror modifier, now that axes are
specified with a bitmask rather than only operating on a single axis.
This is a reworking of the fix done in blender 2.42 that was mentioned
in the sixth on item on this page:
http://www.blender.org/development/release-logs/blender-242/mesh-tools/
Diffstat (limited to 'source/blender/src/editmesh_lib.c')
-rw-r--r-- | source/blender/src/editmesh_lib.c | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/source/blender/src/editmesh_lib.c b/source/blender/src/editmesh_lib.c index c85efa609b1..14a522bdbff 100644 --- a/source/blender/src/editmesh_lib.c +++ b/source/blender/src/editmesh_lib.c @@ -1145,23 +1145,20 @@ static short extrudeflag_edge(short flag, float *nor) for (eed= em->edges.first; eed; eed= eed->next) { if(eed->f2 == 1) { - switch(mmd->axis){ - case 0: - if ( (fabs(eed->v1->co[0]) < mmd->tolerance) && - (fabs(eed->v2->co[0]) < mmd->tolerance) ) - ++eed->f2; - break; - case 1: - if ( (fabs(eed->v1->co[1]) < mmd->tolerance) && - (fabs(eed->v2->co[1]) < mmd->tolerance) ) - ++eed->f2; - break; - case 2: - if ( (fabs(eed->v1->co[2]) < mmd->tolerance) && - (fabs(eed->v2->co[2]) < mmd->tolerance) ) - ++eed->f2; - break; - } + if (mmd->flag & MOD_MIR_AXIS_X) + if ( (fabs(eed->v1->co[0]) < mmd->tolerance) && + (fabs(eed->v2->co[0]) < mmd->tolerance) ) + ++eed->f2; + + if (mmd->flag & MOD_MIR_AXIS_Y) + if ( (fabs(eed->v1->co[1]) < mmd->tolerance) && + (fabs(eed->v2->co[1]) < mmd->tolerance) ) + ++eed->f2; + + if (mmd->flag & MOD_MIR_AXIS_Z) + if ( (fabs(eed->v1->co[2]) < mmd->tolerance) && + (fabs(eed->v2->co[2]) < mmd->tolerance) ) + ++eed->f2; } } } @@ -1414,23 +1411,19 @@ short extrudeflag_vert(short flag, float *nor) for (eed= em->edges.first; eed; eed= eed->next) { if(eed->f2 == 2) { - switch(mmd->axis){ - case 0: - if ( (fabs(eed->v1->co[0]) < mmd->tolerance) && - (fabs(eed->v2->co[0]) < mmd->tolerance) ) - ++eed->f2; - break; - case 1: - if ( (fabs(eed->v1->co[1]) < mmd->tolerance) && - (fabs(eed->v2->co[1]) < mmd->tolerance) ) - ++eed->f2; - break; - case 2: - if ( (fabs(eed->v1->co[2]) < mmd->tolerance) && - (fabs(eed->v2->co[2]) < mmd->tolerance) ) - ++eed->f2; - break; - } + if (mmd->flag & MOD_MIR_AXIS_X) + if ( (fabs(eed->v1->co[0]) < mmd->tolerance) && + (fabs(eed->v2->co[0]) < mmd->tolerance) ) + ++eed->f2; + + if (mmd->flag & MOD_MIR_AXIS_Y) + if ( (fabs(eed->v1->co[1]) < mmd->tolerance) && + (fabs(eed->v2->co[1]) < mmd->tolerance) ) + ++eed->f2; + if (mmd->flag & MOD_MIR_AXIS_Z) + if ( (fabs(eed->v1->co[2]) < mmd->tolerance) && + (fabs(eed->v2->co[2]) < mmd->tolerance) ) + ++eed->f2; } } } |