public void initWithAnimation(CCAnimation anim){
NSUtils.Assert( anim!=null, "Animate: argument Animation must be non-nil");
float singleDuration = anim.duration;
base.initWithDuration (singleDuration * anim.loops);
_nextFrame = 0;
this.animation = anim;
_origFrame = null;
_executedLoops = 0;
_splitTimes = new List<float> (anim.frames.Count);
float accumUnitsOfTime = 0;
float newUnitOfTimeValue = singleDuration / anim.totalDelayUnits;
var enumerator = anim.frames.GetEnumerator();
while (enumerator.MoveNext()) {
var frame = enumerator.Current;
float value = (accumUnitsOfTime * newUnitOfTimeValue) / singleDuration;
accumUnitsOfTime += frame.delayUnits;
_splitTimes.Add(value);
}
}