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
path: root/source
diff options
context:
space:
mode:
authorChris Want <cwant@ualberta.ca>2007-11-04 05:25:32 +0300
committerChris Want <cwant@ualberta.ca>2007-11-04 05:25:32 +0300
commit034138b597f206aa6cc0c03872597e09b0d84b1f (patch)
tree43245e74539516d0aae3e9fc73f7e6f43e0056d3 /source
parent5baf3bd490f4a9ed36ee7dd9fef6bd262f17f709 (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')
-rw-r--r--source/blender/src/editmesh_lib.c61
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;
}
}
}