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:
authorDaniel Dunbar <daniel@zuster.org>2005-08-07 00:44:59 +0400
committerDaniel Dunbar <daniel@zuster.org>2005-08-07 00:44:59 +0400
commit80dcdc95081022a571fe0827d2fc81bbb31b8d9c (patch)
treeb992d13036afba09dc95c1de481250cc6dda55be
parent3753605e948fc4849881f22c85114db1f227ff7e (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.h1
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c5
-rw-r--r--source/blender/src/drawobject.c10
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);