示例#1
0
 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];
     }
 }
示例#2
0
        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);
            }
        }