"inserting keys in editmode didnt work on newly created Meshes"

Found out the error was in code committed by Hos in december, when
he added feature to copy newly added vertices (or remove) when editing
vertex keys. In his commit he already noted "please test" :)

Error was that newly created meshes didn't give a correct first key.  For keys
to work in 2.32 and 2.33 you have to leave editmode at least once, or
insert keys outside of editmode.

The fix was fairly simple, just checking for an empty first key.
This commit is contained in:
Ton Roosendaal
2004-07-02 12:44:32 +00:00
parent ea7e5c9f41
commit ef9fa4bf50

View File

@@ -1447,42 +1447,45 @@ void load_editMesh_real(Mesh *me, int undo)
* with the way things were before editmode */
currkey = me->key->block.first;
while(currkey) {
if(currkey->data) {
fp=newkey= MEM_callocN(me->key->elemsize*G.totvert,
"currkey->data");
oldkey = currkey->data;
fp= newkey= MEM_callocN(me->key->elemsize*G.totvert, "currkey->data");
oldkey = currkey->data;
eve= em->verts.first;
eve= em->verts.first;
i = 0;
mvert = me->mvert;
while(eve) {
if (eve->keyindex >= 0) {
if(currkey == actkey) {
if (actkey == me->key->refkey) {
VECCOPY(fp, mvert->co);
}
else {
VECCOPY(fp, mvert->co);
i = 0;
mvert = me->mvert;
while(eve) {
if (eve->keyindex >= 0) { // old vertex
if(currkey == actkey) {
if (actkey == me->key->refkey) {
VECCOPY(fp, mvert->co);
}
else {
VECCOPY(fp, mvert->co);
if(oldverts) {
VECCOPY(mvert->co, oldverts[eve->keyindex].co);
}
}
else {
}
else {
if(oldkey) {
VECCOPY(fp, oldkey + 3 * eve->keyindex);
}
}
else {
VECCOPY(fp, mvert->co);
}
fp+= 3;
++i;
++mvert;
eve= eve->next;
}
currkey->totelem= G.totvert;
MEM_freeN(currkey->data);
currkey->data = newkey;
else {
VECCOPY(fp, mvert->co);
}
fp+= 3;
++i;
++mvert;
eve= eve->next;
}
currkey->totelem= G.totvert;
if(currkey->data) MEM_freeN(currkey->data);
currkey->data = newkey;
currkey= currkey->next;
}