cinder/Cinder — pull request #574 by richardeakin (2014-11-11 21:44:22+00:00)
Title: Added Timeline::applyAt() to allow for ‘delayed apply' tweens

I have been working on a real time sequencer that needed to be able to schedule an apply in the future, however this wasn't possible with the existing API because the apply's 'removeTarget' happens immediately.

We discussed offline that it would make sense for apply() to only cancel existing Tweens after the TimelineItem's start time (which is usually all Tweens unless you have a 'time ahead' system like I'm working on), however making this modification may have unwanted side effects due to Timeline's complex abilities to nest, reverse, etc. So, I have proposed to add these new methods so the current functionality isn't disturbed.

Because the start time needs to be known during the initial call that will remove current Tweens, we currently cannot use a templated function that returns an Options struct, since the removal would have already happened. For now, you must use this like the following:

```
float timeInFuture = timeline().getCurrentTime() + 0.5f;
ci::TweenRef applyMagTween( new ci::Tween( &anim, endValue, timeInFuture, duration ) );
timeline().applyAt( applyMagTween );
```

It was mentioned that later we will be addressing ways to improve Timelime, and at that point we may decide to change (more like augment) the default functionality to include a notion of delayed Tween removals.