Example #1
0
        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();
            }
        }