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.OriginalTransform = transMat.transform; colladaBone.Transform = Transform.FromMatrix4(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); }
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; }