use relative mouse extension

pull/1/head
cosmonaut 2020-08-06 16:22:24 -07:00
parent c97df29e28
commit 96b0990418
4 changed files with 6 additions and 23 deletions

2
FNA

@ -1 +1 @@
Subproject commit c665d2e08c25fb63e58e987b7c1af75af22aa010 Subproject commit d926c536dc34186d64464154c72e8ba2cc187ed8

2
Kav

@ -1 +1 @@
Subproject commit 55b1555df2ded543e623c8b5eb60d3a3fff9e32c Subproject commit 2d1a50e1c439e0d511de82eab6cd2481b1c011f8

View File

@ -13,26 +13,10 @@ namespace KavTest.Engines
)] )]
public class InputEngine : Engine public class InputEngine : Engine
{ {
private int centerX;
private int centerY;
public InputEngine(int centerX, int centerY)
{
this.centerX = centerX;
this.centerY = centerY;
Mouse.SetPosition(centerX, centerY);
System.Console.WriteLine("initialize mouse position");
System.Console.WriteLine(Mouse.GetState().X);
System.Console.WriteLine(Mouse.GetState().Y);
}
public override void Update(double dt) public override void Update(double dt)
{ {
var keyboardState = Keyboard.GetState(); var keyboardState = Keyboard.GetState();
var mouseState = Mouse.GetState(); var mouseState = Mouse.GetState();
System.Console.WriteLine("mouse position");
System.Console.WriteLine(mouseState.X);
System.Console.WriteLine(mouseState.Y);
if (keyboardState.IsKeyDown(Keys.W)) if (keyboardState.IsKeyDown(Keys.W))
{ {
@ -54,13 +38,10 @@ namespace KavTest.Engines
SendMessage(new MoveCameraMessage(new Vector3(5, 0, 0))); SendMessage(new MoveCameraMessage(new Vector3(5, 0, 0)));
} }
var mouseMovement = new Vector2(centerX - mouseState.X, centerY - mouseState.Y);
Mouse.SetPosition(centerX, centerY);
if (SomeComponent<CameraComponent>()) if (SomeComponent<CameraComponent>())
{ {
var cameraEntity = ReadEntity<CameraComponent>(); var cameraEntity = ReadEntity<CameraComponent>();
SendMessage(new RotateCameraMessage(cameraEntity, mouseMovement.X, mouseMovement.Y)); SendMessage(new RotateCameraMessage(cameraEntity, -mouseState.X, -mouseState.Y));
} }
} }
} }

View File

@ -27,6 +27,8 @@ namespace KavTest
Window.AllowUserResizing = true; Window.AllowUserResizing = true;
IsMouseVisible = true; IsMouseVisible = true;
Microsoft.Xna.Framework.Input.Mouse.IsRelativeMouseModeEXT = true;
} }
protected override void LoadContent() protected override void LoadContent()
@ -48,7 +50,7 @@ namespace KavTest
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/rustysphere.glb")) Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/rustysphere.glb"))
); );
WorldBuilder.AddEngine(new InputEngine(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2)); WorldBuilder.AddEngine(new InputEngine());
WorldBuilder.AddEngine(new AngularVelocityEngine()); WorldBuilder.AddEngine(new AngularVelocityEngine());
WorldBuilder.AddEngine(new MotionEngine()); WorldBuilder.AddEngine(new MotionEngine());
WorldBuilder.AddEngine(new CameraEngine()); WorldBuilder.AddEngine(new CameraEngine());