private static void writePose(XmlTextWriter writer, Pose pose, Pose basePose, TextureNode root) { if (basePose != pose) // exclude BasePose { PoseMode poseMode = pose.Mode; WriteElement(writer, "Pose", new string[] { "name", "type" }, new string[] { pose.Text, poseMode.ToString() }); if (pose.PoseNodes.Count > 0 && poseMode == PoseMode.Pose) { foreach (PoseNode poseNode in pose.PoseNodes) { PoseNode baseNode = basePose.GetNode(poseNode.Node); // check null ? string[] values = { poseNode.Node.Text, poseNode.Node.GetIndexPath() }; WriteElement(writer, "PoseNode", new string[] { "name", "path" }, values); foreach (string property in poseNode.Properties.Keys) { string[] pValues = new string[] { property, poseNode.Properties[property].ToString() }; WriteElement(writer, "Property", new string[] { "name", "value" }, pValues, true); } writer.WriteEndElement(); } } else { WriteElement(writer, "Equals", new string[] { "Pose" }, new String[] { basePose.Text }, true); } foreach (TreeNode subPose in pose.Nodes) { writePose(writer, subPose as Pose, basePose, root); } writer.WriteEndElement(); } }