#include "rive/importers/keyed_property_importer.hpp"
#include "rive/animation/keyed_property.hpp"
#include "rive/animation/keyframe.hpp"
#include "rive/animation/linear_animation.hpp"

using namespace rive;

KeyedPropertyImporter::KeyedPropertyImporter(LinearAnimation* animation,
                                             KeyedProperty* keyedProperty) :
    m_Animation(animation), m_KeyedProperty(keyedProperty)
{
}

void KeyedPropertyImporter::addKeyFrame(KeyFrame* keyFrame)
{
	keyFrame->computeSeconds(m_Animation->fps());
	m_KeyedProperty->addKeyFrame(keyFrame);
}

bool KeyedPropertyImporter::readNullObject()
{
	// We don't need to add the null keyframe as nothing references them, but we
	// do need to not allow the null to propagate up.
	return true;
}