55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|