| #ifndef _RIVE_STATE_MACHINE_INPUT_INSTANCE_HPP_ | |
| #define _RIVE_STATE_MACHINE_INPUT_INSTANCE_HPP_ | |
| #include <string> | |
| #include <stdint.h> | |
| namespace rive | |
| { | |
| class StateMachineInstance; | |
| class StateMachineInput; | |
| class StateMachineBool; | |
| class StateMachineNumber; | |
| class StateMachineTrigger; | |
| class TransitionTriggerCondition; | |
| class StateMachineLayerInstance; | |
| class SMIInput | |
| { | |
| friend class StateMachineInstance; | |
| friend class StateMachineLayerInstance; | |
| private: | |
| StateMachineInstance* m_MachineInstance; | |
| const StateMachineInput* m_Input; | |
| virtual void advanced() {} | |
| protected: | |
| void valueChanged(); | |
| SMIInput(const StateMachineInput* input, StateMachineInstance* machineInstance); | |
| public: | |
| virtual ~SMIInput() {} | |
| const StateMachineInput* input() const { return m_Input; } | |
| const std::string& name() const; | |
| uint16_t inputCoreType() const; | |
| }; | |
| class SMIBool : public SMIInput | |
| { | |
| friend class StateMachineInstance; | |
| private: | |
| bool m_Value; | |
| SMIBool(const StateMachineBool* input, StateMachineInstance* machineInstance); | |
| public: | |
| bool value() const { return m_Value; } | |
| void value(bool newValue); | |
| }; | |
| class SMINumber : public SMIInput | |
| { | |
| friend class StateMachineInstance; | |
| private: | |
| float m_Value; | |
| SMINumber(const StateMachineNumber* input, StateMachineInstance* machineInstance); | |
| public: | |
| float value() const { return m_Value; } | |
| void value(float newValue); | |
| }; | |
| class SMITrigger : public SMIInput | |
| { | |
| friend class StateMachineInstance; | |
| friend class TransitionTriggerCondition; | |
| private: | |
| bool m_Fired = false; | |
| SMITrigger(const StateMachineTrigger* input, StateMachineInstance* machineInstance); | |
| void advanced() override { m_Fired = false; } | |
| public: | |
| void fire(); | |
| #ifdef TESTING | |
| bool didFire() { return m_Fired; } | |
| #endif | |
| }; | |
| } // namespace rive | |
| #endif |