31 lines
1.1 KiB
C#
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)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|