#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