Bugfix: drivers on constraint properties could get set to invalid when

transforming, due to the evaluation of the object transform without
constraints, and the driver not finding the property.

Constraints are now disabled in a way that should avoid this problem
This commit is contained in:
Brecht Van Lommel 2010-01-12 19:51:26 +00:00
parent ff353b4939
commit 63e80e271d
3 changed files with 6 additions and 10 deletions

View File

@ -2035,7 +2035,7 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime)
}
/* solve constraints */
if (ob->constraints.first) {
if (ob->constraints.first && !(ob->flag & OB_NO_CONSTRAINTS)) {
bConstraintOb *cob;
cob= constraints_make_evalob(scene, ob, NULL, CONSTRAINT_OBTYPE_OBJECT);

View File

@ -4256,18 +4256,13 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *
track= ob->track;
ob->track= NULL;
if (constinv == 0) {
fakecons.first = ob->constraints.first;
fakecons.last = ob->constraints.last;
ob->constraints.first = ob->constraints.last = NULL;
}
if (constinv == 0)
ob->transflag |= OB_NO_CONSTRAINTS; /* where_is_object_time checks this */
where_is_object(t->scene, ob);
if (constinv == 0) {
ob->constraints.first = fakecons.first;
ob->constraints.last = fakecons.last;
}
if (constinv == 0)
ob->transflag &= ~OB_NO_CONSTRAINTS;
ob->track= track;
}

View File

@ -334,6 +334,7 @@ extern Object workob;
#define OB_DUPLIFACES_SCALE 1024
#define OB_DUPLIPARTS 2048
#define OB_RENDER_DUPLI 4096
#define OB_NO_CONSTRAINTS 8096 /* runtime constraints disable */
/* (short) ipoflag */
// XXX depreceated - old animation system crap