using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FlaxEngine.Networking; using FlaxEngine; namespace Game; public struct WelcomePlayerMessage { public struct PlayerInfo { public uint playerId; public Float3 playerPosition; } public ulong frame; public float time; public PlayerInfo[] players; public static WelcomePlayerMessage Read(ref NetworkMessage networkMessage) { WelcomePlayerMessage packet = new WelcomePlayerMessage(); packet.frame = networkMessage.ReadUInt64(); packet.time = networkMessage.ReadSingle(); int numActors = (int)networkMessage.ReadUInt32(); packet.players = new PlayerInfo[numActors]; for (int i = 0; i < numActors; i++) { packet.players[i].playerId = networkMessage.ReadUInt32(); packet.players[i].playerPosition.X = networkMessage.ReadSingle(); packet.players[i].playerPosition.Y = networkMessage.ReadSingle(); packet.players[i].playerPosition.Z = networkMessage.ReadSingle(); } return packet; } public void Write(ref NetworkMessage networkMessage) { networkMessage.WriteByte((byte)GameModeMessageType.WelcomePlayer); networkMessage.WriteUInt64(frame); networkMessage.WriteSingle(time); networkMessage.WriteUInt32((uint)players.Length); foreach (PlayerInfo player in players) { networkMessage.WriteUInt32(player.playerId); networkMessage.WriteSingle(player.playerPosition.X); networkMessage.WriteSingle(player.playerPosition.Y); networkMessage.WriteSingle(player.playerPosition.Z); } } }