public void Send(short msgCode, NetworkConnection conn, MessageBase msg, NetworkMessagePackgeCallback callback = null) { if (!conn.isReady || !conn.isConnected) { Wait(conn, () => Send(msgCode, conn, msg, callback)); return; } if (callback != null) { RegisterMessaging(callback); } NetworkServer.SendToClient(conn.connectionId, msgCode, msg); }
internal override void AddPlayer(NetworkConnection conn) { if (!NetworkServer.active) return; if (conn.hostId == -1) { DispatchOnPlayerConnected(LocalPlayer); _serverMessaging.SendToAll((short) NetworkMessages.AddPlayerOnClient, new PlayerMessage(LocalPlayer)); return; } if (_isWaitingPlayer) { _addPlayerQueue.Enqueue(() => AddPlayer(conn)); return; } _lastPlayerCallTime = Time.time; var callback = new NetworkMessagePackgeCallback((short) NetworkMessages.SendPlayerToServer, (msg) => { _serverMessaging.UnregisterMessaging((short) NetworkMessages.SendPlayerToServer); var plMsg = msg.ReadMessage<PlayerMessage>(); AddToList(plMsg.player); DispatchOnPlayerConnected(plMsg.player); Debug.Log($"Client Connected to Server - {plMsg.player.connectionId}"); _serverMessaging.SendToAll((short) NetworkMessages.AddPlayerOnClient, plMsg); _isWaitingPlayer = false; if (_addPlayerQueue.Count > 0) _addPlayerQueue.Dequeue()(); }); _isWaitingPlayer = true; _serverMessaging.Send((short) NetworkMessages.GetPlayerFromClient, conn, new AllPlayersMessage(Players, conn.connectionId), callback); }
public void UnregisterMessaging(NetworkMessagePackgeCallback callback) { UnregisterMessaging(callback.msgType); }
public void RegisterMessaging(NetworkMessagePackgeCallback callback) { RegisterMessaging(callback.msgType, callback.callback); }
public virtual void Send(short msgCode, NetworkConnection conn, MessageBase msg, NetworkMessagePackgeCallback callback = null) { throw new NotImplementedException(); }