예제 #1
0
        internal void AddAuthentifiedPeer(IPeer peer)
        {
            if (peer == null)
            {
                _logger?.Warn("Peer is null, cannot add.");
                return;
            }

            if (!peer.IsAuthentified)
            {
                _logger?.Warn($"Peer not authentified, cannot add {peer}");
                return;
            }

            lock (_peerListLock)
            {
                _authentifyingPeer.Remove(peer);

                if (GetPeer(peer) != null)
                {
                    peer.Dispose(); // todo
                    return;
                }

                _peers.Add(peer);
            }

            _logger?.Info($"Peer authentified and added : {{ addr: {peer}, key: {peer.DistantNodeAddress.ToHex()}, bp: {peer.IsBp} }}");

            peer.MessageReceived += OnPeerMessageReceived;

            PeerEvent?.Invoke(this, new PeerEventArgs(peer, PeerEventType.Added));
        }
예제 #2
0
    void removeRemoteUser(string socketId)
    {
        if (!remoteUsers.ContainsKey(socketId))
        {
            return;
        }

        var remoteUser = remoteUsers[socketId];

        OnPeerDropped.Invoke(remoteUser);
        Destroy(remoteUser.gameObject);
    }
예제 #3
0
    void addRemoteUser(string socketId)
    {
        if (socketId == this.SocketId)
        {
            return;
        }
        if (remoteUsers.ContainsKey(socketId))
        {
            return;
        }

        var remoteUserObject = Instantiate(RemoteUserPrefab);
        var remoteUser       = remoteUserObject.GetComponent <RemoteUser>();

        remoteUser.Parent          = this;
        remoteUser.SocketId        = socketId;
        remoteUser.gameObject.name = "Remote User: " + socketId;
        remoteUser.transform.SetParent(this.transform);
        remoteUser.transform.localPosition = new Vector3(Random.Range(-0.5f, 0.5f), 0, 0);
        remoteUser.transform.localRotation = Quaternion.identity;
        remoteUsers.Add(socketId, remoteUser);

        OnPeerJoined.Invoke(remoteUser);
    }