Example #1
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Load a font object.
            m_font = Content.Load <SpriteFont>("Fonts/Verdana");

            // Create a screen-UI.
            m_screenUI = new SpriteBatch(GraphicsDevice);

            // Load scene objects from scene description.
            m_sceneRoot = SceneObject.CreateFromSceneDescription(Content, m_scene);

            // Set up camera.
            m_sceneCamera = new Camera();

            // Create renderer.
            m_renderer = new LightPrePassRenderer(m_graphics.GraphicsDevice, Content, m_sceneCamera);
            m_renderer.OutputRenderTargetWidth  = Window.ClientBounds.Width;
            m_renderer.OutputRenderTargetHeight = Window.ClientBounds.Height;
            Window.ClientSizeChanged           += new EventHandler <EventArgs>(OnWindowClientSizeChanged);

            // Set up camera controller.
            m_cameraController = new FlyCameraController(m_sceneCamera, Window);
            m_cameraController.MovementSpeed = 20.0f;
            m_cameraController.RotationSpeed = 0.1f;
            m_cameraController.SetCameraProjectionParameters(MathHelper.PiOver4, m_renderer.OutputRenderTargetAspectRatio, 0.1f, 1000);

            // Add scene objects.
            m_renderer.AddScene(m_sceneRoot);
        }
Example #2
0
        private void PositionCamera()
        {
            Camera camera = Camera.main;

            camera.transform.position = new Vector3(0, 1.8f, 0);

            Bounds bounds = new Bounds();

            Renderer[] renderers = currentObject.GetComponentsInChildren <Renderer>();
            foreach (Renderer renderer in renderers)
            {
                bounds.Encapsulate(renderer.bounds);
            }
            Vector3 center = bounds.center;

            float r = Math.Max(Math.Max(bounds.extents.x, bounds.extents.z), bounds.extents.y);
            float v = Camera.main.fieldOfView;
            float h = Camera.main.fieldOfView;

            float z = (float)Math.Max(r / Math.Sin(v), r / Math.Sin(h)); // = r / Math.Sin(Math.Min(v, h));

            Vector3 pos = camera.transform.position;

            pos.z = Math.Abs(z);
            //pos.y = Math.Abs(z);

            camera.transform.position = pos;

            if (lookAt != null)
            {
                DestroyImmediate(lookAt);
            }
            lookAt = new GameObject("Look At Me");
            lookAt.transform.position = center;
            FlyCameraController controller = camera.GetComponent <FlyCameraController>();

            controller.LookAt = currentObject;
        }