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>2006-12-20 10:04:40 +0300
committerNicholas Bishop <nicholasbishop@gmail.com>2006-12-20 10:04:40 +0300
commit3ed0c210d128c9fa7d614aad389bb08240777dd6 (patch)
tree358fc81fec56c6bceb96910a93d709a6444a321f /source/blender/src/multires.c
parent1852d1a410c23e5be7792ac810b2568c930c86a1 (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.c47
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()