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