From 14219d846281b78647aadbeea643c5541dba3aaf Mon Sep 17 00:00:00 2001 From: Fenrisul Date: Thu, 4 Sep 2014 03:56:10 -0700 Subject: [PATCH] Added children List to Bone.cs and populated it inside Skeleton.cs Changed Bone class to implement IEnumerable to easily traverse the child list. --- spine-csharp/src/Bone.cs | 39 +++++++++++++++++++++++++++++++++++- spine-csharp/src/Skeleton.cs | 5 +++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index 21549e4cd..dfba064e2 100644 --- a/spine-csharp/src/Bone.cs +++ b/spine-csharp/src/Bone.cs @@ -29,14 +29,50 @@ *****************************************************************************/ using System; +using System.Collections; +using System.Collections.Generic; 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; internal BoneData data; internal Skeleton skeleton; internal Bone parent; + internal List children; internal float x, y, rotation, rotationIK, scaleX, scaleY; internal float m00, m01, m10, m11; internal float worldX, worldY, worldRotation, worldScaleX, worldScaleY; @@ -70,6 +106,7 @@ namespace Spine { this.data = data; this.skeleton = skeleton; this.parent = parent; + this.children = new List(); SetToSetupPose(); } diff --git a/spine-csharp/src/Skeleton.cs b/spine-csharp/src/Skeleton.cs index ab6d4d610..02aa9653f 100644 --- a/spine-csharp/src/Skeleton.cs +++ b/spine-csharp/src/Skeleton.cs @@ -77,6 +77,11 @@ namespace Spine { bones.Add(new Bone(boneData, this, parent)); } + foreach(Bone b in bones){ + if(b.Parent != null) + b.Parent.children.Add(b); + } + slots = new List(data.slots.Count); drawOrder = new List(data.slots.Count); foreach (SlotData slotData in data.slots) {