46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
using Fantasy;
|
|
using Fantasy.Async;
|
|
using Fantasy.Helper;
|
|
using Fantasy.Network.Interface;
|
|
|
|
namespace NB.Map;
|
|
|
|
public class C2Map_MoveHandler : Route<MapUnit, C2Map_Move>
|
|
{
|
|
protected override async FTask Run(MapUnit entity, C2Map_Move message)
|
|
{
|
|
var roomManageComponent = entity.Scene.GetComponent<RoomManageComponent>();
|
|
var roomId = entity.RoomId;
|
|
var room = roomManageComponent.Get(roomId);
|
|
if (room == null)
|
|
{
|
|
return;
|
|
}
|
|
// var mapUnitManageComponent = entity.Scene.GetComponent<MapUnitManageComponent>();
|
|
var notifyMessage = new Map2C_MoveNotify()
|
|
{
|
|
Id = entity.Id,
|
|
Position = message.Position,
|
|
Rotation = message.Rotation,
|
|
IsStop = message.IsStop,
|
|
Direction = message.Direction,
|
|
Timestamp = TimeHelper.Now
|
|
};
|
|
|
|
entity.Position.x = message.Position.x;
|
|
entity.Position.y = message.Position.y;
|
|
entity.Position.z = message.Position.z;
|
|
|
|
entity.Rotation.x = message.Rotation.x;
|
|
entity.Rotation.y = message.Rotation.y;
|
|
entity.Rotation.z = message.Rotation.z;
|
|
|
|
foreach (var (_, unit) in room.Units)
|
|
{
|
|
entity.Scene.NetworkMessagingComponent.SendInnerRoute(unit.GateRouteId, notifyMessage);
|
|
}
|
|
|
|
|
|
await FTask.CompletedTask;
|
|
}
|
|
} |