18 auto animatable = std::dynamic_pointer_cast<Animatable>(component);
20 gettimeofday(&animatable->_now, NULL);
21 timersub(&animatable->_now, &animatable->_chrono, &animatable->_diff);
22 if (animatable->_diff.tv_sec >= animatable->getTime().tv_sec &&
23 animatable->_diff.tv_usec >= animatable->getTime().tv_usec) {
24 auto spriteAnim = animatable->getTarget();
25 int numberFrameToAnim = animatable->_numberFrameToAnim - 1;
26 std::tuple<
float,
float> size = spriteAnim->getSize();
27 if (animatable->_frameIndex >= numberFrameToAnim + animatable->_startFrameIndex) {
28 animatable->_frameIndex = animatable->_startFrameIndex;
30 animatable->_frameIndex++;
33 std::get<0>(size) / spriteAnim->getScale() / animatable->_numberFrame * animatable->_frameIndex;
35 std::get<0>(size) / spriteAnim->getScale() / animatable->_numberFrame * animatable->_frameForOnePicture;
36 int frameHeight = std::get<1>(size) / spriteAnim->getScale();
37 spriteAnim->setRect(std::make_tuple(frameWidth1, 0, frameWidth2, frameHeight));
38 animatable->_chrono = animatable->_now;