#ifndef _RIVE_BONE_HPP_
#define _RIVE_BONE_HPP_
#include "rive/generated/bones/bone_base.hpp"
#include <stdio.h>
#include <vector>

namespace rive {
    class Constraint;
    class Bone : public BoneBase {

    private:
        std::vector<Bone*> m_ChildBones;
        std::vector<Constraint*> m_PeerConstraints;

    public:
        StatusCode onAddedClean(CoreContext* context) override;
        float x() const override;
        float y() const override;

        inline const std::vector<Bone*> childBones() { return m_ChildBones; }

        void addChildBone(Bone* bone);
        Vec2D tipWorldTranslation() const;
        void addPeerConstraint(Constraint* peer);
        const std::vector<Constraint*>& peerConstraints() const { return m_PeerConstraints; }

    private:
        void lengthChanged() override;
    };
} // namespace rive

#endif