Forward some animation methods to animation-instance
diff --git a/include/rive/animation/linear_animation_instance.hpp b/include/rive/animation/linear_animation_instance.hpp index 35c07d7..a1ec2ab 100644 --- a/include/rive/animation/linear_animation_instance.hpp +++ b/include/rive/animation/linear_animation_instance.hpp
@@ -63,6 +63,12 @@ float spilledTime() const { return m_SpilledTime; } float durationSeconds() const; + // Forwarded from animation + uint32_t fps() const; + uint32_t duration() const; + float speed() const; + float startSeconds() const; + // Returns either the animation's default or overridden loop values Loop loop() { return (Loop)loopValue(); } int loopValue();
diff --git a/include/rive/artboard.hpp b/include/rive/artboard.hpp index 5f33451..0315a82 100644 --- a/include/rive/artboard.hpp +++ b/include/rive/artboard.hpp
@@ -23,6 +23,7 @@ class ArtboardImporter; class NestedArtboard; class ArtboardInstance; + class LinearAnimationInstance; class Artboard : public ArtboardBase, public CoreContext, public ShapePaintContainer { friend class File; @@ -111,6 +112,7 @@ AABB bounds() const; bool isTranslucent(const LinearAnimation*) const; + bool isTranslucent(const LinearAnimationInstance*) const; template <typename T = Component> T* find(std::string name) { for (auto object : m_Objects) {
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp index 895891c..f781cc2 100644 --- a/src/animation/linear_animation_instance.cpp +++ b/src/animation/linear_animation_instance.cpp
@@ -114,6 +114,14 @@ m_Direction = 1; } +uint32_t LinearAnimationInstance::fps() const { return m_Animation->fps(); } + +uint32_t LinearAnimationInstance::duration() const { return m_Animation->duration(); } + +float LinearAnimationInstance::speed() const { return m_Animation->speed(); } + +float LinearAnimationInstance::startSeconds() const { return m_Animation->startSeconds(); } + // Returns either the animation's default or overridden loop values int LinearAnimationInstance::loopValue() { if (m_LoopValue != -1) {
diff --git a/src/artboard.cpp b/src/artboard.cpp index 7a3cf9f..77d2122 100644 --- a/src/artboard.cpp +++ b/src/artboard.cpp
@@ -1,6 +1,7 @@ #include "rive/artboard.hpp" #include "rive/backboard.hpp" #include "rive/animation/animation.hpp" +#include "rive/animation/linear_animation_instance.hpp" #include "rive/dependency_sorter.hpp" #include "rive/draw_rules.hpp" #include "rive/draw_target.hpp" @@ -445,6 +446,10 @@ return true; } +bool Artboard::isTranslucent(const LinearAnimationInstance* inst) const { + return this->isTranslucent(inst->animation()); +} + LinearAnimation* Artboard::firstAnimation() const { if (m_Animations.empty()) { return nullptr;