/// <summary>
        /// Unload the specified scene object.  It is an error if the scene null or not loaded.
        /// </summary>
        /// <param name="scene">The scene object to unload.</param>
        public void Unload(TorqueSceneData scene)
        {
            Assert.Fatal(scene != null, "SceneLoader.Unload - Attempting to unload null scene.");
            Assert.Fatal(scene.Loaded, "SceneLoader.Unload - Specified scene not actually loaded");

            // unload
            scene.Unload();
            // remove from loaded scenes
            string keyToRemove = string.Empty;

            if (_loadedScenes.ContainsValue(scene))
            {
                foreach (string key in _loadedScenes.Keys)
                {
                    if (_loadedScenes[key] == scene)
                    {
                        keyToRemove = key;
                        break;
                    }
                }

                if (keyToRemove != string.Empty)
                    _loadedScenes.Remove(keyToRemove);
            }

            if (_lastLoadedScene == scene)
                _lastLoadedScene = null;

            // call delegate
            if (_onSceneUnloaded != null)
                _onSceneUnloaded(keyToRemove, scene);
        }