void ReadMainline(XmlElement element, SpriterAnimation animation)
{
foreach(XmlElement child in element)
{
// key
if (child.Name.Equals("key"))
{
SpriterMainlineKey key = new SpriterMainlineKey();
animation.mainline.keys.Add(key);
foreach(XmlAttribute attribute in child.Attributes)
{
// id
if (attribute.Name.Equals("id"))
key.ID = int.Parse(attribute.Value);
// time
else if (attribute.Name.Equals("time"))
key.time = int.Parse(attribute.Value);
}
foreach(XmlElement child2 in child)
{
// meta_data
if (child2.Name.Equals("meta_data"))
ReadMetaData(child2, key.metaData);
// hierarchy
else if (child2.Name.Equals("hierarchy"))
ReadHierarchy(child2, key.hierarchy);
// object
else if (child2.Name.Equals("object"))
ReadMainlineObject(child2, key);
// object_ref
else if (child2.Name.Equals("object_ref"))
ReadMainlineObjectRef(child2, key);
// Spriter doesn't always output files to the spec;
// check for bones here too
// bone
else if (child2.Name.Equals("bone"))
{
ReadBone(key.hierarchy, child2);
}
// bone_ref
else if (child2.Name.Equals("bone_ref"))
{
ReadBoneRef(key.hierarchy, child2);
}
}
}
}
}