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(); }
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(); }
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); }
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; }
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(); }
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(); }