Total displacement levels should be set in multires_topology_changed
authorSergey Sharybin <sergey.vfx@gmail.com>
Sun, 30 Jan 2011 17:55:48 +0000 (17:55 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Sun, 30 Jan 2011 17:55:48 +0000 (17:55 +0000)
source/blender/blenkernel/BKE_multires.h
source/blender/blenkernel/intern/multires.c
source/blender/editors/mesh/editmesh.c

index f924905bfde692a72aa2660c2931ab9bba6c16a5..5cafd24c1fd50347353cb20770b8e55973e7a785 100644 (file)
@@ -80,7 +80,7 @@ int multires_mdisp_corners(struct MDisps *s);
 void multires_mdisp_smooth_bounds(struct MDisps *disps);
 
 /* update multires data after topology changing */
-void multires_topology_changed(struct Object *ob);
+void multires_topology_changed(struct Scene *scene, struct Object *ob);
 
 /**** interpolation stuff ****/
 void old_mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v);
index 0fb19685f25a39cf983e70b485c1b65d53fb990d..c67abc47e6f6f38d31078a41b05805ce59e97899 100644 (file)
@@ -1720,11 +1720,15 @@ void multiresModifier_prepare_join(Scene *scene, Object *ob, Object *to_ob)
 }
 
 /* update multires data after topology changing */
-void multires_topology_changed(Object *ob)
+void multires_topology_changed(Scene *scene, Object *ob)
 {
        Mesh *me= (Mesh*)ob->data;
        MDisps *mdisp= NULL, *cur= NULL;
        int i, grid= 0, corners;
+       MultiresModifierData *mmd= get_multires_modifier(scene, ob);
+
+       if(mmd)
+               multires_set_tot_mdisps(me, mmd->totlvl);
 
        CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface);
        mdisp= CustomData_get_layer(&me->fdata, CD_MDISPS);
index 581a678b5c4421748a814f1b5ce234ce9c216da5..d1efb60b6183bb365f5165090a259d73ab8143f8 100644 (file)
@@ -1311,7 +1311,7 @@ void load_editMesh(Scene *scene, Object *obedit)
        mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);
 
        /* topology could be changed, ensure mdisps are ok */
-       multires_topology_changed(obedit);
+       multires_topology_changed(scene, obedit);
 }
 
 void remake_editMesh(Scene *scene, Object *ob)