public static Bone FromCollada(node bone, int parentIndex, List<Bone> bones, Dictionary<string, Bone> boneSIDs, Dictionary<string, Bone> boneIDs)
{
var transMat = ColladaHelpers.TransformFromNode(bone);
var colladaBone = new Bone();
colladaBone.TransformSID = transMat.TransformSID;
var myIndex = bones.Count;
bones.Add(colladaBone);
boneSIDs.Add(bone.sid, colladaBone);
if (bone.id != null)
{
boneIDs.Add(bone.id, colladaBone);
}
colladaBone.ParentIndex = parentIndex;
colladaBone.Name = bone.name;
colladaBone.LODError = 0; // TODO
colladaBone.Transform = transMat.transform;
colladaBone.UpdateInverseWorldTransform(bones);
if (bone.node1 != null)
{
foreach (var node in bone.node1)
{
if (node.type == NodeType.JOINT)
{
FromCollada(node, myIndex, bones, boneSIDs, boneIDs);
}
}
}
return colladaBone;
}