BrashMonkey.Spriter.Data.IO.SCMLParser.ReadMetaData C# (CSharp) Method

ReadMetaData() private method

private ReadMetaData ( XmlElement element, List metaDataList ) : void
element System.Xml.XmlElement
metaDataList List
return void
        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);
                        }
                    }
                }
            }
        }