diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2006-12-20 10:04:40 +0300 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2006-12-20 10:04:40 +0300 |
commit | 3ed0c210d128c9fa7d614aad389bb08240777dd6 (patch) | |
tree | 358fc81fec56c6bceb96910a93d709a6444a321f /source/blender/src/multires.c | |
parent | 1852d1a410c23e5be7792ac810b2568c930c86a1 (diff) |
Fixed bug #5443, Multires: crash when changing the level of edges to draw
Diffstat (limited to 'source/blender/src/multires.c')
-rw-r--r-- | source/blender/src/multires.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/source/blender/src/multires.c b/source/blender/src/multires.c index 9ad142481a5..87b3b2b2a4b 100644 --- a/source/blender/src/multires.c +++ b/source/blender/src/multires.c @@ -1103,6 +1103,15 @@ void multires_level_to_mesh(Object *ob, Mesh *me) else me->mvert[i]= lvl->verts[i]; } + for(i=0; i<lvl->totedge; ++i) { + if(em) { + addedgelist(eves[lvl->edges[i].v[0]], eves[lvl->edges[i].v[1]], NULL); + } else { + me->medge[i].v1= lvl->edges[i].v[0]; + me->medge[i].v2= lvl->edges[i].v[1]; + me->medge[i].flag &= ~ME_HIDE; + } + } for(i=0; i<lvl->totface; ++i) { if(em) { EditVert *eve4= lvl->faces[i].v[3] ? eves[lvl->faces[i].v[3]] : NULL; @@ -1121,14 +1130,6 @@ void multires_level_to_mesh(Object *ob, Mesh *me) me->mface[i].mat_nr= lvl->faces[i].mat_nr; } } - for(i=0; i<lvl->totedge; ++i) { - if(em) { - } else { - me->medge[i].v1= lvl->edges[i].v[0]; - me->medge[i].v2= lvl->edges[i].v[1]; - me->medge[i].flag &= ~ME_HIDE; - } - } /* Vertex groups */ if(lvl==me->mr->levels.first && CustomData_has_layer(&me->mr->vdata, CD_MDEFORMVERT)) { @@ -1611,23 +1612,25 @@ void multires_calc_level_maps(MultiresLevel *lvl) void multires_edge_level_update(void *ob, void *me_v) { - Mesh *me= me_v; - MultiresLevel *cr_lvl= BLI_findlink(&me->mr->levels,me->mr->current-1); - MultiresLevel *edge_lvl= BLI_findlink(&me->mr->levels,me->mr->edgelvl-1); - const int threshold= edge_lvl->totedge * powf(2, me->mr->current - me->mr->edgelvl); - unsigned i; + if(!G.obedit) { + Mesh *me= me_v; + MultiresLevel *cr_lvl= BLI_findlink(&me->mr->levels,me->mr->current-1); + MultiresLevel *edge_lvl= BLI_findlink(&me->mr->levels,me->mr->edgelvl-1); + const int threshold= edge_lvl->totedge * powf(2, me->mr->current - me->mr->edgelvl); + unsigned i; - for(i=0; i<cr_lvl->totedge; ++i) { - const int ndx= me->pv ? me->pv->edge_map[i] : i; - if(ndx != -1) { /* -1= hidden edge */ - if(me->mr->edgelvl >= me->mr->current || i<threshold) - me->medge[ndx].flag= ME_EDGEDRAW; - else - me->medge[ndx].flag= 0; + for(i=0; i<cr_lvl->totedge; ++i) { + const int ndx= me->pv ? me->pv->edge_map[i] : i; + if(ndx != -1) { /* -1= hidden edge */ + if(me->mr->edgelvl >= me->mr->current || i<threshold) + me->medge[ndx].flag= ME_EDGEDRAW; + else + me->medge[ndx].flag= 0; + } } - } - allqueue(REDRAWVIEW3D, 0); + allqueue(REDRAWVIEW3D, 0); + } } int multires_modifier_warning() |