示例#1
0
    public override void Serialize(DataWriter writer)
    {
        base.Serialize(writer);

        writer.Write(playersData.Count);

        for (int i = 0; i < playersData.Count; i++)
        {
            PlayerSnapshotData playerData = playersData[i];
            writer.Write(playerData.playerId);
            writer.Write(playerData.position);
            writer.Write((int)playerData.team);
        }

        writer.Write(ballPosition);
    }
示例#2
0
    public override void Deserialize(IPEndPoint remote, DataReader reader)
    {
        base.Deserialize(remote, reader);

        int playerAmount = reader.GetInteger();

        playersData.Clear();

        for (int i = 0; i < playerAmount; i++)
        {
            int                playerId       = reader.GetInteger();
            Vector3            playerPosition = reader.GetVector3();
            Team               team           = (Team)reader.GetInteger();
            PlayerSnapshotData playerData     = new PlayerSnapshotData(playerId, playerPosition, team);
            playersData.Add(playerData);
        }

        ballPosition = reader.GetVector3();
    }
    public void Simulate(uint tickIndex)
    {
        if (_playerRegistry.Players.Count == 0)
        {
            return;
        }

        _playersData.Clear();

        foreach (ControlledPlayer player in _playerRegistry.ControlledPlayers)
        {
            var playerData = new PlayerSnapshotData(player.PlayerId, player.transform.position, player.Team);
            _playersData.Add(playerData);
        }

        var message = new SnapshotMessage(_playersData, _ball.transform.position);

        _server.SendToAll(message);
    }