| #ifndef _RIVE_SCENE_HPP_ | |
| #define _RIVE_SCENE_HPP_ | |
| #include "rive/animation/loop.hpp" | |
| #include "rive/math/aabb.hpp" | |
| #include "rive/math/vec2d.hpp" | |
| #include <string> | |
| namespace rive | |
| { | |
| class ArtboardInstance; | |
| class Renderer; | |
| class SMIInput; | |
| class SMIBool; | |
| class SMINumber; | |
| class SMITrigger; | |
| class Scene | |
| { | |
| protected: | |
| ArtboardInstance* m_ArtboardInstance; | |
| Scene(ArtboardInstance*); | |
| public: | |
| virtual ~Scene() {} | |
| Scene(Scene const& lhs) : m_ArtboardInstance(lhs.m_ArtboardInstance) {} | |
| float width() const; | |
| float height() const; | |
| AABB bounds() const { return {0, 0, this->width(), this->height()}; } | |
| virtual std::string name() const = 0; | |
| // Returns onShot if this has no looping (e.g. a statemachine) | |
| virtual Loop loop() const = 0; | |
| // Returns true iff the Scene is known to not be fully opaque | |
| virtual bool isTranslucent() const = 0; | |
| // returns -1 for continuous | |
| virtual float durationSeconds() const = 0; | |
| // returns true if draw() should be called | |
| virtual bool advanceAndApply(float elapsedSeconds) = 0; | |
| void draw(Renderer*); | |
| virtual void pointerDown(Vec2D); | |
| virtual void pointerMove(Vec2D); | |
| virtual void pointerUp(Vec2D); | |
| virtual size_t inputCount() const; | |
| virtual SMIInput* input(size_t index) const; | |
| virtual SMIBool* getBool(const std::string&) const; | |
| virtual SMINumber* getNumber(const std::string&) const; | |
| virtual SMITrigger* getTrigger(const std::string&) const; | |
| }; | |
| } // namespace rive | |
| #endif |