Exemplo n.º 1
0
 public CollisionVolume(CollisionVolume src)
 {
     Name     = src.Name;
     Support  = src.Support;
     End      = src.End;
     Position = src.Position;
     Rot      = src.Rot;
     Scale    = src.Scale;
 }
Exemplo n.º 2
0
        private void Load(Stream s)
        {
            var doc = new XmlDocument
            {
                XmlResolver = null
            };

            doc.Load(s);
            var rootelem = doc.GetElementsByTagName("linden_skeleton")[0] as XmlElement;

            if (rootelem == null)
            {
                throw new InvalidDataException();
            }
            var stack = new List <KeyValuePair <XmlElement, BoneInfo> >();

            foreach (XmlElement elem in rootelem.ChildNodes.OfType <XmlElement>())
            {
                if (elem.Name == "bone")
                {
                    var info = new BoneInfo(elem);
                    BonesRef.Add(info.Name, info);
                    foreach (string alias in info.Aliases)
                    {
                        BonesRef.Add(alias, info);
                    }
                    Bones.Add(info);
                    stack.Add(new KeyValuePair <XmlElement, BoneInfo>(elem, info));
                }
            }

            while (stack.Count != 0)
            {
                KeyValuePair <XmlElement, BoneInfo> kvp = stack[0];
                stack.RemoveAt(0);

                foreach (XmlElement elem in kvp.Key.ChildNodes.OfType <XmlElement>())
                {
                    if (elem.Name == "bone")
                    {
                        var info = new BoneInfo(elem);
                        kvp.Value.Children.Add(info);
                        BonesRef.Add(info.Name, info);
                        foreach (string alias in info.Aliases)
                        {
                            BonesRef.Add(alias, info);
                        }
                        stack.Add(new KeyValuePair <XmlElement, BoneInfo>(elem, info));
                    }
                    else if (elem.Name == "collision_volume")
                    {
                        var colvol = new CollisionVolume(elem);
                        kvp.Value.CollisionVolumes.Add(colvol);
                    }
                }
            }
        }