public void AddClientSide(NetworkViewID recieverId, NetworkMessageInfo info) { NetworkViewID senderViewId = Network.AllocateViewID(); this.glNetworkView.RPC("AddServerSide", info.sender, senderViewId); NetworkPlayer player = info.sender; ConnectionId playerid = NetworkPlayerToConnectionId(player); SingleEndpointConnection endpoint = mKnownPlayers[playerid]; NetworkView reciever = endpoint.gameObject.AddComponent <NetworkView>(); reciever.viewID = recieverId; reciever.stateSynchronization = NetworkStateSynchronization.Unreliable; NetworkView sender = endpoint.gameObject.AddComponent <NetworkView>(); sender.viewID = senderViewId; sender.stateSynchronization = NetworkStateSynchronization.Unreliable; endpoint.Receiver = reciever; endpoint.Sender = sender; endpoint.Init(); Debug.Log("Connection to " + playerid + " initialized"); NetworkEvent ev = new NetworkEvent(NetEventType.NewConnection, playerid, null); mEvents.Enqueue(ev); }
public void InitializeConnection(NetworkPlayer player) { //this runs on server side Debug.Log("New client connected. Initializing ..."); ConnectionId playerid = NextConnectionId(); mPlayerToConnectionId[player] = playerid; GameObject go = new GameObject("UnityPlayerConnection" + player); go.transform.parent = this.gameObject.transform; SingleEndpointConnection connection = go.AddComponent <SingleEndpointConnection>(); connection.Parent = this; connection.ConnectedUser = player; NetworkView sender = connection.gameObject.AddComponent <NetworkView>(); sender.viewID = Network.AllocateViewID(); //sender.observed = this; sender.stateSynchronization = NetworkStateSynchronization.Unreliable; //immediately turn off the sender on server side as it would spam to every client by default. //it will be turned on for the correct state after the client confirmed the createn of the counterpart for (int i = 0; i < Network.connections.Length; i++) { sender.SetScope(Network.connections[i], false); } connection.Sender = sender; mKnownPlayers[playerid] = connection; this.glNetworkView.RPC("AddClientSide", player, sender.viewID); }
public void Disconnect(ConnectionId id) { SingleEndpointConnection esc = null; mKnownPlayers.TryGetValue(id, out esc); if (esc != null) { Network.CloseConnection(esc.ConnectedUser, true); } }
public void AddServerSide(NetworkViewID id, NetworkMessageInfo info) { ConnectionId playerid = NetworkPlayerToConnectionId(info.sender); SingleEndpointConnection endpoint = mKnownPlayers[playerid]; NetworkView reciever = endpoint.gameObject.AddComponent <NetworkView>(); reciever.viewID = id; //reciever.observed = this; reciever.stateSynchronization = NetworkStateSynchronization.Unreliable; endpoint.Receiver = reciever; endpoint.Init(); Debug.Log("Connection to " + playerid + " initialized"); mPlayerToConnectionId[info.sender] = playerid; NetworkEvent ev = new NetworkEvent(NetEventType.NewConnection, playerid, null); mEvents.Enqueue(ev); }
private void OnConnectedToServer() { mDebugConnecting = false; Debug.Log("Connected to server. Initializing ..."); for (int i = 0; i < Network.connections.Length; i++) { NetworkPlayer player = Network.connections[i]; GameObject go = new GameObject("UnityPlayerConnection" + player); go.transform.parent = this.gameObject.transform; SingleEndpointConnection connection = go.AddComponent <SingleEndpointConnection>(); connection.Parent = this; connection.ConnectedUser = player; ConnectionId playerid = NextConnectionId(); mPlayerToConnectionId[player] = playerid; mKnownPlayers[playerid] = connection; } this.glNetworkView.RPC("InitializeConnection", RPCMode.Server, Network.player); }