@Override
    public void bind(float dt) {
        if (mIsPaused || mCurrentFrame == mStopAt) {
            mFrames[mCurrentFrame].bind(dt);
            return;
        }

        mCurrentTime += dt;
        while (mCurrentTime >= mFrameSwapTimes[mCurrentFrame]) {
            mCurrentTime -= mFrameSwapTimes[mCurrentFrame];
            if (mShouldReverse) {
                if (mReversing) {
                    mCurrentFrame--;
                } else {
                    mCurrentFrame++;
                }
                if (mCurrentFrame == mFrames.length) {
                    mCurrentFrame -= 2;
                    mReversing = true;
                } else if (mCurrentFrame == -1) {
                    mCurrentFrame += 2;
                    mReversing = false;
                }
            } else {
                mCurrentFrame = (mCurrentFrame + 1) % mFrames.length;
            }
        }
        mFrames[mCurrentFrame].bind(dt);
    }