aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/animations/je_animation.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-11-21 08:39:28 +0800
committerchai <chaifix@163.com>2018-11-21 08:39:28 +0800
commitf440f7fb52ca62715504e4a3c7076456de40f7b8 (patch)
tree16d6bbaa9a6d42c6c57c193556ea0e1a881128a0 /src/libjin/graphics/animations/je_animation.cpp
parent9474767c68c48eff2618df80433b0b81ebf529c6 (diff)
*更新动画
Diffstat (limited to 'src/libjin/graphics/animations/je_animation.cpp')
-rw-r--r--src/libjin/graphics/animations/je_animation.cpp74
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;
}
}