public override void update (float t)
{
float newT;
// prevents possible rounding errors
if (FloatUtils.EQ(t , 0) || FloatUtils.EQ( t , 1))
newT = t;
else if( FloatUtils.Small(t , 0.5f) ){
t = t * 2;
newT = (1 - bounceTime(1-t) ) * 0.5f;
} else
newT = bounceTime(t * 2 - 1) * 0.5f + 0.5f;
_inner.update(newT);
}