| #ifndef _RIVE_SCENE_HPP_ | |
| #define _RIVE_SCENE_HPP_ | |
| #include "rive/animation/loop.hpp" | |
| #include "rive/math/aabb.hpp" | |
| #include "rive/math/vec2d.hpp" | |
| #include "rive/animation/keyed_callback_reporter.hpp" | |
| #include "rive/core/field_types/core_callback_type.hpp" | |
| #include "rive/hit_result.hpp" | |
| #include <string> | |
| namespace rive | |
| { | |
| class ArtboardInstance; | |
| class Renderer; | |
| class ViewModelInstance; | |
| class SMIInput; | |
| class SMIBool; | |
| class SMINumber; | |
| class SMITrigger; | |
| class Scene : public KeyedCallbackReporter, public CallbackContext | |
| { | |
| protected: | |
| Scene(ArtboardInstance*); | |
| public: | |
| ~Scene() override {} | |
| 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 dataContextFromInstance(ViewModelInstance* viewModelInstance); | |
| virtual HitResult pointerDown(Vec2D); | |
| virtual HitResult pointerMove(Vec2D); | |
| virtual HitResult pointerUp(Vec2D); | |
| virtual HitResult pointerExit(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; | |
| /// Report which time based events have elapsed on a timeline within this | |
| /// state machine. | |
| void reportKeyedCallback(uint32_t objectId, | |
| uint32_t propertyKey, | |
| float elapsedSeconds) override; | |
| protected: | |
| ArtboardInstance* m_artboardInstance; | |
| }; | |
| } // namespace rive | |
| #endif |