private void UpdateLocalPeerId(P2PPeer peer) { if (this.LocalPeer.GetHostId() != peer.GetHostId()) { this.LocalPeer.SetHostId(peer.GetHostId()); } }
public void ReplGiveOwnership(P2PPeer peer) { if (!this.ReplIsOwner() && this.ReplGetOwner() != P2PPeer.s_Invalid) { return; } if (ReplTools.IsPlayingAlone()) { if (P2PLogFilter.logError) { Debug.LogError("Trying to give ownership ower " + base.gameObject.name + " while playing alone!", this); } return; } ReplicationComponent.s_Writer.StartMessage(7); ReplicationComponent.s_Writer.Write(base.gameObject); ReplicationComponent.s_Writer.Write(peer.GetHostId()); ReplicationComponent.s_Writer.FinishMessage(); if (P2PLogFilter.logPedantic) { Debug.Log(string.Format("ReplGiveOwnership to {0} called for {1} guid: {2}", peer.GetHostId(), base.name, this.GetGuidComponent.GetGuid()), base.gameObject); } P2PSession.Instance.SendWriterTo(peer, ReplicationComponent.s_Writer, 0); this.m_TransferringOwnershipTo = peer; }
private bool StorePendingPeer(P2PPeer peer) { bool flag = false; if (peer.GetHostId() != P2PPeer.s_InvalidId) { for (int i = 0; i < this.m_Connections.Count; i++) { if (this.m_Connections[i] != null) { P2PPeer peer2 = this.m_Connections[i].m_Peer; if (peer2.IsSameAddress(peer)) { bool flag2 = !peer2.IsSameId(peer); this.m_Connections[i].m_Peer.SetFrom(peer); if (flag2) { this.OnConnected(this.m_Connections[i]); } flag = true; break; } } } } if (!flag) { this.m_PendingPeers.Add(peer); return(true); } return(false); }
public void OnPeerConnected(P2PPeer peer) { if (peer.GetHostId() == P2PPeer.s_InvalidId) { return; } this.m_GameObjectMapLock = true; Dictionary <GameObject, ReplicationComponent> .Enumerator enumerator = this.m_GameObjectMap.GetEnumerator(); while (enumerator.MoveNext()) { KeyValuePair <GameObject, ReplicationComponent> keyValuePair = enumerator.Current; ReplicationComponent value = keyValuePair.Value; if (!(value == null) && !(value.GetRelevanceComponent != null) && (value.ReplIsOwner() || (ReplTools.AmIMaster() && value.ReplGetOwner() == P2PPeer.s_Invalid))) { this.SpawnForPeer(value.gameObject, peer); } } enumerator.Dispose(); this.m_GameObjectMapLock = false; }
private void OnRelevanceDeactivated(P2PPeer peer) { if (this.ReplIsOwner() && peer != ReplTools.GetLocalPeer()) { if (P2PLogFilter.logPedantic) { Debug.Log(string.Format("OnRelevanceDeactivated called for peer {0} {1} guid {2} CanBeRemovedByRelevance {3}", new object[] { peer.GetHostId(), base.name, this.GetGuidComponent.GetGuid(), this.GetRelevanceComponent.CanBeRemovedByRelevance(false) })); } if (this.GetRelevanceComponent.CanBeRemovedByRelevance(false)) { Replicator.Singleton.DespawnForPeer(this, peer); return; } ReplicationComponent.s_SendToPeers.Reset(); ReplicationComponent.s_SendToPeers.Add(peer); this.ReplicationSend(false, ReplicationComponent.s_SendToPeers); } }
public void SetFrom(P2PPeer other) { this.m_HostId = other.GetHostId(); this.m_Address = other.m_Address; }
public void Write(P2PPeer peer) { this.Write(peer.GetHostId()); this.Write(peer.m_Address); }
private void OnRelevanceActivated(P2PPeer peer) { if (this.ReplIsOwner() && peer != ReplTools.GetLocalPeer()) { if (P2PLogFilter.logPedantic) { Debug.Log(string.Format("OnRelevanceActivated called for peer {0} {1} guid {2}", peer.GetHostId(), base.name, this.GetGuidComponent.GetGuid())); } Replicator.Singleton.SpawnForPeer(base.gameObject, peer); } }
public void SendWriterTo(P2PPeer peer, P2PNetworkWriter writer, int channel_id) { P2PConnection p2PConnection = this.FindConnection(peer); if (p2PConnection == null || !p2PConnection.m_IsReady) { if (P2PLogFilter.logError) { if (p2PConnection == null) { Debug.LogError("Trying to send data without connection for peer: " + peer.GetHostId()); return; } Debug.LogError("Trying to send data on unready connection connection_id:" + p2PConnection.m_ConnectionId); } return; } p2PConnection.SendWriter(writer, channel_id); }
public P2PPeer GetSessionMaster() { P2PPeer p2PPeer = this.LocalPeer; for (int i = 0; i < this.m_Connections.Count; i++) { if (this.m_Connections[i] != null && this.m_Connections[i].m_Peer.IsValid() && (p2PPeer == null || this.m_Connections[i].m_Peer.GetHostId() < p2PPeer.GetHostId())) { p2PPeer = this.m_Connections[i].m_Peer; } } return(p2PPeer); }
public bool DespawnForPeer(ReplicationComponent obj, P2PPeer peer) { P2PNetworkWriter p2PNetworkWriter = this.BuildDespawnWriter(obj); if (p2PNetworkWriter != null) { if (P2PLogFilter.logPedantic) { Debug.Log(string.Format("DespawnForPeer [{0}] called for {1} guid: {2}", peer.GetHostId(), obj.name, obj.GetGuidComponent.GetGuid()), obj); } P2PSession.Instance.SendWriterTo(peer, p2PNetworkWriter, 0); } return(p2PNetworkWriter != null); }