SkeletonData (and BoneData) is shared, Skeleton (and Bone) is not. You can see the separation here:
http://esotericsoftware.com/spine/files ... iagram.png
You could load the SkeletonData twice, though this is a bit wasteful. I think you can do this:
override public void UpdateSkeleton () {
// Apply the animation.
state.Update(Time.deltaTime * timeScale);
state.Apply(skeleton);
// Add this:
tiedBone.rotation += parentBone.worldRotation;
tiedBone.x += parentBone.worldX;
tiedBone.y += parentBone.worldY;
// Call overridden method to call skeleton Update and UpdateWorldTransform.
base.UpdateSkeleton();
}
This poses the skeleton using the AnimationState, then adjusts the bones relatively.
Note you could also probably solve this particular problem differently, using a single skeleton. Animate your skeleton body without keying the head. Animate your skeleton head without keying the body. Then apply both animations at the same time using different AnimationState tracks:
public const int BODY = 0;
public const int HEAD = 1;
...
state.setAnimation(BODY, "run", true);
state.setAnimation(HEAD, "laugh", false);
state.addAnimation(HEAD, "idle", true, 0);
An animation only affects the bones and slots for which it has keyframes, so there is no problem applying multiple animations each frame.