#ifndef _RIVE_VERTEX_HPP_
#define _RIVE_VERTEX_HPP_
#include "rive/bones/weight.hpp"
#include "rive/generated/shapes/vertex_base.hpp"
#include "rive/math/mat2d.hpp"
namespace rive {
    class Vertex : public VertexBase {
        friend class Weight;

    private:
        Weight* m_Weight = nullptr;
        void weight(Weight* value) { m_Weight = value; }

    public:
        template <typename T> T* weight() { return m_Weight->as<T>(); }
        virtual void deform(const Mat2D& worldTransform,
                            const float* boneTransforms);
        bool hasWeight() { return m_Weight != nullptr; }
        Vec2D renderTranslation();

    protected:
        virtual void markGeometryDirty() = 0;
        void xChanged() override;
        void yChanged() override;

#ifdef TESTING
    public:
        Weight* weight() { return m_Weight; }
#endif
    };
} // namespace rive

#endif