diff options
author | chai <chaifix@163.com> | 2018-11-21 08:39:28 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-21 08:39:28 +0800 |
commit | f440f7fb52ca62715504e4a3c7076456de40f7b8 (patch) | |
tree | 16d6bbaa9a6d42c6c57c193556ea0e1a881128a0 /src/libjin/graphics/animations/je_animation.cpp | |
parent | 9474767c68c48eff2618df80433b0b81ebf529c6 (diff) |
*更新动画
Diffstat (limited to 'src/libjin/graphics/animations/je_animation.cpp')
-rw-r--r-- | src/libjin/graphics/animations/je_animation.cpp | 74 |
1 files changed, 15 insertions, 59 deletions
diff --git a/src/libjin/graphics/animations/je_animation.cpp b/src/libjin/graphics/animations/je_animation.cpp index 028ef56..3168026 100644 --- a/src/libjin/graphics/animations/je_animation.cpp +++ b/src/libjin/graphics/animations/je_animation.cpp @@ -11,10 +11,7 @@ namespace JinEngine { Animation::Animation() - : mIndex(0) - , mActive(true) - , mLoop(true) - , mTick(0) + : mLoop(true) { } @@ -29,79 +26,38 @@ namespace JinEngine mFrames.insert(mFrames.end(), frames.begin(), frames.end()); } - void Animation::update(float dt) - { - if (!mActive) - return; - mTick += dt; - if (mTick >= mSpeed) - { - mTick -= mSpeed; - next(); - } - } - - void Animation::next() - { - int count = mFrames.size(); - ++mIndex; - if (mLoop) - mIndex %= count; - mIndex = clamp<uint>(mIndex, 0, count - 1); - } - - void Animation::pause() - { - mActive = false; - } - - void Animation::resume() - { - mActive = true; - } - - void Animation::rewind() - { - mIndex = 0; - mTick = 0; - } - void Animation::setSpeed(float speed) { mSpeed = speed; } - void Animation::setLoop(bool isLoop) + void Animation::setLoop(bool loop) { - mLoop = isLoop; + mLoop = loop; } - uint Animation::getCurrentFrameIndex() + const Sprite* Animation::getFrame(uint index) const { - return mIndex; + if (mFrames.size() == 0) + return nullptr; + if (without<uint>(index, 0, mFrames.size() - 1)) + return nullptr; + return mFrames[index]; } - const Sprite* Animation::getCurrentFrame() + uint Animation::getFrameCount() const { - if (mIndex >= mFrames.size()) - return nullptr; - return mFrames[mIndex]; + return mFrames.size(); } - void Animation::setCurrentFrame(uint frame) + bool Animation::isLoop() const { - mIndex = frame; + return mLoop; } - void Animation::render(float x, float y, float sx, float sy, float r) + float Animation::getSpeed() const { - if (mFrames.size() == 0) - return; - if (without<uint>(mIndex, 0, mFrames.size() - 1)) - return; - const Sprite* spr = getCurrentFrame(); - if(spr) - spr->render(x, y, sx, sy, r); + return mSpeed; } } |