diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-08-07 00:44:59 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-08-07 00:44:59 +0400 |
commit | 80dcdc95081022a571fe0827d2fc81bbb31b8d9c (patch) | |
tree | b992d13036afba09dc95c1de481250cc6dda55be | |
parent | 3753605e948fc4849881f22c85114db1f227ff7e (diff) |
- 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.
-rw-r--r-- | source/blender/blenkernel/BKE_DerivedMesh.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 5 | ||||
-rw-r--r-- | source/blender/src/drawobject.c | 10 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index bd0e2bd3a98..7a44f9de9f9 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -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); diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 8bf5df95257..15f6b9fce9b 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -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); +} diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 6e3401d0582..b0942f08d72 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -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); |