Beispiel #1
0
 protected void OnResize(bool forceResize)
 {
     if (WindowState == FormWindowState.Minimized)
     {
         return; // don't want to change the camera when we minimize the screen
     }
     if (SpriteManager.IsInitialized)
     {
         FlatRedBallServices.ForceClientSizeUpdates();
     }
 }
        protected void OnResize(bool forceResize)
        {
            if (WindowState == FormWindowState.Minimized)
            {
                return; // don't want to change the camera when we minimize the screen
            }
            if (SpriteManager.IsInitialized)
            {
                FlatRedBallServices.ForceClientSizeUpdates();
                //		SpriteManager.FindDevice();

                bool updateFieldOfView = forceResize ||
                                         SpriteManager.Cameras[0].DestinationRectangle.Height != DisplayRectangle.Height;

                if (SpriteManager.Camera.Orthogonal == false)
                {
                    float ratioChange = DisplayRectangle.Height / (float)SpriteManager.Cameras[0].DestinationRectangle.Height;


                    SpriteManager.Cameras[0].DestinationRectangle = this.DisplayRectangle;

                    if (updateFieldOfView)
                    {
                        double yAt600        = Math.Sin(Math.PI / 8.0);
                        double xAt600        = Math.Cos(Math.PI / 8.0);
                        double desiredYAt600 = yAt600 * (double)DisplayRectangle.Height / 600.0;
                        float  desiredAngle  = (float)Math.Atan2(desiredYAt600, xAt600);
                        SpriteManager.Cameras[0].FieldOfView = 2 * desiredAngle;
                    }
                }
                else
                {
                    double unitPerPixel = SpriteManager.Camera.OrthogonalHeight / SpriteManager.Cameras[0].DestinationRectangle.Height;

                    SpriteManager.Camera.OrthogonalHeight         = (float)(DisplayRectangle.Height * unitPerPixel);
                    SpriteManager.Camera.OrthogonalWidth          = (float)(DisplayRectangle.Width * unitPerPixel);
                    SpriteManager.Cameras[0].DestinationRectangle = this.DisplayRectangle;

                    SpriteManager.Cameras[0].FixAspectRatioYConstant();
                    if (updateFieldOfView)
                    {
                        double yAt600        = Math.Sin(Math.PI / 8.0);
                        double xAt600        = Math.Cos(Math.PI / 8.0);
                        double desiredYAt600 = yAt600 * (double)DisplayRectangle.Height / 600.0;
                        float  desiredAngle  = (float)Math.Atan2(desiredYAt600, xAt600);
                        SpriteManager.Cameras[0].FieldOfView = 2 * desiredAngle;
                    }
                }

                // Shifts are no longer needed - top left is 0,0
                //GuiManager.ShiftBy(
                //    -(float)(TopLeftPixel.X + SpriteManager.Cameras[0].XEdge),
                //    -(float)(SpriteManager.Cameras[0].YEdge - TopLeftPixel.Y),
                //    false // Don't shift SpriteFrame GUI
                //    );

                TopLeftPixel.X = -SpriteManager.Cameras[0].XEdge;
                TopLeftPixel.Y = SpriteManager.Cameras[0].YEdge;

                //GuiManager.RefreshTextSize();
            }
        }