Exemple #1
0
        static void ParseMorphs(OsmDocument doc, StringReader sr)
        {
            sr.ReadLine();

            for (var i = sr.ReadLine(); i != null && i.TrimEnd() != "}"; i = sr.ReadLine())
            {
                if (i.TrimStart().StartsWith("Skin") && i.Contains("{"))
                {
                    doc.Morphs.Add(OsmMorph.Parse(ReadBlock(i, sr)));
                }
            }

            sr.ReadLine();
        }
Exemple #2
0
        static void ParseWeights(OsmDocument doc, StringReader sr)
        {
            sr.ReadLine();

            for (var i = sr.ReadLine(); i != null && i.TrimEnd() != "}"; i = sr.ReadLine())
            {
                if (!i.Contains("{"))
                {
                    doc.Weights = ReadBlock(i, sr).Select(_ => OsmWeight.Parse(_)).ToList();
                }
            }

            sr.ReadLine();
        }
Exemple #3
0
        public static OsmDocument Parse(string text)
        {
            var rt = new OsmDocument();

            using (var sr = new StringReader(text))
            {
                var header = sr.ReadLine();

                if (!header.StartsWith(DisplayName))
                {
                    throw new InvalidOperationException("invalid format");
                }

                sr.ReadLine();
                rt.ParentFileName = sr.ReadLine().Split(new[] { ';' }, 2).First();

                for (var i = sr.ReadLine(); i != null; i = sr.ReadLine())
                {
                    var key = i.Split(new[] { '{' }, 2).First().Trim();

                    switch (key)
                    {
                    case "Bone":
                        ParseBones(rt, sr);

                        break;

                    case "IK":
                        ParseIK(rt, sr);

                        break;

                    case "Mesh":
                        ParseWeights(rt, sr);

                        break;

                    case "Skin":
                        ParseMorphs(rt, sr);

                        break;
                    }
                }
            }

            return(rt);
        }
Exemple #4
0
        public static OsmDocument Parse(string text)
        {
            var rt = new OsmDocument();

            using (var sr = new StringReader(text))
            {
                var header = sr.ReadLine();

                if (!header.StartsWith(DisplayName))
                    throw new InvalidOperationException("invalid format");

                sr.ReadLine();
                rt.ParentFileName = sr.ReadLine().Split(new[] { ';' }, 2).First();

                for (var i = sr.ReadLine(); i != null; i = sr.ReadLine())
                {
                    var key = i.Split(new[] { '{' }, 2).First().Trim();

                    switch (key)
                    {
                        case "Bone":
                            ParseBones(rt, sr);

                            break;
                        case "IK":
                            ParseIK(rt, sr);

                            break;
                        case "Mesh":
                            ParseWeights(rt, sr);

                            break;
                        case "Skin":
                            ParseMorphs(rt, sr);

                            break;
                    }
                }
            }

            return rt;
        }
Exemple #5
0
        static void ParseWeights(OsmDocument doc, StringReader sr)
        {
            sr.ReadLine();

            for (var i = sr.ReadLine(); i != null && i.TrimEnd() != "}"; i = sr.ReadLine())
                if (!i.Contains("{"))
                    doc.Weights = ReadBlock(i, sr).Select(_ => OsmWeight.Parse(_)).ToList();

            sr.ReadLine();
        }
Exemple #6
0
        static void ParseMorphs(OsmDocument doc, StringReader sr)
        {
            sr.ReadLine();

            for (var i = sr.ReadLine(); i != null && i.TrimEnd() != "}"; i = sr.ReadLine())
                if (i.TrimStart().StartsWith("Skin") && i.Contains("{"))
                    doc.Morphs.Add(OsmMorph.Parse(ReadBlock(i, sr)));

            sr.ReadLine();
        }