| #include "rive/animation/state_machine_input_instance.hpp" |
| #include "rive/animation/state_machine_bool.hpp" |
| #include "rive/animation/state_machine_number.hpp" |
| #include "rive/animation/state_machine_trigger.hpp" |
| #include "rive/animation/state_machine_instance.hpp" |
| |
| using namespace rive; |
| |
| SMIInput::SMIInput(const StateMachineInput* input, |
| StateMachineInstance* machineInstance) : |
| m_MachineInstance(machineInstance), m_Input(input) {} |
| |
| uint16_t SMIInput::inputCoreType() const { return m_Input->coreType(); } |
| |
| const std::string& SMIInput::name() const { return m_Input->name(); } |
| |
| void SMIInput::valueChanged() { m_MachineInstance->markNeedsAdvance(); } |
| |
| // bool |
| |
| SMIBool::SMIBool(const StateMachineBool* input, |
| StateMachineInstance* machineInstance) : |
| SMIInput(input, machineInstance), m_Value(input->value()) {} |
| |
| void SMIBool::value(bool newValue) { |
| if (m_Value == newValue) { |
| return; |
| } |
| m_Value = newValue; |
| valueChanged(); |
| } |
| |
| // number |
| SMINumber::SMINumber(const StateMachineNumber* input, |
| StateMachineInstance* machineInstance) : |
| SMIInput(input, machineInstance), m_Value(input->value()) {} |
| |
| void SMINumber::value(float newValue) { |
| if (m_Value == newValue) { |
| return; |
| } |
| m_Value = newValue; |
| valueChanged(); |
| } |
| |
| // trigger |
| SMITrigger::SMITrigger(const StateMachineTrigger* input, |
| StateMachineInstance* machineInstance) : |
| SMIInput(input, machineInstance) {} |
| |
| void SMITrigger::fire() { |
| if (m_Fired) { |
| return; |
| } |
| m_Fired = true; |
| valueChanged(); |
| } |