private void PopMode() { CurrentMode = ModeStack.Pop(); }
private void PushMode(MQOReadMode mode) { ModeStack.Push(CurrentMode); CurrentMode = mode; }
public void Load(string mqofile) { using(var r= new StreamReader(mqofile)) { CurrentMode = MQOReadMode.Root; var line = ""; while(null != (line= r.ReadLine())) { line = line.Trim(); if(line.EndsWith("{")) { switch(CurrentMode) { case MQOReadMode.Root: if(line.ToUpper().StartsWith("THUMBNAIL")) PushMode(MQOReadMode.Thumbnail); else PushMode(MQOReadMode.Unknown); if(line.StartsWith("THUMBNAIL")) PushMode(MQOReadMode.Vertex); else if(line.StartsWith("SCENE")) PushMode(MQOReadMode.Scene); else if(line.StartsWith("MATERIAL")) PushMode(MQOReadMode.Material); else if(line.StartsWith("OBJECT")) OnObject(line); else PushMode(MQOReadMode.Unknown); break; case MQOReadMode.Object: if(line.StartsWith("VERTEX")) PushMode(MQOReadMode.Vertex); else if(line.StartsWith("FACE")) PushMode(MQOReadMode.Face); else PushMode(MQOReadMode.Unknown); break; default: PushMode(MQOReadMode.Unknown); break; } } else if(line.StartsWith("}")) { PopMode(); } else { switch(CurrentMode) { case MQOReadMode.Object: case MQOReadMode.Root: case MQOReadMode.Material: case MQOReadMode.Vertex: case MQOReadMode.Face: break; } } } } }