private void BuilderForm_Shown( object sender, EventArgs e )
        {
            if ( DesignMode )
            {
                return;
            }

            Viewer viewer = new Viewer( );
            try
            {
                SolarSystem system = new SolarSystem( );
                system.Planets.Add( BuilderState.Instance.Planet );

                viewer.Renderable = new RenderableList( new FpsDisplay( ), system );
            }
            catch ( Exception ex )
            {
                //	TODO: AP: Remove exception handler
                //	This is a bodge of an exception handler. Accessing BuilderState.Instance creates
                //	the planet, which can throw. So this try-catch assumes that this is the first access...
                AppLog.Exception( ex, "Error accessing planet instance" );
                ShowExceptionForm.Display( this, ex, "Error accessing planet instance ({0})", ex.Message );
                Close( );
                return;
            }
            viewer.PreRender +=
                delegate
                {
                    DebugText.Write( "Camera(m): {0}", ( ( IUniCamera )viewer.Camera ).Position.ToMetresString( ) );
                    DebugText.Write( "Camera Z: {0}", ( ( IUniCamera )viewer.Camera ).Frame.ZAxis );
                    DebugText.Write( "Camera 'Z: {0}", ( ( IUniCamera )viewer.Camera ).InverseFrame.ZAxis );
                };

            //	Control focusControl = ActiveControl;
            //	testDisplay.MouseEnter += delegate { testDisplay.Focus( ); };
            //	testDisplay.MouseLeave += delegate { testDisplay.Focus( ); };
            testDisplay.AddViewer( viewer );

            ICommandUser user = CommandUser.Default;
            viewer.Camera = CreateCamera( user );
        }
        private void GameClientForm_FormClosing( object sender, FormClosingEventArgs e )
        {
            m_DockingManager.SaveConfigToFile( m_ClientSetupFile, Encoding.ASCII );

            if ( m_SolarSystem != null )
            {
                m_SolarSystem.Dispose( );
                m_SolarSystem = null;
            }
            Graphics.Renderer.Dispose( );
        }
        private void GameClientForm_Shown( object sender, EventArgs e )
        {
            if ( DesignMode )
            {
                return;
            }

            gameDisplay.OnBeginPaint += delegate { GameProfiles.Game.Rendering.Begin( ); };
            gameDisplay.OnEndPaint += delegate
                                      {
                                        GameProfiles.Game.Rendering.End( );
                                        GameProfiles.Game.Rendering.Reset( );
                                      };

            UniPoint3 initialViewPos = new UniPoint3( );

            try
            {
                m_SolarSystem = CreateSolarSystem( initialViewPos );
            }
            catch ( Exception ex )
            {
                AppLog.Exception( ex, "Error occurred creating the solar system" );
                ErrorMessageBox.Show( this, Resources.ErrorCreatingSolarSystem, ex );
                Close( );
                return;
            }

            //	Load the game viewer
            try
            {
                LoadParameters loadParams = new LoadParameters( );
                loadParams.Properties[ "user" ] = m_User;
                Viewer viewer = ( Viewer )AssetManager.Instance.Load( "Viewers/TestGameViewer.components.xml", loadParams );
                viewer.Renderable = m_SolarSystem;
                ( ( IUniCamera )viewer.Camera ).Position.Z = initialViewPos.Z;

                gameDisplay.AddViewer( viewer );
            }
            catch ( Exception ex )
            {
                AppLog.Exception( ex, "Error occurred creating game viewer" );
                ErrorMessageBox.Show( this, Resources.ErrorCreatingGameViewer, ex );
                Close( );
                return;
            }

            //	Load the game controls
            try
            {
                CommandInputTemplateMap[] gameControlMaps = new CommandInputTemplateMap[]
                    {
                        ( CommandInputTemplateMap )AssetManager.Instance.Load( "Input/TestTrackingCameraInputs.components.xml" ),
                        ( CommandInputTemplateMap )AssetManager.Instance.Load( "Input/HeadCameraInputs.components.xml" )
                    };
                foreach ( Viewer viewer in gameDisplay.Viewers )
                {
                    foreach ( CommandInputTemplateMap gameControlMap in gameControlMaps )
                    {
                        gameControlMap.BindToInput( new InputContext( viewer ), m_User );
                    }
                }
            }
            catch ( Exception ex )
            {
                AppLog.Exception( ex, "Error occurred creating game controls" );
                ErrorMessageBox.Show( this, Resources.ErrorCreatingGameControls, ex );
            }
        }
        private static SolarSystem CreateSolarSystem( UniPoint3 initialViewPos )
        {
            SolarSystem system = new SolarSystem( );

            SpherePlanet planet = new SpherePlanet( null, "TEST0", 80000.0 );
            initialViewPos.Z = planet.Radius + UniUnits.Metres.ToUniUnits( 10000 );
            //SpherePlanet moon = new SpherePlanet( new CircularOrbit( planet, 1600000.0, TimeSpan.FromSeconds( 60 ) ), "TEST1", 30000.0f );
            //SpherePlanet moon1 = new SpherePlanet( new CircularOrbit( moon, 500000.0, TimeSpan.FromSeconds( 60 ) ), "TEST2", 100000.0f );
            //moon.Moons.Add( moon1 );
            //planet.Moons.Add( moon );

            system.Planets.Add( planet );
            //system.Planets.Add( moon );
            //system.Planets.Add( moon1 );

            return system;
        }