| #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); |
| } |