Esempio n. 1
0
        MqoBone[] CreateBones(TSOFile tso)
        {
            MqoBone[] bones = new MqoBone[tso.nodes.Length];

            tso.UpdateNodesWorld();

            foreach (TSONode node in tso.nodes)
            {
                MqoBone bone = new MqoBone(node.id);
                bone.id   = node.id + 1;
                bone.name = node.Name;
                bone.tail = node.children.Count == 0;

                if (node.parent == null)
                {
                    bone.pid = 0;
                }
                else
                {
                    bone.pid = node.parent.id + 1;
                    bones[node.parent.id].cids.Add(bone.id);
                }

                //根本
                bone.q = node.world.Translation;
                //先端
                if (!bone.tail)
                {
                    bone.p = node.children[0].world.Translation;
                }
                else
                {
                    bone.p = node.world.Translation;
                }

                bones[node.id] = bone;
            }
            return(bones);
        }
Esempio n. 2
0
        public void Read(XmlReader reader)
        {
            reader.Read();

            reader.ReadStartElement("MetasequoiaDocument");

            reader.ReadStartElement("IncludedBy");
            string mqo_file = reader.ReadString();

            Console.WriteLine(mqo_file);
            reader.ReadEndElement();//IncludedBy

            reader.ReadStartElement("Plugin.56A31D20.71F282AB");
            reader.ReadStartElement("BoneSet");
            int len = 255;

            bones = new MqoBone[len];
            int i = 0;

            while (reader.IsStartElement("Bone"))
            {
                MqoBone bone = new MqoBone(i);
                bone.Read(reader);
                this.bones[i++] = bone;
            }
            reader.ReadEndElement();//BoneSet

            len = i;
            Array.Resize(ref bones, len);

            CreateBoneMap();
            CreateBoneTurnedMap();
            UpdateBones();

            while (reader.IsStartElement("Obj"))
            {
                //Console.WriteLine("Obj");
                //Console.WriteLine("  id:{0}", reader.GetAttribute("id"));
                reader.Read();//Obj
            }

            while (reader.IsStartElement("Poses"))
            {
                //Console.WriteLine("Poses");
                //Console.WriteLine("  isExist:{0}", reader.GetAttribute("isExist"));
                bool empty = reader.IsEmptyElement;
                reader.Read();//Poses
                if (empty)
                {
                    continue;
                }
                while (reader.IsStartElement("Pose"))
                {
                    //Console.WriteLine("Pose");
                    //Console.WriteLine("  id:{0}", reader.GetAttribute("id"));
                    reader.Read();       //Pose
                }
                reader.ReadEndElement(); //Poses
            }
            reader.ReadEndElement();     //Plugin.56A31D20.71F282AB
            reader.ReadEndElement();     //MetasequoiaDocument
        }