using Fantasy; using Fantasy.Async; using Fantasy.Helper; using Fantasy.Network.Interface; namespace NB.Map; public class C2Map_MoveHandler : Route { protected override async FTask Run(MapUnit entity, C2Map_Move message) { var roomManageComponent = entity.Scene.GetComponent(); var roomId = entity.RoomId; var room = roomManageComponent.Get(roomId); if (room == null) { return; } // var mapUnitManageComponent = entity.Scene.GetComponent(); 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; } }