// ---------------------------------------------------------------- // From Game Programming in C++ by Sanjay Madhav // Copyright (C) 2017 Sanjay Madhav. All rights reserved. // // Released under the BSD License // See LICENSE in root directory for full details. // ---------------------------------------------------------------- #include "AnimSpriteComponent.h" #include "Math.h" AnimSpriteComponent::AnimSpriteComponent(Actor* owner, int drawOrder) :SpriteComponent(owner, drawOrder) , mCurrFrame(0.0f) , mAnimFPS(24.0f) { } void AnimSpriteComponent::Update(float deltaTime) { SpriteComponent::Update(deltaTime); if (mAnimTextures.size() > 0) { // Update the current frame based on frame rate // and delta time mCurrFrame += mAnimFPS * deltaTime; // Wrap current frame if needed while (mCurrFrame >= mAnimTextures.size()) { mCurrFrame -= mAnimTextures.size(); } // Set the current texture SetTexture(mAnimTextures[static_cast(mCurrFrame)]); } } void AnimSpriteComponent::SetAnimTextures(const std::vector& textures) { mAnimTextures = textures; if (mAnimTextures.size() > 0) { // Set the active texture to first frame mCurrFrame = 0.0f; SetTexture(mAnimTextures[0]); } }