blob: b6f8a078749a7dbf4fced6e3e6c5c63e08ec5199 [file]
#ifndef _RIVE_SCRIPTED_INTERPOLATOR_HPP_
#define _RIVE_SCRIPTED_INTERPOLATOR_HPP_
#include "rive/generated/scripted/scripted_interpolator_base.hpp"
#include "rive/scripted/scripted_object.hpp"
#include <stdio.h>
namespace rive
{
class ScriptedInterpolator : public ScriptedInterpolatorBase,
public ScriptedObject
{
public:
float transformValue(float valueFrom, float valueTo, float factor) override;
float transform(float factor) const override;
uint32_t assetId() override { return scriptAssetId(); }
bool addScriptedDirt(ComponentDirt value, bool recurse = false) override
{
return false;
}
ScriptProtocol scriptProtocol() override
{
return ScriptProtocol::interpolator;
}
Component* component() override { return nullptr; }
StatusCode import(ImportStack& importStack) override;
// Cloning support so each (LinearAnimationInstance, InterpolatingKeyFrame)
// pair can vend its own stateful Lua instance. Mirrors
// ScriptedListenerAction / ScriptedTransitionCondition. Without these the
// base `ScriptedObject::cloneScriptedObject` returns nullptr and the
// per-instance path silently degrades to the shared template's
// identity/linear fallback.
Core* clone() const override;
ScriptedObject* cloneScriptedObject(DataBindContainer*) const override;
void addProperty(CustomProperty* prop) override;
};
} // namespace rive
#endif