/// <summary> /// initializes a new simulation using the level provided /// </summary> /// <param name="level"></param> public void LoadLevel( string simulationLevel, string rendererLevel ) { if (simulationThread != null) { if (!paused) { simulationThread.Join(); } } if (simulationThread == null) { simulationThread = new SimulationThread(); } // reset old simulation if (simulation != null) { RendererUpdateQueue q1 = simulation.Close(); renderer.AddUpdateQueue(q1); } // init simulation simulation = new ProjectMagma.Simulation.Simulation(); RendererUpdateQueue q = simulation.Initialize(ContentManager, simulationLevel, rendererLevel, globalClock.PausableMilliseconds); renderer.AddUpdateQueue(q); #if !XBOX Debug.Assert( simulationThread == null || simulationThread.Thread == null || simulationThread.Thread.ThreadState == System.Threading.ThreadState.WaitSleepJoin ); #endif simulationThread.Reinitialize(this.simulation, this.renderer); // set camera //currentCamera = simulation.EntityManager["camera1"]; if (!paused) { simulationThread.Start(); } }