Evento do mouse não atualizará a rotação da câmera em winforms
Meu aplicativo tem um painel personalizado usado para exibir a tela XNA dentro de um WinForm. No momento, exibi um modelo de teste sem problemas e agora estou trabalhando no movimento da câmera. Minha câmera é uma câmera livre (não é obrigado a olhar para qualquer alvo específico), mas eu tenho tido problemas para obter o mouse para atualizar o guincho e tom da câmera em seu próprio eixo. Eu pensei que talvez algo estivesse errado com o meu método de atualização, mas esse não era o caso, porque as atualizações da câmera se moviam para frente e para trás usandoKeyboardState
. Mas eu não tenho idéia de por que oMouseState
não está 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();