forked from bartvdbraak/blender
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:
parent
39de1914ab
commit
ab72823917
@ -2535,14 +2535,17 @@ void object_handle_update(Scene *scene, Object *ob)
|
||||
if (G.f & G_DEBUG)
|
||||
printf("recalcdata %s\n", ob->id.name+2);
|
||||
|
||||
/* includes all keys and modifiers */
|
||||
if(ob->type==OB_MESH) {
|
||||
EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL;
|
||||
|
||||
if(adt) {
|
||||
/* evaluate drivers */
|
||||
// XXX: should we push this to derivedmesh instead?
|
||||
// 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 */
|
||||
switch(ob->type) {
|
||||
case OB_MESH:
|
||||
{
|
||||
EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL;
|
||||
// here was vieweditdatamask? XXX
|
||||
if(em) {
|
||||
makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH);
|
||||
@ -2550,36 +2553,34 @@ void object_handle_update(Scene *scene, Object *ob)
|
||||
} else
|
||||
makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH);
|
||||
}
|
||||
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);
|
||||
break;
|
||||
|
||||
case OB_ARMATURE:
|
||||
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);
|
||||
copy_pose_result(ob->pose, ob->proxy_from->pose);
|
||||
}
|
||||
else {
|
||||
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) {
|
||||
ParticleSystem *tpsys, *psys;
|
||||
DerivedMesh *dm;
|
||||
|
Loading…
Reference in New Issue
Block a user