edit on last commit, for calculating drivers on obdata just check for animdata rather then the object type.

also use switch rather then if checks.
This commit is contained in:
Campbell Barton 2010-11-19 07:40:17 +00:00
parent 39de1914ab
commit ab72823917

@ -2534,52 +2534,53 @@ void object_handle_update(Scene *scene, Object *ob)
if (G.f & G_DEBUG) if (G.f & G_DEBUG)
printf("recalcdata %s\n", ob->id.name+2); printf("recalcdata %s\n", ob->id.name+2);
if(adt) {
/* evaluate drivers */
// XXX: for mesh types, should we push this to derivedmesh instead?
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
}
/* includes all keys and modifiers */ /* includes all keys and modifiers */
if(ob->type==OB_MESH) { switch(ob->type) {
EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL; case OB_MESH:
{
/* evaluate drivers */ EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL;
// XXX: should we push this to derivedmesh instead? // here was vieweditdatamask? XXX
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); if(em) {
makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH);
// here was vieweditdatamask? XXX BKE_mesh_end_editmesh(ob->data, em);
if(em) { } else
makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH); makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH);
BKE_mesh_end_editmesh(ob->data, em); }
} else break;
makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH);
} case OB_ARMATURE:
else if(ob->type==OB_MBALL) {
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
makeDispListMBall(scene, ob);
}
else if(ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
makeDispListCurveTypes(scene, ob, 0);
}
else if(ELEM(ob->type, OB_CAMERA, OB_LAMP)) {
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
}
else if(ob->type==OB_LATTICE) {
lattice_calc_modifiers(scene, ob);
}
else if(ob->type==OB_ARMATURE) {
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
if(ob->id.lib && ob->proxy_from) { if(ob->id.lib && ob->proxy_from) {
copy_pose_result(ob->pose, ob->proxy_from->pose);
// printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name); // printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
copy_pose_result(ob->pose, ob->proxy_from->pose);
} }
else { else {
where_is_pose(scene, ob); where_is_pose(scene, ob);
} }
break;
case OB_MBALL:
makeDispListMBall(scene, ob);
break;
case OB_CURVE:
case OB_SURF:
case OB_FONT:
makeDispListCurveTypes(scene, ob, 0);
break;
case OB_LATTICE:
lattice_calc_modifiers(scene, ob);
break;
} }
if(ob->particlesystem.first) { if(ob->particlesystem.first) {
ParticleSystem *tpsys, *psys; ParticleSystem *tpsys, *psys;
DerivedMesh *dm; DerivedMesh *dm;