blob: 2437bdc546ec928133e2e4afa7df23951dc7c936 [file] [log] [blame]
#include "rive/animation/transition_bool_condition.hpp"
#include "rive/animation/state_machine_input_instance.hpp"
#include "rive/animation/state_machine_bool.hpp"
#include "rive/animation/transition_condition_op.hpp"
using namespace rive;
bool TransitionBoolCondition::validateInputType(
const StateMachineInput* input) const
{
// A null input is valid as the StateMachine can attempt to limp along if we
// introduce new input types that old conditions are expected to handle in
// newer runtimes. The older runtimes will just evaluate them to true.
return input == nullptr || input->is<StateMachineBool>();
}
bool TransitionBoolCondition::evaluate(const SMIInput* inputInstance) const
{
if (inputInstance == nullptr)
{
return true;
}
auto boolInput = reinterpret_cast<const SMIBool*>(inputInstance);
return (boolInput->value() && op() == TransitionConditionOp::equal) ||
(!boolInput->value() && op() == TransitionConditionOp::notEqual);
}