X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fanimation.cpp;fp=source%2Fanimation.cpp;h=37f583d5ec53b43324e67f7fcd1237a25bbefa80;hp=0e4bd3e6ff26c26a4e4b7204c487fa6715148be7;hb=b0dfcfb5cdd73e7515170c0598d6b061d33446a7;hpb=f88bce7df357cf12ce20b7dc8c7d179d2ae95920 diff --git a/source/animation.cpp b/source/animation.cpp index 0e4bd3e6..37f583d5 100644 --- a/source/animation.cpp +++ b/source/animation.cpp @@ -234,6 +234,7 @@ void Animation::create_curve(CurveTarget target, int component, const T &extract typename Interpolate::SplineValue::Type value; if(extract(*i->keyframe, value)) { + typename Knot::Value dvalue = value; float x = i->time/Time::sec; if(i->control) { @@ -246,14 +247,14 @@ void Animation::create_curve(CurveTarget target, int component, const T &extract if(n_control==1) { typename Knot::Value cv = knots.back().y; - knots.back().y = (knots[knots.size()-2].y+cv*2.0f)/3.0f; - knots.push_back(Knot(x, (value+cv*2.0f)/3.0f)); + knots.back().y = (knots[knots.size()-2].y+cv*2.0)/3.0; + knots.push_back(Knot(x, (dvalue+cv*2.0)/3.0)); } else if(n_control==0 && !knots.empty()) { typename Knot::Value prev = knots.back().y; - knots.push_back(Knot(knots.back().x, (prev*2.0f+value)/3.0f)); - knots.push_back(Knot(x, (prev+value*2.0f)/3.0f)); + knots.push_back(Knot(knots.back().x, (prev*2.0+dvalue)/3.0)); + knots.push_back(Knot(x, (prev+dvalue*2.0)/3.0)); } n_control = 0; } @@ -318,7 +319,7 @@ Animation::Curve::Curve(CurveTarget t, int c): template Animation::ValueCurve::ValueCurve(CurveTarget t, int c, const vector &k): Curve(t, c), - spline(Interpolate::BezierSpline(k)) + spline(Interpolate::BezierSpline(k)) { } template @@ -372,7 +373,7 @@ template void Animation::ValueCurve::apply(float x, KeyFrame::AnimatedUniform &uni) const { uni.size = N; - typename Interpolate::Spline::Value value = spline(x); + typename Interpolate::Spline::Value value = spline(x); for(unsigned i=0; i::get(value, i); }