65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
using Encompass;
|
|
using KavTest.Components;
|
|
using KavTest.Messages;
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Input;
|
|
|
|
namespace KavTest.Engines
|
|
{
|
|
[Reads(typeof(CameraComponent))]
|
|
[Sends(
|
|
typeof(MoveCameraMessage),
|
|
typeof(RotateCameraMessage)
|
|
)]
|
|
public class InputEngine : Engine
|
|
{
|
|
private int centerX;
|
|
private int centerY;
|
|
|
|
public InputEngine(int centerX, int centerY)
|
|
{
|
|
System.Console.WriteLine(centerX);
|
|
System.Console.WriteLine(centerY);
|
|
this.centerX = centerX;
|
|
this.centerY = centerY;
|
|
Mouse.SetPosition(centerX, centerY);
|
|
System.Console.WriteLine(Mouse.GetState().X);
|
|
}
|
|
|
|
public override void Update(double dt)
|
|
{
|
|
var keyboardState = Keyboard.GetState();
|
|
var mouseState = Mouse.GetState();
|
|
|
|
if (keyboardState.IsKeyDown(Keys.W))
|
|
{
|
|
SendMessage(new MoveCameraMessage(new Vector3(0, 0, -5)));
|
|
}
|
|
|
|
if (keyboardState.IsKeyDown(Keys.A))
|
|
{
|
|
SendMessage(new MoveCameraMessage(new Vector3(-5, 0, 0)));
|
|
}
|
|
|
|
if (keyboardState.IsKeyDown(Keys.S))
|
|
{
|
|
SendMessage(new MoveCameraMessage(new Vector3(0, 0, 5)));
|
|
}
|
|
|
|
if (keyboardState.IsKeyDown(Keys.D))
|
|
{
|
|
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>())
|
|
{
|
|
var cameraEntity = ReadEntity<CameraComponent>();
|
|
SendMessage(new RotateCameraMessage(cameraEntity, mouseMovement.X, mouseMovement.Y));
|
|
}
|
|
}
|
|
}
|
|
}
|