void ReadMetaData(XmlElement element, List<SpriterMetaData> metaDataList) { foreach(XmlElement child in element) { // tag if (child.Name.Equals("tag")) { SpriterTagMetaData metaData = new SpriterTagMetaData(); metaDataList.Add(metaData); foreach(XmlAttribute attribute in child.Attributes) { // name if (attribute.Name.Equals("name")) metaData.name = attribute.Value; } } // variable else if (child.Name.Equals("variable")) { bool isTweenedVariable = child.Attributes.GetNamedItem("curve_type") != null; // tweened variable if (isTweenedVariable) { SpriterTweenedVariableMetaData metaData = new SpriterTweenedVariableMetaData(); metaDataList.Add(metaData); Vector2 curveTangents = Vector2.zero; foreach(XmlAttribute attribute in child.Attributes) { // name if (attribute.Name.Equals("name")) metaData.name = attribute.Value; // type else if (attribute.Name.Equals("type")) { metaData.variableTypeRaw = attribute.Value; metaData.variableType = SpriterDataHelpers.ParseSpriterEnum<VariableType>(metaData.variableTypeRaw); } // value else if (attribute.Name.Equals("value")) metaData.value = ReadVariable(metaData.variableType, attribute.Value); // curve_type else if (attribute.Name.Equals("curve_type")) { metaData.curveTypeRaw = attribute.Value; metaData.curveType = SpriterDataHelpers.ParseSpriterEnum<CurveType>(metaData.curveTypeRaw); } // c1, c2 else if (attribute.Name.Equals("c1")) curveTangents.x = float.Parse(attribute.Value); else if (attribute.Name.Equals("c2")) curveTangents.y = float.Parse(attribute.Value); } // Assign vector values metaData.curveTangents = curveTangents; } // normal variable else { SpriterVariableMetaData metaData = new SpriterVariableMetaData(); metaDataList.Add(metaData); foreach(XmlAttribute attribute in child.Attributes) { // name if (attribute.Name.Equals("name")) metaData.name = attribute.Value; // type else if (attribute.Name.Equals("type")) { metaData.variableTypeRaw = attribute.Value; metaData.variableType = SpriterDataHelpers.ParseSpriterEnum<VariableType>(metaData.variableTypeRaw); } // value else if (attribute.Name.Equals("value")) metaData.value = ReadVariable(metaData.variableType, attribute.Value); } } } } }