private void ReadFormBoneChannel(List <int> transformChannels, GrnFormBoneChannelsNode formBoneChannels) { for (int i = 0; i < this.Bones.Count; ++i) { this.Bones[i].DataExtensionIndex = transformChannels[formBoneChannels.TransformChannelIndices[i] - 1]; } }
private void WriteForm(GrnNode formSecNode) { GrnNode formNode = new GrnNode(formSecNode, GrnNodeType.Form); formSecNode.AppendChild(formNode); GrnNode formSkelSecNode = new GrnNode(formNode, GrnNodeType.FormSkeletonSection); formNode.AppendChild(formSkelSecNode); GrnNode formSkelNode = new GrnNode(formSkelSecNode, GrnNodeType.FormSkeleton); formSkelNode.Data = new byte[] { 0x01, 0x00, 0x00, 0x00 }; formSkelSecNode.AppendChild(formSkelNode); GrnFormBoneChannelsNode fBoneChaNode = new GrnFormBoneChannelsNode(formSkelNode); fBoneChaNode.TransformChannelIndices = this.CreateFormBoneChannels(); formSkelNode.AppendChild(fBoneChaNode); GrnNode fPoseWeightsNode = new GrnNode(formSkelNode, GrnNodeType.FormPoseWeights); formSkelNode.AppendChild(fPoseWeightsNode); GrnNode formMeshSecNode = new GrnNode(formNode, GrnNodeType.FormMeshSection); formNode.AppendChild(formMeshSecNode); for (int i = 0; i < this.Meshes.Count; ++i) { GrnFormMeshNode fMeshNode = new GrnFormMeshNode(formMeshSecNode); fMeshNode.MeshIndex = i + 1; formMeshSecNode.AppendChild(fMeshNode); GrnNode fVertSetWeiNode = new GrnNode(fMeshNode, GrnNodeType.FormVertexSetWeights); fMeshNode.AppendChild(fVertSetWeiNode); GrnNode fMeshBoneSecNode = new GrnNode(fMeshNode, GrnNodeType.FormMeshBoneSection); fMeshNode.AppendChild(fMeshBoneSecNode); this.Meshes[i].WriteFormMeshBones(fMeshBoneSecNode); } }