Пример #1
0
 private void UpdateLocalPeerId(P2PPeer peer)
 {
     if (this.LocalPeer.GetHostId() != peer.GetHostId())
     {
         this.LocalPeer.SetHostId(peer.GetHostId());
     }
 }
Пример #2
0
 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;
 }
Пример #3
0
    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);
    }
Пример #4
0
 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;
 }
Пример #5
0
 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);
     }
 }
Пример #6
0
 public void SetFrom(P2PPeer other)
 {
     this.m_HostId  = other.GetHostId();
     this.m_Address = other.m_Address;
 }
Пример #7
0
 public void Write(P2PPeer peer)
 {
     this.Write(peer.GetHostId());
     this.Write(peer.m_Address);
 }
Пример #8
0
 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);
     }
 }
Пример #9
0
    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);
    }
Пример #10
0
    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);
    }
Пример #11
0
    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);
    }