Example #1
0
    public void ExtractSkeleton(Transform[] bones)
    {
        ArrayExtensions.Clear(ref Bones);
        Action <Transform, Bone> recursion = null;

        recursion = new Action <Transform, Bone>((transform, parent) => {
            if (System.Array.Find(bones, x => x == transform))
            {
                Bone bone = new Bone(this, transform, Bones.Length);
                ArrayExtensions.Add(ref Bones, bone);
                if (parent != null)
                {
                    bone.Parent = parent.Index;
                    bone.ComputeLength();
                    ArrayExtensions.Add(ref parent.Childs, bone.Index);
                }
                parent = bone;
            }
            for (int i = 0; i < transform.childCount; i++)
            {
                recursion(transform.GetChild(i), parent);
            }
        });
        recursion(GetRoot(), null);
    }