#ifndef _RIVE_PATH_VERTEX_HPP_
#define _RIVE_PATH_VERTEX_HPP_
#include "rive/bones/weight.hpp"
#include "rive/generated/shapes/path_vertex_base.hpp"
#include "rive/math/mat2d.hpp"
namespace rive
{
    class PathVertex : public PathVertexBase
    {
        friend class Weight;

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

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

    protected:
        void markPathDirty();
        void xChanged() override;
        void yChanged() override;

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

#endif