示例#1
0
 private void AddPeer(NetZone zone, NetConnection connection)
 {
     if (!connection.IsPeer && !connection.IsServer)
     {
         return;
     }
     AddPeerSelf(zone);
     if (!Socket.EndpointConnected(zone.ServerEndpoint))
     {
         Socket.ConnectToPeer(zone.ServerEndpoint);
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
 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);
         }
     }
 }