public static GrnNode ReadByNodeType(GrnBinaryReader reader, GrnNode parentNode, GrnNodeType nodeType) { GrnNode node; if (nodeType == GrnNodeType.FileDirectory) { node = new GrnMainNode(); } else if (nodeType == GrnNodeType.VersionFrameDirectory || nodeType == GrnNodeType.StandardFrameDirectory || nodeType == GrnNodeType.NullFrameDirectory) { node = new GrnSectionNode(parentNode, nodeType); } else if (nodeType == GrnNodeType.StringTable) { node = new GrnStringTableNode(parentNode); } else if (parentNode.NodeType == GrnNodeType.MeshVertexSet) { if (nodeType == GrnNodeType.MeshVertices) { node = new GrnMeshVerticesNode(parentNode); } else if (nodeType == GrnNodeType.MeshNormals) { node = new GrnMeshNormalsNode(parentNode); } else { node = new GrnNode(parentNode, nodeType); } } else if (nodeType == GrnNodeType.MeshField) { node = new GrnMeshFieldNode(parentNode); } else if (nodeType == GrnNodeType.MeshWeights) { node = new GrnMeshWeightsNode(parentNode); } else if (nodeType == GrnNodeType.MeshTriangles) { node = new GrnMeshTrianglesNode(parentNode); } else if (nodeType == GrnNodeType.DataExtensionProperty) { node = new GrnDataExtensionPropertyNode(parentNode); } else if (nodeType == GrnNodeType.DataExtensionPropertyValue) { node = new GrnDataExtensionPropertyValueNode(parentNode); } else if (nodeType == GrnNodeType.DataExtensionReference) { node = new GrnDataExtensionReferenceNode(parentNode); } else if (nodeType == GrnNodeType.Bone) { node = new GrnBoneNode(parentNode); } else if (nodeType == GrnNodeType.MaterialSimpleDiffuseTexture) { node = new GrnMaterialSimpleDiffuseTextureNode(parentNode); } else if (nodeType == GrnNodeType.FormBoneChannels) { node = new GrnFormBoneChannelsNode(parentNode); } else if (nodeType == GrnNodeType.FormMesh) { node = new GrnFormMeshNode(parentNode); } else if (nodeType == GrnNodeType.FormMeshBone) { node = new GrnFormMeshBoneNode(parentNode); } else if (nodeType == GrnNodeType.RenderPass) { node = new GrnRenderPassNode(parentNode); } else if (nodeType == GrnNodeType.RenderPassTriangles) { node = new GrnRenderPassTrianglesNode(parentNode); } else if (nodeType == GrnNodeType.AnimationTransformTrackKeys) { node = new GrnAnimationTransformTrackKeysNode(parentNode); } else if (nodeType == GrnNodeType.TextureMapImage) { node = new GrnTextureMapImageNode(parentNode); } else { node = new GrnNode(parentNode, nodeType); } node.Read(reader); return(node); }
public void WriteFormMeshBones(GrnNode fMeshBoneSecNode) { for (int i = 0; i < this.BoneBindings.Count; ++i) { GrnFormMeshBoneNode fMeshBoneNode = new GrnFormMeshBoneNode(fMeshBoneSecNode); fMeshBoneNode.BoneIndex = this.BoneBindings[i].BoneIndex; fMeshBoneNode.Unknown = this.BoneBindings[i].Unknown; fMeshBoneNode.OBBMin = this.BoneBindings[i].OBBMin; fMeshBoneNode.OBBMax = this.BoneBindings[i].OBBMax; fMeshBoneSecNode.AppendChild(fMeshBoneNode); } }