private void AddPeer(NetZone zone, NetConnection connection) { if (!connection.IsPeer && !connection.IsServer) { return; } AddPeerSelf(zone); if (!Socket.EndpointConnected(zone.ServerEndpoint)) { Socket.ConnectToPeer(zone.ServerEndpoint); } }
private void ReceiveCreateView(NetMessage message, NetConnection server) { if (!server.IsServer && !server.IsPeer) { return; } int viewId = (int)message.Parameters[0]; int group = (int)message.Parameters[1]; string prefabRoot = (string)message.Parameters[2]; var stream = (NetStream)message.Parameters[3]; NetView.Relation relation = default(NetView.Relation); NetConnection controller = null; switch (message.MessageId) { case (int)ViewCmd.CreateOwnerView: controller = Socket.Self; relation = NetView.Relation.Owner; break; case (int)ViewCmd.CreatePeerView: relation = NetView.Relation.Peer; break; case (int)ViewCmd.CreateCreatorView: server = Socket.Self; relation = NetView.Relation.Creator; break; case (int)ViewCmd.CreateProxyView: relation = NetView.Relation.Proxy; break; } if (relation == NetView.Relation.Creator || relation == NetView.Relation.Peer) { var ipendpoint = (IPEndPoint)message.Parameters[4]; if (ipendpoint != null) { if (Socket.EndpointConnected(ipendpoint)) { controller = Socket.EndpointToConnection(ipendpoint); } else { NetLog.Error("Failed to create view, controller endpoint not connected: " + ipendpoint); } } } var view = CreateView(controller, server, viewId, group, prefabRoot, relation); view.TriggerReadInstantiateData(stream); if (OnNetViewCreated != null) { OnNetViewCreated(view); } }
void ConnectToZone(int count, IPEndPoint ep, NetConnection conn) { if (!conn.IsServer) { return; } if (!pendingSetup.ContainsKey(conn)) { pendingSetup.Add(conn, count); } if (socket.EndpointConnected(ep)) { DecrementPending(conn); } else { pendingConn.Add(conn); Debug.Log("Connecting to" + conn.Address + ":" + conn.Port); pendingEp.Add(ep); if (!socket.ConnectingTo(ep)) { socket.Connect(ep); } } }