/// <summary> /// Load a scene. If the scene is already loaded, the existing instance is returned. /// </summary> /// <param name="sceneFileName"></param> /// <returns></returns> public TorqueSceneData Load(string sceneFileName) { // already loaded? TorqueSceneData scene; if (_loadedScenes.TryGetValue(sceneFileName, out scene)) { _lastLoadedScene = scene; return scene; } // no, create new scene scene = new TorqueSceneData(); scene.PreloadMaterials = true; scene.Deserializer = Deserializer; // we'll intercept content load exceptions, so that we display a (hopefully) helpful message for dealing with them try { // deserialize scene.Load(sceneFileName); } catch (ContentLoadException e) { string msg = "SceneLoader.Load - Error loading XML file: \'" + sceneFileName + "\', ContentLoadException: \'" + e.Message + "\' If you are using TXB, make sure that you have saved your project, then rebuild your game in Express."; Assert.Fatal(false, msg); #if !XBOX if (_exitOnFailedLoad) System.Environment.Exit(GameExitCodes.SceneLoaderError); // this is here so that TXB knows we failed due to a content load problem #endif throw e; // in case we did not exit } // add scene to loaded list _loadedScenes.Add(sceneFileName, scene); _lastLoadedScene = scene; // call delegate if (_onSceneLoaded != null) _onSceneLoaded(sceneFileName, scene); return scene; }
/// <summary> /// Load the named level and return a new TorqueSceneData instance. In order to customize the Level data load process you must /// create the TorqueSceneData object yourself and call Load on it. /// </summary> /// <param name="filename">The filename to load</param> /// <param name="extraAssemblies">List of assemblies to add to the deserializer's assembly list, for finding new types. Usually can be null.</param> /// <returns>A TorqueSceneData instance</returns> public static TorqueSceneData LoadScene(string filename, List<Assembly> extraAssemblies) { TorqueSceneData ld = new TorqueSceneData(); return ld.Load(filename, extraAssemblies); }