mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 17:56:04 +08:00
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:
parent
bed13e4a36
commit
14219d8462
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user