diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-10-22 13:31:07 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-10-22 13:31:07 +0400 |
commit | 06d57fdae05bad63438d360204c890d7ab81387a (patch) | |
tree | da871502636807a0911c394b7fa82f51aa704e6c /source/blender/editors/mesh/editmesh.c | |
parent | ddf965b63acd86912d9d1d12633ccd1822198d48 (diff) |
Shape Keys
Internal change to not apply the shape keys to the Mesh vertex coordinates,
but rather use it as part of the derivedmesh/displist evaluation. This only
has one practical advantage right now, which is that you can now make a
linked duplicate and pin it's shape key to a different shape than the first
object.
Further, this makes shape keys correctly fit into the modifier stack design,
which will help implement some other features later. Also it means the mesh
vertex coordinates are now really the orco's.
Diffstat (limited to 'source/blender/editors/mesh/editmesh.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index b0c51131041..408c793751b 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -756,7 +756,7 @@ void make_editMesh(Scene *scene, Object *ob) EditFace *efa; EditEdge *eed; EditSelection *ese; - float *co; + float *co, (*keyco)[3]= NULL; int tot, a, eekadoodle= 0; if(me->edit_mesh==NULL) @@ -782,9 +782,9 @@ void make_editMesh(Scene *scene, Object *ob) actkey = ob_get_keyblock(ob); if(actkey) { - tot= actkey->totelem; /* undo-ing in past for previous editmode sessions gives corrupt 'keyindex' values */ undo_editmode_clear(); + keyco= actkey->data; } /* make editverts */ @@ -797,8 +797,8 @@ void make_editMesh(Scene *scene, Object *ob) co= mvert->co; /* edit the shape key coordinate if available */ - if(actkey && a < actkey->totelem) - co= (float*)actkey->data + 3*a; + if(keyco && a < actkey->totelem) + co= keyco[a]; eve= addvertlist(em, co, NULL); evlist[a]= eve; @@ -1201,7 +1201,7 @@ void load_editMesh(Scene *scene, Object *ob) while(eve) { if (eve->keyindex >= 0 && eve->keyindex < currkey->totelem) { // valid old vertex if(currkey == actkey) { - if (actkey == me->key->refkey) { + if(actkey == me->key->refkey) { VECCOPY(fp, mvert->co); } else { |