blob: f1a470627a53493852d89eb53621da99c3e83665 [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();
}