- 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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user