blob: 39d008ea0730c3b5f84b32228c4d8fa22443e001 [file] [log] [blame]
#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);
}