| #ifndef _RIVE_STATE_MACHINE_LAYER_HPP_ |
| #define _RIVE_STATE_MACHINE_LAYER_HPP_ |
| #include "rive/generated/animation/state_machine_layer_base.hpp" |
| #include <stdio.h> |
| #include <vector> |
| |
| namespace rive |
| { |
| class LayerState; |
| class StateMachineLayerImporter; |
| class AnyState; |
| class EntryState; |
| class ExitState; |
| class StateMachineLayer : public StateMachineLayerBase |
| { |
| friend class StateMachineLayerImporter; |
| |
| private: |
| std::vector<LayerState*> m_States; |
| AnyState* m_Any = nullptr; |
| EntryState* m_Entry = nullptr; |
| ExitState* m_Exit = nullptr; |
| |
| void addState(LayerState* state); |
| |
| public: |
| ~StateMachineLayer(); |
| StatusCode onAddedDirty(CoreContext* context) override; |
| StatusCode onAddedClean(CoreContext* context) override; |
| |
| StatusCode import(ImportStack& importStack) override; |
| |
| const AnyState* anyState() const { return m_Any; } |
| const EntryState* entryState() const { return m_Entry; } |
| const ExitState* exitState() const { return m_Exit; } |
| |
| #ifdef TESTING |
| size_t stateCount() const { return m_States.size(); } |
| LayerState* state(size_t index) const |
| { |
| if (index < m_States.size()) |
| { |
| return m_States[index]; |
| } |
| return nullptr; |
| } |
| #endif |
| }; |
| } // namespace rive |
| |
| #endif |