public void Update()
        {
            if (Keyboard.GetState().IsKeyDown(Keys.Left) || Keyboard.GetState().IsKeyDown(Keys.A))
            {
                Camera.GetCamera().Position += Vector3.Cross(Camera.GetCamera().Up, Camera.GetCamera().Direction) * Camera.GetCamera().Speed;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Right) || Keyboard.GetState().IsKeyDown(Keys.D))
            {
                Camera.GetCamera().Position -= Vector3.Cross(Camera.GetCamera().Up, Camera.GetCamera().Direction) * Camera.GetCamera().Speed;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Up) || Keyboard.GetState().IsKeyDown(Keys.W))
            {
                Camera.GetCamera().Position += Camera.GetCamera().Direction *
                                               Camera.GetCamera().Speed;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Down) || Keyboard.GetState().IsKeyDown(Keys.S))
            {
                Camera.GetCamera().Position -= Camera.GetCamera().Direction *
                                               Camera.GetCamera().Speed;
            }

            if (Mouse.GetState() != _prevMouseState)
            {
                Camera.GetCamera().Direction = Vector3.Transform(Camera.GetCamera().Direction,
                                                                 Matrix.CreateFromAxisAngle(Vector3.Normalize(Camera.GetCamera().Up),
                                                                                            (-MathHelper.PiOver4 / 150) *
                                                                                            (Mouse.GetState().X - _prevMouseState.X)
                                                                                            ));


                Camera.GetCamera().Direction = Vector3.Transform(Camera.GetCamera().Direction,
                                                                 Matrix.CreateFromAxisAngle(Vector3.Normalize(Vector3.Cross(Camera.GetCamera().Up, Camera.GetCamera().Direction)),
                                                                                            (MathHelper.PiOver4 / 100) *
                                                                                            (Mouse.GetState().Y - _prevMouseState.Y)
                                                                                            ));


                // Reset PrevMouseState
                Mouse.SetPosition(App.GetApp().Graphics.PreferredBackBufferWidth / 2, App.GetApp().Graphics.PreferredBackBufferHeight / 2);
            }

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back ==
                ButtonState.Pressed || Keyboard.GetState().IsKeyDown(
                    Keys.Escape))
            {
                App.GetApp().Exit();
            }
        }
        public void Draw()
        {
            try
            {
                Camera.GetCamera().Draw();

                foreach (var obj in _objectsToRender)
                {
                    if (obj != null)
                    {
                        obj.Draw();
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Log.Warn("Unchandled expeption in Scene.Draw:" + e);
            }
        }