Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / rive-cpp / src / animation / transition_bool_condition.cpp
1 #include "rive/animation/transition_bool_condition.hpp"
2 #include "rive/animation/state_machine_input_instance.hpp"
3 #include "rive/animation/state_machine_bool.hpp"
4 #include "rive/animation/transition_condition_op.hpp"
5
6 using namespace rive;
7
8 bool TransitionBoolCondition::validateInputType(const StateMachineInput* input) const {
9     // A null input is valid as the StateMachine can attempt to limp along if we
10     // introduce new input types that old conditions are expected to handle in
11     // newer runtimes. The older runtimes will just evaluate them to true.
12     return input == nullptr || input->is<StateMachineBool>();
13 }
14
15 bool TransitionBoolCondition::evaluate(const SMIInput* inputInstance) const {
16     if (inputInstance == nullptr) {
17         return true;
18     }
19     auto boolInput = reinterpret_cast<const SMIBool*>(inputInstance);
20
21     return (boolInput->value() && op() == TransitionConditionOp::equal) ||
22            (!boolInput->value() && op() == TransitionConditionOp::notEqual);
23 }