1 #include "rive/bones/bone.hpp"
2 #include "rive/math/vec2d.hpp"
7 void Bone::addChildBone(Bone* bone) { m_ChildBones.push_back(bone); }
9 StatusCode Bone::onAddedClean(CoreContext* context) {
10 Super::onAddedClean(context);
11 if (!parent()->is<Bone>()) {
12 return StatusCode::MissingObject;
14 parent()->as<Bone>()->addChildBone(this);
15 return StatusCode::Ok;
18 void Bone::lengthChanged() {
19 for (auto bone : m_ChildBones) {
20 bone->markTransformDirty();
24 float Bone::x() const { return parent()->as<Bone>()->length(); }
26 float Bone::y() const { return 0.0f; }
28 Vec2D Bone::tipWorldTranslation() const {
29 return worldTransform() * Vec2D(length(), 0);
32 void Bone::addPeerConstraint(Constraint* peer) {
33 assert(std::find(m_PeerConstraints.begin(), m_PeerConstraints.end(), peer) ==
34 m_PeerConstraints.end());
35 m_PeerConstraints.push_back(peer);