blob: f4c544643d36fe10e3f2ea65df4599c1e5a7c192 [file] [log] [blame]
#include "rive/animation/layer_state.hpp"
#include "rive/animation/transition_bool_condition.hpp"
#include "rive/importers/import_stack.hpp"
#include "rive/importers/state_machine_layer_importer.hpp"
#include "rive/generated/animation/state_machine_layer_base.hpp"
#include "rive/animation/state_transition.hpp"
#include "rive/animation/system_state_instance.hpp"
using namespace rive;
LayerState::~LayerState()
{
for (auto transition : m_Transitions)
{
delete transition;
}
}
StatusCode LayerState::onAddedDirty(CoreContext* context)
{
StatusCode code;
for (auto transition : m_Transitions)
{
if ((code = transition->onAddedDirty(context)) != StatusCode::Ok)
{
return code;
}
}
return StatusCode::Ok;
}
StatusCode LayerState::onAddedClean(CoreContext* context)
{
StatusCode code;
for (auto transition : m_Transitions)
{
if ((code = transition->onAddedClean(context)) != StatusCode::Ok)
{
return code;
}
}
return StatusCode::Ok;
}
StatusCode LayerState::import(ImportStack& importStack)
{
auto layerImporter = importStack.latest<StateMachineLayerImporter>(
StateMachineLayerBase::typeKey);
if (layerImporter == nullptr)
{
return StatusCode::MissingObject;
}
layerImporter->addState(this);
return Super::import(importStack);
}
void LayerState::addTransition(StateTransition* transition)
{
m_Transitions.push_back(transition);
}
StateInstance* LayerState::makeInstance() const
{
return new SystemStateInstance(this);
}