blob: f962b8c54aeeb0d0ddb5d1a4a1236098e23dcaaf [file] [log] [blame]
#ifndef _RIVE_STATE_MACHINE_LISTENER_HPP_
#define _RIVE_STATE_MACHINE_LISTENER_HPP_
#include "rive/generated/animation/state_machine_listener_base.hpp"
#include "rive/listener_type.hpp"
#include "rive/math/vec2d.hpp"
namespace rive {
class Shape;
class StateMachineListenerImporter;
class ListenerAction;
class StateMachineInstance;
class StateMachineListener : public StateMachineListenerBase {
friend class StateMachineListenerImporter;
private:
std::vector<uint32_t> m_HitShapesIds;
std::vector<std::unique_ptr<ListenerAction>> m_Actions;
void addAction(std::unique_ptr<ListenerAction>);
public:
StateMachineListener();
~StateMachineListener() override;
ListenerType listenerType() const { return (ListenerType)listenerTypeValue(); }
size_t actionCount() const { return m_Actions.size(); }
const ListenerAction* action(size_t index) const;
StatusCode import(ImportStack& importStack) override;
StatusCode onAddedClean(CoreContext* context) override;
const std::vector<uint32_t>& hitShapeIds() const { return m_HitShapesIds; }
void performChanges(StateMachineInstance* stateMachineInstance, Vec2D position) const;
};
} // namespace rive
#endif