public RepeatActionState(Drawable target, Repeat action) : base(target, action) { _innerAction = action.InnerAction; _innerActionState = (FinateTimeActionState) _innerAction.StartAction(target); _times = action.Times; _total = action.Total; _nextDt = _innerAction.Duration/Duration; }
public ActionEaseState(Drawable target, ActionEase action) : base(target, action) { _innerActionState = (FinateTimeActionState) action.InnerAction.StartAction(target); }
public override void Update(float time) { if (time >= _nextDt) { while (time > _nextDt && _total < _times) { _innerActionState.Update(1f); _total++; _innerActionState.Stop(); _innerActionState = (FinateTimeActionState) _innerAction.StartAction(Target); _nextDt = _innerAction.Duration/Duration*(_total + 1f); } if (time >= 1f && _total < _times) _total++; if (_total == _times) { _innerActionState.Update(1f); _innerActionState.Stop(); } else _innerActionState.Update(time - (_nextDt - _innerActionState.Duration/Duration)); } else _innerActionState.Update((time * _times) % 1f); }