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)); }
void removeRemoteUser(string socketId) { if (!remoteUsers.ContainsKey(socketId)) { return; } var remoteUser = remoteUsers[socketId]; OnPeerDropped.Invoke(remoteUser); Destroy(remoteUser.gameObject); }
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); }