#include "rive/animation/state_machine_input.hpp"
#include "rive/importers/import_stack.hpp"
#include "rive/importers/state_machine_importer.hpp"
#include "rive/generated/animation/state_machine_base.hpp"

using namespace rive;

StatusCode StateMachineInput::onAddedDirty(CoreContext* context)
{
  return StatusCode::Ok;
}

StatusCode StateMachineInput::onAddedClean(CoreContext* context)
{
  return StatusCode::Ok;
}

StatusCode StateMachineInput::import(ImportStack& importStack)
{
  auto stateMachineImporter = importStack.latest<StateMachineImporter>(
      StateMachineBase::typeKey);
  if (stateMachineImporter == nullptr)
  {
    return StatusCode::MissingObject;
  }
  // WOW -- we're handing off ownership of this!
  stateMachineImporter->addInput(std::unique_ptr<StateMachineInput>(this));
  return Super::import(importStack);
}