1 #ifndef _RIVE_LINEAR_ANIMATION_HPP_
2 #define _RIVE_LINEAR_ANIMATION_HPP_
3 #include "rive/animation/loop.hpp"
4 #include "rive/generated/animation/linear_animation_base.hpp"
10 class LinearAnimation : public LinearAnimationBase {
12 std::vector< std::unique_ptr<KeyedObject> > m_KeyedObjects;
14 friend class Artboard;
18 ~LinearAnimation() override;
19 StatusCode onAddedDirty(CoreContext* context) override;
20 StatusCode onAddedClean(CoreContext* context) override;
21 void addKeyedObject(std::unique_ptr<KeyedObject>);
22 void apply(Artboard* artboard, float time, float mix = 1.0f) const;
24 Loop loop() const { return (Loop)loopValue(); }
26 StatusCode import(ImportStack& importStack) override;
28 float startSeconds() const;
29 float endSeconds() const;
30 float durationSeconds() const;
32 /// Convert a global clock to local seconds (takes into consideration
33 /// work area start/end, speed, looping).
34 float globalToLocalSeconds(float seconds) const;
37 size_t numKeyedObjects() { return m_KeyedObjects.size(); }
38 // Used in testing to check how many animations gets deleted.
39 static int deleteCount;