/// <summary>
 /// Called when a new scene is opened
 /// </summary>
 /// <param name="state">Opened scene's edit state</param>
 private void OnSceneOpened( SceneEditState state )
 {
     state.SelectedObjects.ObjectSelected += ObjectSelected;
     state.SelectedObjects.ObjectDeselected += ObjectDeselected;
 }
        /// <summary>
        /// Called when a scene is opened for editing
        /// </summary>
        /// <param name="state">Edit state of the new scene</param>
        protected virtual void OnSceneOpened( SceneEditState state )
        {
            state.UndoStack.ActionAdded += UndoStackChanged;
            state.UndoStack.ActionUndone += UndoStackChanged;
            state.UndoStack.ActionRedone += UndoStackChanged;

            //	Get all viewers to show the new scene
            foreach ( Viewer viewer in display.Viewers )
            {
                viewer.Renderable = state.EditorScene;
            }
        }
 /// <summary>
 /// Called when a scene is about to be closed
 /// </summary>
 /// <param name="state">Closing scene's edit state</param>
 private void OnSceneClosed( SceneEditState state )
 {
     state.SelectedObjects.ObjectSelected -= ObjectSelected;
     state.SelectedObjects.ObjectDeselected -= ObjectDeselected;
 }
        /// <summary>
        /// Called prior to a scene being closed for editing
        /// </summary>
        /// <param name="state">Edit state of the closing scene</param>
        protected virtual void OnSceneClosed( SceneEditState state )
        {
            state.UndoStack.ActionAdded -= UndoStackChanged;
            state.UndoStack.ActionUndone -= UndoStackChanged;
            state.UndoStack.ActionRedone -= UndoStackChanged;

            //	Get all viewers to stop showing stuff
            foreach ( Viewer viewer in display.Viewers )
            {
                viewer.Renderable = null;
            }
        }