diff options
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 6 | ||||
-rw-r--r-- | source/blender/editors/curve/editcurve.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 01724b7e9fd..81799a5409d 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2955,7 +2955,11 @@ static KeyBlock *insert_curvekey(Scene *scene, Object *ob, char *name, int from_ if(newkey || from_mix==FALSE) { /* create from curve */ kb= add_keyblock(key, name); - curve_to_key(cu, kb, lb); + if (!newkey) { + KeyBlock *basekb= (KeyBlock *)key->block.first; + kb->data= MEM_dupallocN(basekb->data); + kb->totelem= basekb->totelem; + } else curve_to_key(cu, kb, lb); } else { /* copy from current values */ diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 8d8dac33f9f..d38c91da5c5 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -884,7 +884,7 @@ static void calc_shapeKeys(Object *obedit) fp+= 3; curofp+= 3; } - fp[0]= ofp[0]; + fp[0]= curofp[0]; if(apply_offset) { /* apply alfa offsets */ @@ -914,7 +914,7 @@ static void calc_shapeKeys(Object *obedit) if (index >= 0) { curofp= ofp + index; VECCOPY(fp, curofp); - fp[3]= curofp[4]; + fp[3]= curofp[3]; if(apply_offset) { VECADD(fp, fp, ofs[i]); |