blob: 1d91d3ee9038bdb620e7d75a44b361c3291421c9 [file] [log] [blame]
#include "rive/animation/loop.hpp"
#include "rive/generated/animation/linear_animation_base.hpp"
#include <vector>
namespace rive {
class Artboard;
class KeyedObject;
class LinearAnimation : public LinearAnimationBase {
std::vector<KeyedObject*> m_KeyedObjects;
friend class Artboard;
StatusCode onAddedDirty(CoreContext* context) override;
StatusCode onAddedClean(CoreContext* context) override;
void addKeyedObject(KeyedObject* object);
void apply(Artboard* artboard, float time, float mix = 1.0f) const;
Loop loop() const { return (Loop)loopValue(); }
StatusCode import(ImportStack& importStack) override;
float startSeconds() const;
float endSeconds() const;
float durationSeconds() const;
/// Convert a global clock to local seconds (takes into consideration
/// work area start/end, speed, looping).
float globalToLocalSeconds(float seconds) const;
#ifdef TESTING
size_t numKeyedObjects() { return m_KeyedObjects.size(); }
// Used in testing to check how many animations gets deleted.
static int deleteCount;
} // namespace rive