diff --git a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp index 09c1882..faa85df 100644 --- a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp +++ b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp @@ -28,7 +28,7 @@ namespace ia::iae Handle SpriteRendererComponent::AddAnimation(IN CONST Animation &animation) { - if(animation.Keys.empty()) + if (animation.Keys.empty()) return INVALID_HANDLE; m_animations.pushBack(animation); return m_animations.size() - 1; @@ -48,7 +48,8 @@ namespace ia::iae VOID SpriteRendererComponent::SetActiveAnimation(IN Handle animation) { - if(animation == m_activeAnimationHandle) return; + if (animation == m_activeAnimationHandle) + return; IA_RELEASE_ASSERT((animation != INVALID_HANDLE) && (animation < m_animations.size())); m_prevAnimationKeyFrameIndex = 0; m_activeAnimation = m_animations[animation]; @@ -66,10 +67,9 @@ namespace ia::iae VOID SpriteRendererComponent::Draw() { const auto &animFrame = m_currentAnimationState; - animFrame.Texture.Draw( - m_node->SortOffset(), - m_node->GetPosition() + animFrame.Position, m_node->GetScale() * animFrame.Scale, - m_node->GetRotation().z + animFrame.Rotation.z, m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay); + animFrame.Texture.Draw(m_node->SortOffset(), m_node->GetPosition() + animFrame.Position, + m_node->GetScale() * animFrame.Scale, m_node->GetRotation().z + animFrame.Rotation.z, + m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay); } VOID SpriteRendererComponent::UpdateAnimation() @@ -82,12 +82,13 @@ namespace ia::iae { const auto t = m_timelinePosition / m_prevAnimationKeyFrame.Duration; #define INTERP_PROPERTY(name) \ - m_currentAnimationState.name = iam::Lerp(m_prevAnimationKeyFrame.name, m_nextAnimationKeyFrame.name, t); + m_currentAnimationState.name = \ + m_prevAnimationKeyFrame.name + (m_nextAnimationKeyFrame.name - m_prevAnimationKeyFrame.name) * t; - //INTERP_PROPERTY(Position); [IATODO] - //INTERP_PROPERTY(Rotation); - //INTERP_PROPERTY(Scale); - //INTERP_PROPERTY(ColorOverlay); + INTERP_PROPERTY(Position); + INTERP_PROPERTY(Rotation); + INTERP_PROPERTY(Scale); + INTERP_PROPERTY(ColorOverlay); #undef INTERP_PROPERTY }