#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