From f440f7fb52ca62715504e4a3c7076456de40f7b8 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 21 Nov 2018 08:39:28 +0800 Subject: =?UTF-8?q?*=E6=9B=B4=E6=96=B0=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/graphics/animations/je_animation.cpp | 74 +++++-------------------- 1 file changed, 15 insertions(+), 59 deletions(-) (limited to 'src/libjin/graphics/animations/je_animation.cpp') 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(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(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(mIndex, 0, mFrames.size() - 1)) - return; - const Sprite* spr = getCurrentFrame(); - if(spr) - spr->render(x, y, sx, sy, r); + return mSpeed; } } -- cgit v1.1-26-g67d0