private void WriteBones(ContentWriter output, ModelBoneContentCollection bones) { var bonesCount = bones.Count; output.Write((UInt32)bonesCount); foreach (var bone in bones) { output.WriteObject(bone.Name); output.Write(bone.Transform); } foreach (var bone in bones) { WriteBoneReference(output, bonesCount, bone.Parent); output.Write((uint)bone.Children.Count); foreach (var child in bone.Children) { WriteBoneReference(output, bonesCount, child); } } return; }
private void WriteBoneReference(ContentWriter output, ModelBoneContent bone, ModelBoneContentCollection bones) { var boneCount = bones != null ? bones.Count : 0; var boneId = bone != null ? bone.Index + 1 : 0; if (boneCount < 255) { output.Write((byte)boneId); } else { output.Write((uint)boneId); } }
private void WriteBones(ContentWriter output, ModelBoneContentCollection bones) { output.Write((uint)bones.Count); // Bone properties foreach (var bone in bones) { output.WriteObject(bone.Name); output.Write(bone.Transform); } // Hierarchy foreach (var bone in bones) { WriteBoneReference(output, bone.Parent, bones); output.Write((uint)bone.Children.Count); foreach (var child in bone.Children) { WriteBoneReference(output, child, bones); } } }
internal ModelContent(ModelBoneContent root, IList<ModelBoneContent> bones, IList<ModelMeshContent> meshes) { _root = root; _bones = new ModelBoneContentCollection(bones); _meshes = new ModelMeshContentCollection(meshes); }