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
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user