[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24069] trunk/blender/source/blender/ editors: Bugfix to restore shape key add creating a new shape based on the
Brecht Van Lommel
brecht at blender.org
Sat Oct 24 13:25:05 CEST 2009
Revision: 24069
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24069
Author: blendix
Date: 2009-10-24 13:25:05 +0200 (Sat, 24 Oct 2009)
Log Message:
-----------
Bugfix to restore shape key add creating a new shape based on the
shape visible in the 3d view, rather than a copy of the basis shape.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/ED_object.h
trunk/blender/source/blender/editors/object/object_shapekey.c
Modified: trunk/blender/source/blender/editors/include/ED_object.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_object.h 2009-10-24 07:50:39 UTC (rev 24068)
+++ trunk/blender/source/blender/editors/include/ED_object.h 2009-10-24 11:25:05 UTC (rev 24069)
@@ -102,8 +102,6 @@
void undo_push_lattice(struct bContext *C, char *name);
/* object_shapekey.c */
-void insert_shapekey(struct Scene *scene, struct Object *ob);
-void delete_key(struct Scene *scene, struct Object *ob);
void key_to_mesh(struct KeyBlock *kb, struct Mesh *me);
void mesh_to_key(struct Mesh *me, struct KeyBlock *kb);
void key_to_latt(struct KeyBlock *kb, struct Lattice *lt);
Modified: trunk/blender/source/blender/editors/object/object_shapekey.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_shapekey.c 2009-10-24 07:50:39 UTC (rev 24068)
+++ trunk/blender/source/blender/editors/object/object_shapekey.c 2009-10-24 11:25:05 UTC (rev 24069)
@@ -80,41 +80,6 @@
#include "object_intern.h"
-#if 0 // XXX old animation system
-static void default_key_ipo(Scene *scene, Key *key)
-{
- IpoCurve *icu;
- BezTriple *bezt;
-
- key->ipo= add_ipo(scene, "KeyIpo", ID_KE);
-
- icu= MEM_callocN(sizeof(IpoCurve), "ipocurve");
-
- icu->blocktype= ID_KE;
- icu->adrcode= KEY_SPEED;
- icu->flag= IPO_VISIBLE|IPO_SELECT|IPO_AUTO_HORIZ;
- set_icu_vars(icu);
-
- BLI_addtail( &(key->ipo->curve), icu);
-
- icu->bezt= bezt= MEM_callocN(2*sizeof(BezTriple), "defaultipo");
- icu->totvert= 2;
-
- bezt->hide= IPO_BEZ;
- bezt->f1=bezt->f2= bezt->f3= SELECT;
- bezt->h1= bezt->h2= HD_AUTO;
- bezt++;
- bezt->vec[1][0]= 100.0;
- bezt->vec[1][1]= 1.0;
- bezt->hide= IPO_BEZ;
- bezt->f1=bezt->f2= bezt->f3= SELECT;
- bezt->h1= bezt->h2= HD_AUTO;
-
- calchandles_ipocurve(icu);
-}
-#endif // XXX old animation system
-
-
/************************* Mesh ************************/
void mesh_to_key(Mesh *me, KeyBlock *kb)
@@ -197,24 +162,30 @@
return kb;
}
-void insert_meshkey(Scene *scene, Mesh *me, short rel)
+static void insert_meshkey(Scene *scene, Object *ob)
{
- Key *key;
+ Mesh *me= ob->data;
+ Key *key= me->key;;
KeyBlock *kb;
+ int newkey= 0;
- if(me->key==NULL) {
- me->key= add_key( (ID *)me);
-
- if(rel)
- me->key->type = KEY_RELATIVE;
-// else
-// default_key_ipo(scene, me->key); // XXX old animation system
+ if(key == NULL) {
+ key= me->key= add_key((ID *)me);
+ key->type= KEY_RELATIVE;
+ newkey= 1;
}
- key= me->key;
kb= add_keyblock(scene, key);
- mesh_to_key(me, kb);
+ if(newkey) {
+ /* create from mesh */
+ mesh_to_key(me, kb);
+ }
+ else {
+ /* copy from current values */
+ kb->data= do_ob_key(scene, ob);
+ kb->totelem= me->totvert;
+ }
}
/************************* Lattice ************************/
@@ -255,24 +226,31 @@
for(a=0; a<tot; a++, fp+=3, bp++) {
VECCOPY(bp->vec, fp);
}
-
}
-/* exported to python... hrms, should not, use object levels! (ton) */
-void insert_lattkey(Scene *scene, Lattice *lt, short rel)
+static void insert_lattkey(Scene *scene, Object *ob)
{
- Key *key;
+ Lattice *lt= ob->data;
+ Key *key= lt->key;
KeyBlock *kb;
+ int newkey= 0;
- if(lt->key==NULL) {
- lt->key= add_key( (ID *)lt);
-// default_key_ipo(scene, lt->key); // XXX old animation system
+ if(key==NULL) {
+ key= lt->key= add_key( (ID *)lt);
+ key->type= KEY_RELATIVE;
}
- key= lt->key;
-
+
kb= add_keyblock(scene, key);
- latt_to_key(lt, kb);
+ if(newkey) {
+ /* create from lattice */
+ latt_to_key(lt, kb);
+ }
+ else {
+ /* copy from current values */
+ kb->totelem= lt->pntsu*lt->pntsv*lt->pntsw;
+ kb->data= do_ob_key(scene, ob);
+ }
}
/************************* Curve ************************/
@@ -379,25 +357,32 @@
}
-void insert_curvekey(Scene *scene, Curve *cu, short rel)
+static void insert_curvekey(Scene *scene, Object *ob)
{
- Key *key;
+ Curve *cu= ob->data;
+ Key *key= cu->key;
KeyBlock *kb;
ListBase *lb= (cu->editnurb)? cu->editnurb: &cu->nurb;
+ int newkey= 0;
- if(cu->key==NULL) {
- cu->key= add_key( (ID *)cu);
-
- if(rel)
- cu->key->type = KEY_RELATIVE;
-// else
-// default_key_ipo(scene, cu->key); // XXX old animation system
+ if(key==NULL) {
+ key= cu->key= add_key( (ID *)cu);
+ key->type = KEY_RELATIVE;
+ newkey= 1;
}
- key= cu->key;
kb= add_keyblock(scene, key);
- curve_to_key(cu, kb, lb);
+ if(newkey) {
+ /* create from curve */
+ curve_to_key(cu, kb, lb);
+ }
+ else {
+ /* copy from current values */
+ kb->totelem= count_curveverts(lb);
+ kb->data= do_ob_key(scene, ob);
+ }
+
}
/*********************** add shape key ***********************/
@@ -406,9 +391,9 @@
{
Key *key;
- if(ob->type==OB_MESH) insert_meshkey(scene, ob->data, 1);
- else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, ob->data, 1);
- else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob->data, 1);
+ if(ob->type==OB_MESH) insert_meshkey(scene, ob);
+ else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, ob);
+ else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob);
key= ob_get_key(ob);
ob->shapenr= BLI_countlist(&key->block);
More information about the Bf-blender-cvs
mailing list