Added children List<Bone> to Bone.cs and populated it inside Skeleton.cs

Changed Bone class to implement IEnumerable to easily traverse the child list.
This commit is contained in:
Fenrisul 2014-09-04 03:56:10 -07:00
parent bed13e4a36
commit 14219d8462
2 changed files with 43 additions and 1 deletions

View File

@ -29,14 +29,50 @@
*****************************************************************************/ *****************************************************************************/
using System; using System;
using System.Collections;
using System.Collections.Generic;
namespace Spine { namespace Spine {
public class Bone { public class Bone : IEnumerable {
private sealed class Enumerator : IEnumerator{
private int currentIndex = -1;
private Bone outer;
internal Enumerator(Bone outer){
this.outer = outer;
}
public bool MoveNext(){
int childCount = this.outer.children.Count;
return (++this.currentIndex < childCount);
}
public void Reset(){
this.currentIndex = -1;
}
public object Current{
get{
return this.outer.children[this.currentIndex];
}
}
}
public IEnumerator GetEnumerator ()
{
return new Enumerator(this);
}
public Bone this[int i]{
get{
return children[i];
}
}
static public bool yDown; static public bool yDown;
internal BoneData data; internal BoneData data;
internal Skeleton skeleton; internal Skeleton skeleton;
internal Bone parent; internal Bone parent;
internal List<Bone> children;
internal float x, y, rotation, rotationIK, scaleX, scaleY; internal float x, y, rotation, rotationIK, scaleX, scaleY;
internal float m00, m01, m10, m11; internal float m00, m01, m10, m11;
internal float worldX, worldY, worldRotation, worldScaleX, worldScaleY; internal float worldX, worldY, worldRotation, worldScaleX, worldScaleY;
@ -70,6 +106,7 @@ namespace Spine {
this.data = data; this.data = data;
this.skeleton = skeleton; this.skeleton = skeleton;
this.parent = parent; this.parent = parent;
this.children = new List<Bone>();
SetToSetupPose(); SetToSetupPose();
} }

View File

@ -77,6 +77,11 @@ namespace Spine {
bones.Add(new Bone(boneData, this, parent)); bones.Add(new Bone(boneData, this, parent));
} }
foreach(Bone b in bones){
if(b.Parent != null)
b.Parent.children.Add(b);
}
slots = new List<Slot>(data.slots.Count); slots = new List<Slot>(data.slots.Count);
drawOrder = new List<Slot>(data.slots.Count); drawOrder = new List<Slot>(data.slots.Count);
foreach (SlotData slotData in data.slots) { foreach (SlotData slotData in data.slots) {