internal static SkinnedModelBone Read(ContentReader input) { // Read bone data ushort index = input.ReadUInt16(); string name = input.ReadString(); // Read bind pose Pose bindPose; bindPose.Translation = input.ReadVector3(); bindPose.Orientation = input.ReadQuaternion(); bindPose.Scale = input.ReadVector3(); Matrix inverseBindPoseTransform = input.ReadMatrix(); SkinnedModelBone skinnedBone = new SkinnedModelBone(index, name, bindPose, inverseBindPoseTransform); // Read bone parent input.ReadSharedResource <SkinnedModelBone>( delegate(SkinnedModelBone parentBone) { skinnedBone.parent = parentBone; }); // Read bone children int numChildren = input.ReadInt32(); List <SkinnedModelBone> childrenList = new List <SkinnedModelBone>(numChildren); for (int i = 0; i < numChildren; i++) { input.ReadSharedResource <SkinnedModelBone>( delegate(SkinnedModelBone childBone) { childrenList.Add(childBone); }); } skinnedBone.children = new SkinnedModelBoneCollection(childrenList); return(skinnedBone); }
internal static SkinnedModelBone Read(ContentReader input) { // Read bone data ushort index = input.ReadUInt16(); string name = input.ReadString(); // Read bind pose Pose bindPose; bindPose.Translation = input.ReadVector3(); bindPose.Orientation = input.ReadQuaternion(); bindPose.Scale = input.ReadVector3(); Matrix inverseBindPoseTransform = input.ReadMatrix(); SkinnedModelBone skinnedBone = new SkinnedModelBone(index, name, bindPose, inverseBindPoseTransform); // Read bone parent input.ReadSharedResource<SkinnedModelBone>( delegate(SkinnedModelBone parentBone) { skinnedBone.parent = parentBone; }); // Read bone children int numChildren = input.ReadInt32(); List<SkinnedModelBone> childrenList = new List<SkinnedModelBone>(numChildren); for (int i = 0; i < numChildren; i++) { input.ReadSharedResource<SkinnedModelBone>( delegate(SkinnedModelBone childBone) { childrenList.Add(childBone); }); } skinnedBone.children = new SkinnedModelBoneCollection(childrenList); return skinnedBone; }