blob: a377b05ef2b1fe9080e471e1bce710377709d42b [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);
}