#ifndef _RIVE_TENDON_HPP_
#define _RIVE_TENDON_HPP_

#include "rive/generated/bones/tendon_base.hpp"
#include "rive/math/mat2d.hpp"
#include <stdio.h>

namespace rive
{
    class Bone;
    class Tendon : public TendonBase
    {
    private:
        Mat2D m_InverseBind;
        Bone* m_Bone = nullptr;

    public:
        Bone* bone() const { return m_Bone; }
        const Mat2D& inverseBind() const { return m_InverseBind; }
        StatusCode onAddedDirty(CoreContext* context) override;
        StatusCode onAddedClean(CoreContext* context) override;
    };
} // namespace rive

#endif