void ActionTimeline::step(float delta) { if (!_playing || _timelineMap.size() == 0 || _duration == 0) { return; } _time += delta * _timeSpeed; const float endtoffset = _time - _endFrame * _frameInternal; if (endtoffset < _frameInternal) { _currentFrame = (int)(_time / _frameInternal); stepToFrame(_currentFrame); if (endtoffset >= 0 && _lastFrameListener != nullptr) // last frame _lastFrameListener(); } else { _playing = _loop; if (!_playing) { _time = _endFrame * _frameInternal; if (_currentFrame != _endFrame) { _currentFrame = _endFrame; stepToFrame(_currentFrame); if (_lastFrameListener != nullptr) // last frame _lastFrameListener(); } } else gotoFrameAndPlay(_startFrame, _endFrame, _loop); } }
void ActionTimeline::step(float delta) { if (!_playing || _timelineMap.size() == 0 || _duration == 0) { return; } _time += delta * _timeSpeed; _currentFrame = (int)(_time / _frameInternal); stepToFrame(_currentFrame); if(_time > _endFrame * _frameInternal) { _playing = _loop; if(!_playing) _time = _endFrame * _frameInternal; else gotoFrameAndPlay(_startFrame, _endFrame, _loop); } }