blob: 8de9443c074da6917fdc3a9da2efe5fe19b8fb69 [file] [log] [blame]
#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