public void drawOrientations(CCGraphics g, float theLength) {
   g.pushMatrix();
   for (CCSkeletonJoint myJoint : _myJointMap.values()) {
     myJoint.drawOrientation(g, theLength);
   }
   g.popMatrix();
 }
  public void draw(CCGraphics g) {
    g.pushAttribute();
    for (CCSkeletonLimb myBone : _myLimbs) {
      g.line(myBone._myJoint1.position(), myBone._myJoint2.position());
    }

    g.pointSize(5);
    for (CCSkeletonJoint myJoint : _myJointMap.values()) {
      g.point(myJoint.position());
    }
    g.popAttribute();
  }
  public List<CCMatrix4f> skinningMatrices(Collection<String> theJointNames) {

    List<CCMatrix4f> myResult = new ArrayList<CCMatrix4f>();
    myResult.add(_myBindSkinMatrix);
    for (String myName : theJointNames) {
      CCSkeletonJoint myJoint = joint(myName);
      myJoint.resetInverseBindMatrix();
      myJoint.inverseBindMatrix().invScale(_mySkinScale);
      myResult.add(myJoint.skinningMatrix());
    }
    return myResult;
  }
 private void addJoints(CCSkeletonJoint theParent) {
   for (CCSkeletonJoint theChild : theParent.childJoints()) {
     addJoint(theChild);
     addLimb(theParent, theChild);
     addJoints(theChild);
   }
 }
 public void updateMatrices() {
   _myRoot.updateMatrices();
 }
 public void addJoint(CCSkeletonJoint theJoint) {
   _myJointMap.put(theJoint.id(), theJoint);
   _myJoints.add(theJoint);
 }