El evento del mouse no actualiza la rotación de la cámara en los formularios de Windows
Mi aplicación tiene un panel personalizado que se usa para mostrar la pantalla XNA dentro de un WinForm. Actualmente he mostrado un modelo de prueba sin problemas y ahora estoy trabajando en el movimiento de la cámara. Mi cámara es una cámara libre (no está obligada a mirar a ningún objetivo específico), pero he tenido problemas para que el mouse actualice la orientación de la cámara en su propio eje. Pensé que tal vez algo estaba mal con mi método de actualización, pero ese no era el caso, porque la cámara se actualiza avanzando y retrocediendo usandoKeyboardState
. Pero no tengo idea de por qué elMouseState
no esta funcionando
FreeCamera.cs
using XNAButtonState = Microsoft.Xna.Framework.Input.ButtonState;
....
MouseState pastMouseState;
private float rotationSpeed_ = 1f / 60f;
private float yaw_, pitch_;
...
private void updateMatrix()
{
Matrix rotationMatrix = Matrix.CreateRotationX(pitch_) *
Matrix.CreateRotationY(yaw_);
Vector3 forward = new Vector3(0, 0, 1);
forward = Vector3.Transform(forward, rotationMatrix);
viewMatrix_ = Matrix.CreateLookAt(Position, Position + forward, Up);
projectionMatrix_ = Matrix.CreatePerspectiveFieldOfView(
MathHelper.PiOver4, 16.0f / 9.0f, 0.1f, 100000.0f);
}
private void cameraInput()
{
KeyboardState keyboardState = Keyboard.GetState(); <-- updates
currentMouseState = Mouse.GetState(); <-- not updating
if (currentMouse.LeftButton == XNAButtonState.Pressed)
pitch_ -= rotationSpeed_;
if (keyboardState.IsKeyDown(Keys.W))
move(1);
if (keyboardState.IsKeyDown(Keys.S))
move(-1);
pastMouseState = currentMouseState;
}
public void update()
{
cameraInput();
updateMatrix();