- added editmhes_get_derived_base, used when a mesh with multiple users

is in editmode. current bevahaior is to display the object that is
   actually in editmode with its modifiers, and all other objects that
   share the mesh using just the base editmesh data. this is not 100%
   consistent but no architecture at the moment to display all objects
   that have mesh in editmode with each individual modifier stack.
This commit is contained in:
Daniel Dunbar
2005-08-06 20:44:59 +00:00
parent 3753605e94
commit 80dcdc9508
3 changed files with 15 additions and 1 deletions

View File

@@ -184,6 +184,7 @@ DerivedMesh *mesh_create_derived_render(struct Object *ob);
DerivedMesh *mesh_create_derived_no_deform(struct Object *ob, float (*vertCos)[3]);
DerivedMesh *mesh_create_derived_no_deform_render(struct Object *ob, float (*vertCos)[3]);
DerivedMesh *editmesh_get_derived_base(void);
DerivedMesh *editmesh_get_derived_cage(int *needsFree_r);
DerivedMesh *editmesh_get_derived_cage_and_final(DerivedMesh **final_r, int *cageNeedsFree_r, int *finalNeedsFree_r);

View File

@@ -1704,3 +1704,8 @@ DerivedMesh *editmesh_get_derived_cage(int *needsFree_r)
return G.editMesh->derivedCage;
}
DerivedMesh *editmesh_get_derived_base(void)
{
return getEditMeshDerivedMesh(G.editMesh, NULL);
}

View File

@@ -1856,7 +1856,15 @@ static void draw_mesh_object(Base *base, int dt)
if(G.obedit && ob->data==G.obedit->data) {
int cageNeedsFree, finalNeedsFree;
DerivedMesh *finalDM, *cageDM = editmesh_get_derived_cage_and_final(&finalDM, &cageNeedsFree, &finalNeedsFree);
DerivedMesh *finalDM, *cageDM;
if (G.obedit!=ob) {
finalDM = cageDM = editmesh_get_derived_base();
cageNeedsFree = 0;
finalNeedsFree = 1;
} else {
cageDM = editmesh_get_derived_cage_and_final(&finalDM, &cageNeedsFree, &finalNeedsFree);
}
if(dt>OB_WIRE) init_gl_materials(ob); // no transp in editmode, the fancy draw over goes bad then
draw_em_fancy(ob, G.editMesh, cageDM, finalDM, dt);