KavTest/KavTest/Engines/InputEngine.cs

59 lines
1.6 KiB
C#
Raw Normal View History

2020-08-06 07:00:02 +00:00
using Encompass;
2020-08-06 21:21:34 +00:00
using KavTest.Components;
2020-08-06 07:00:02 +00:00
using KavTest.Messages;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
namespace KavTest.Engines
{
2020-09-19 08:06:50 +00:00
[Reads(typeof(PerspectiveCameraComponent))]
2020-08-06 21:21:34 +00:00
[Sends(
typeof(MoveCameraMessage),
typeof(RotateCameraMessage)
)]
2020-08-06 07:00:02 +00:00
public class InputEngine : Engine
{
private Game Game { get; }
public InputEngine(Game game)
{
Game = game;
}
2020-08-06 07:00:02 +00:00
public override void Update(double dt)
{
var keyboardState = Keyboard.GetState();
2020-08-06 21:21:34 +00:00
var mouseState = Mouse.GetState();
2020-08-06 07:00:02 +00:00
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)));
}
2020-08-06 21:21:34 +00:00
if (Game.IsActive)
2020-08-06 21:21:34 +00:00
{
2020-09-19 08:06:50 +00:00
if (SomeComponent<PerspectiveCameraComponent>())
{
2020-09-19 08:06:50 +00:00
var cameraEntity = ReadEntity<PerspectiveCameraComponent>();
SendMessage(new RotateCameraMessage(cameraEntity, -mouseState.X, -mouseState.Y));
}
2020-08-06 21:21:34 +00:00
}
2020-08-06 07:00:02 +00:00
}
}
}