| #include "rive/animation/blend_state_1d.hpp" | |
| #include "rive/animation/state_machine.hpp" | |
| #include "rive/animation/state_machine_number.hpp" | |
| #include "rive/animation/blend_state_1d_instance.hpp" | |
| #include "rive/importers/state_machine_importer.hpp" | |
| using namespace rive; | |
| StateInstance* BlendState1D::makeInstance() const { | |
| return new BlendState1DInstance(this); | |
| } | |
| StatusCode BlendState1D::import(ImportStack& importStack) { | |
| auto stateMachineImporter = | |
| importStack.latest<StateMachineImporter>(StateMachine::typeKey); | |
| if (stateMachineImporter == nullptr) { | |
| return StatusCode::MissingObject; | |
| } | |
| // A negative inputId means it wasn't set, we actually allow this as the | |
| // editor does too. | |
| if (inputId() >= 0) { | |
| // Make sure the inputId doesn't overflow the input buffer. | |
| if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount()) { | |
| return StatusCode::InvalidObject; | |
| } | |
| auto input = | |
| stateMachineImporter->stateMachine()->input((size_t)inputId()); | |
| if (input == nullptr || !input->is<StateMachineNumber>()) { | |
| return StatusCode::InvalidObject; | |
| } | |
| } | |
| return Super::import(importStack); | |
| } |