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:
parent
ff353b4939
commit
63e80e271d
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue