| #include "rive/animation/transition_bool_condition.hpp" |
| #include "rive/animation/state_transition.hpp" |
| #include "rive/importers/state_transition_importer.hpp" |
| #include "rive/importers/state_machine_importer.hpp" |
| #include "rive/animation/state_machine.hpp" |
| |
| using namespace rive; |
| |
| StatusCode TransitionCondition::onAddedDirty(CoreContext* context) { |
| return StatusCode::Ok; |
| } |
| |
| StatusCode TransitionCondition::onAddedClean(CoreContext* context) { |
| return StatusCode::Ok; |
| } |
| |
| StatusCode TransitionCondition::import(ImportStack& importStack) { |
| auto stateMachineImporter = |
| importStack.latest<StateMachineImporter>(StateMachine::typeKey); |
| if (stateMachineImporter == nullptr) { |
| return StatusCode::MissingObject; |
| } |
| |
| // Make sure the inputId doesn't overflow the input buffer. |
| if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount()) { |
| return StatusCode::InvalidObject; |
| } |
| if (!validateInputType( |
| stateMachineImporter->stateMachine()->input((size_t)inputId()))) |
| { |
| return StatusCode::InvalidObject; |
| } |
| |
| auto transitionImporter = |
| importStack.latest<StateTransitionImporter>(StateTransition::typeKey); |
| if (transitionImporter == nullptr) { |
| return StatusCode::MissingObject; |
| } |
| transitionImporter->addCondition(this); |
| return Super::import(importStack); |
| } |