public static VpdBone Parse(IEnumerable <string> block) { var rt = new VpdBone(); foreach (var i in block) { if (i.StartsWith("Bone") && i.Contains("{")) { rt.BoneName = i.Split(new[] { '{' }, 2).Last(); } else if (i == "}") { continue; } else { var fl = i.Split(new[] { ';' }, 2).First().Split(',').Select(float.Parse).ToArray(); if (fl.Length == 4) { rt.Quaternion = fl; } else { rt.Position = fl; } } } return(rt); }
public static VpdDocument Parse(string text) { var rt = new VpdDocument(); using (var sr = new StringReader(text)) { var header = sr.ReadLine(); if (header != DisplayName) { throw new InvalidOperationException("invalid format"); } sr.ReadLine(); rt.ParentFileName = sr.ReadLine().Split(new[] { ';' }, 2).First(); sr.ReadLine(); for (var i = sr.ReadLine(); i != null; i = sr.ReadLine()) { if (i.Contains("{")) { if (i.StartsWith("Bone")) { rt.Bones.Add(VpdBone.Parse(new[] { i } .Concat(Util.Repeat(sr) .Select(_ => _.ReadLine()) .TakeWhile(_ => _.Trim() != "}")))); } else if (i.StartsWith("Morph")) { rt.Morphs.Add(VpdMorph.Parse(new[] { i } .Concat(Util.Repeat(sr) .Select(_ => _.ReadLine()) .TakeWhile(_ => _.Trim() != "}")))); } } } } return(rt); }
public static VpdBone Parse(IEnumerable<string> block) { var rt = new VpdBone(); foreach (var i in block) if (i.StartsWith("Bone") && i.Contains("{")) rt.BoneName = i.Split(new[] { '{' }, 2).Last(); else if (i == "}") continue; else { var fl = i.Split(new[] { ';' }, 2).First().Split(',').Select(float.Parse).ToArray(); if (fl.Length == 4) rt.Quaternion = fl; else rt.Position = fl; } return rt; }