blob: b188d17036dab9b8b41e92b076b63b8b9bf1f15e [file] [log] [blame]
#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();
}