[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16820] trunk/blender/source/blender/ blenkernel/intern/ipo.c: Bugfix #17708: layer IPOs doesn' t return the correct layer anymore
Joshua Leung
aligorith at gmail.com
Mon Sep 29 13:40:00 CEST 2008
Revision: 16820
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16820
Author: aligorith
Date: 2008-09-29 13:39:58 +0200 (Mon, 29 Sep 2008)
Log Message:
-----------
Bugfix #17708: layer IPOs doesn't return the correct layer anymore
When doing IPO-cleanup, added two break statements to hopefully optimise the evaluation process a teeny-weeny bit. However, that caused more problems than it was worth!
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/ipo.c
Modified: trunk/blender/source/blender/blenkernel/intern/ipo.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/ipo.c 2008-09-29 10:26:20 UTC (rev 16819)
+++ trunk/blender/source/blender/blenkernel/intern/ipo.c 2008-09-29 11:39:58 UTC (rev 16820)
@@ -1289,11 +1289,8 @@
if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime)) {
/* value depends on interpolation mode */
if (icu->ipo == IPO_CONST) {
- /* constant (evaltime not relevant, as no interpolation needed) */
+ /* constant (evaltime not relevant, so no interpolation needed) */
cvalue= prevbezt->vec[1][1];
-
- /* value found already, so no need to keep looping */
- break;
}
else if (icu->ipo == IPO_LIN) {
/* linear - interpolate between values of the two keyframes */
@@ -1301,14 +1298,11 @@
/* prevent division by zero */
if (fac) {
- fac= (evaltime - prevbezt->vec[1][0])/fac;
+ fac= (evaltime - prevbezt->vec[1][0]) / fac;
cvalue= prevbezt->vec[1][1] + (fac * (bezt->vec[1][1] - prevbezt->vec[1][1]));
}
else
cvalue= prevbezt->vec[1][1];
-
- /* value found already, so no need to keep looping */
- break;
}
else {
/* bezier interpolation */
@@ -1677,19 +1671,23 @@
/* this exception cannot be depgraphed yet... what todo with objects in other layers?... */
for (base= G.scene->base.first; base; base= base->next) {
+ Object *ob= base->object;
+
/* only update layer when an ipo */
- if (has_ipo_code(base->object->ipo, OB_LAY)) {
- do_ob_ipo(base->object);
- base->lay= base->object->lay;
+ if (has_ipo_code(ob->ipo, OB_LAY)) {
+ do_ob_ipo(ob);
+ base->lay= ob->lay;
}
}
/* layers for the set...*/
if (G.scene->set) {
for (base= G.scene->set->base.first; base; base= base->next) {
- if (has_ipo_code(base->object->ipo, OB_LAY)) {
- do_ob_ipo(base->object);
- base->lay= base->object->lay;
+ Object *ob= base->object;
+
+ if (has_ipo_code(ob->ipo, OB_LAY)) {
+ do_ob_ipo(ob);
+ base->lay= ob->lay;
}
}
}
More information about the Bf-blender-cvs
mailing list