Axiom.RenderSystems.DirectX9.D3DRenderWindow.WindowMovedOrResized C# (CSharp) Method

WindowMovedOrResized() public method

public WindowMovedOrResized ( ) : void
return void
		public override void WindowMovedOrResized()
		{
			if ( GetForm( hWnd ) == null || GetForm( hWnd ).WindowState == SWF.FormWindowState.Minimized )
			{
				return;
			}

			// top and left represent outer window position
			top = hWnd.Top;
			left = hWnd.Left;
			// width and height represent drawable area only
			int width = hWnd.ClientRectangle.Width;
			int height = hWnd.ClientRectangle.Height;
			LogManager.Instance.Write( "[D3D] RenderWindow Resized - new dimensions L:{0},T:{1},W:{2},H:{3}", hWnd.Left, hWnd.Top, hWnd.ClientRectangle.Width, hWnd.ClientRectangle.Height );

			if ( Width == width && Height == height )
			{
				return;
			}

			if ( _isSwapChain )
			{
				D3D.PresentParameters pp = _d3dpp;

				pp.BackBufferWidth = width;
				pp.BackBufferHeight = height;

				_swapChain.Dispose();
				_swapChain = null;

				try
				{
					_swapChain = new D3D.SwapChain( D3DDevice, pp );
					_d3dpp = pp;

					this.width = width;
					this.height = height;
				}
				catch ( Exception )
				{
					LogManager.Instance.Write( "Failed to reset device to new dimensions {0}x{1}. Trying to recover.", width, height );
					try
					{
						_swapChain = new D3D.SwapChain( D3DDevice, _d3dpp );
					}
					catch ( Exception ex )
					{
						throw new Exception( "Reset window to last size failed.", ex );
					}
				}
			}
			else // primary windows must reset the device
			{
				_d3dpp.BackBufferWidth = this.width = width;
				_d3dpp.BackBufferHeight = this.height = height;
			}

			// Notify viewports of resize
			foreach ( Viewport entry in this.ViewportList.Values )
			{
				//entry.UpdateDimensions();
			}
		}