Matt bugreport; stride bone caused character to float away while moving
a key in action window. - Found bad constructed loop, it was redrawing and recalculating things even when key didnt move - Depsgraph should also recalc object itself Same code appeared in NLA editor, both fixed.
This commit is contained in:
@@ -1017,35 +1017,35 @@ void transform_actionchannel_keys(int mode, int dummy)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mode=='s'){
|
||||
sprintf(str, "sizeX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='g'){
|
||||
sprintf(str, "deltaX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='t') {
|
||||
float fac= 2.0*(cval[0]-sval[0])/(maxx-minx);
|
||||
CLAMP(fac, -1.0f, 1.0f);
|
||||
sprintf(str, "TimeSlide: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
|
||||
if (G.saction->lock) {
|
||||
if(ob) {
|
||||
ob->ctime= -1234567.0f;
|
||||
if(ob->pose || ob_get_key(ob))
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
|
||||
else
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
|
||||
if (mode=='s'){
|
||||
sprintf(str, "sizeX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='g'){
|
||||
sprintf(str, "deltaX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='t') {
|
||||
float fac= 2.0*(cval[0]-sval[0])/(maxx-minx);
|
||||
CLAMP(fac, -1.0f, 1.0f);
|
||||
sprintf(str, "TimeSlide: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
|
||||
if (G.saction->lock) {
|
||||
if(ob) {
|
||||
ob->ctime= -1234567.0f;
|
||||
if(ob->pose || ob_get_key(ob))
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC);
|
||||
else
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
|
||||
}
|
||||
force_draw_plus(SPACE_VIEW3D, 0);
|
||||
}
|
||||
else {
|
||||
force_draw(0);
|
||||
}
|
||||
force_draw_plus(SPACE_VIEW3D, 0);
|
||||
}
|
||||
else {
|
||||
force_draw(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1061,7 +1061,7 @@ void transform_actionchannel_keys(int mode, int dummy)
|
||||
ob->ctime= -1234567.0f;
|
||||
|
||||
if(ob->pose || ob_get_key(ob))
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC);
|
||||
else
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
|
||||
}
|
||||
|
||||
@@ -1058,7 +1058,7 @@ void transform_nlachannel_keys(int mode, int dummy)
|
||||
areamouseco_to_ipoco(G.v2d, mvalc, &cval[0], &cval[1]);
|
||||
|
||||
if (!firsttime && lastcval[0]==cval[0] && lastcval[1]==cval[1]) {
|
||||
PIL_sleep_ms(1);
|
||||
PIL_sleep_ms(10);
|
||||
}
|
||||
else {
|
||||
for (i=0; i<tvtot; i++){
|
||||
@@ -1112,33 +1112,33 @@ void transform_nlachannel_keys(int mode, int dummy)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mode=='s'){
|
||||
sprintf(str, "sizeX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='g'){
|
||||
sprintf(str, "deltaX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
|
||||
if (G.snla->lock) {
|
||||
for (base=G.scene->base.first; base; base=base->next){
|
||||
if(base->flag & BA_HAS_RECALC_OB)
|
||||
base->object->recalc |= OB_RECALC_OB;
|
||||
if(base->flag & BA_HAS_RECALC_DATA)
|
||||
base->object->recalc |= OB_RECALC_DATA;
|
||||
|
||||
if(base->object->recalc) base->object->ctime= -1234567.0f; // eveil!
|
||||
if (mode=='s'){
|
||||
sprintf(str, "sizeX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
else if (mode=='g'){
|
||||
sprintf(str, "deltaX: %.3f", fac);
|
||||
headerprint(str);
|
||||
}
|
||||
|
||||
DAG_scene_flush_update(G.scene, screen_view3d_layers());
|
||||
|
||||
force_draw_all(0);
|
||||
}
|
||||
else {
|
||||
force_draw(0);
|
||||
if (G.snla->lock) {
|
||||
for (base=G.scene->base.first; base; base=base->next){
|
||||
if(base->flag & BA_HAS_RECALC_OB)
|
||||
base->object->recalc |= OB_RECALC_OB;
|
||||
if(base->flag & BA_HAS_RECALC_DATA)
|
||||
base->object->recalc |= OB_RECALC_DATA;
|
||||
|
||||
if(base->object->recalc) base->object->ctime= -1234567.0f; // eveil!
|
||||
}
|
||||
|
||||
DAG_scene_flush_update(G.scene, screen_view3d_layers());
|
||||
|
||||
force_draw_all(0);
|
||||
}
|
||||
else {
|
||||
force_draw(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user