PongFE/PongFE/Engines/PaddleMovementEngine.cs

31 lines
1.1 KiB
C#

using Encompass;
using PongFE.Components;
using PongFE.Messages;
namespace PongFE.Engines
{
[Reads(typeof(PaddleMoveSpeedComponent))]
[Receives(typeof(PaddleMoveMessage))]
[Sends(typeof(MotionMessage))]
public class PaddleMovementEngine : Engine
{
public override void Update(double dt)
{
foreach (ref readonly var message in ReadMessages<PaddleMoveMessage>())
{
if (HasComponent<PaddleMoveSpeedComponent>(message.Entity))
{
var directionMultiplier = message.PaddleMoveDirection == PaddleMoveDirection.Down ? 1 : -1;
ref readonly var paddleMoveSpeedComponent = ref GetComponent<PaddleMoveSpeedComponent>(message.Entity);
SendMessage(
new MotionMessage(
message.Entity,
new System.Numerics.Vector2(0, paddleMoveSpeedComponent.Speed * directionMultiplier * (float)dt)
)
);
}
}
}
}
}