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;