protected override bool FrameStarted(Mogre.FrameEvent evt) { if (reloadLevel) { levelView.Destroy(); if (levelToLoad != null) { currentLevel.Dispose(); } SceneMgr.ClearScene(); EffectsManager.Singleton.Clear(); if (levelToLoad != null) { filename = levelToLoad; currentLevel = new Level(filename, this, EngineConfig.CurrentPlayerPlaneType); } levelView = new LevelView(this, this); levelView.OnRegisterLevel(currentLevel); levelView.SetVisible(true); reloadLevel = false; levelToLoad = null; mainWindow.BeginInvoke(new InvokeDelegate(mainWindow.OnLevelLoaded), (currentLevel.LevelParser)); foreach (ISceneTest test in this.gameTest.SceneTests) { test.Framework = this; test.OnRegisterLevel(currentLevel); } } if (base.FrameStarted(evt)) { if (levelView != null) { levelView.OnFrameStarted(evt); } return(true); } else { return(false); } }