// Token: 0x060007D3 RID: 2003 RVA: 0x0003D98C File Offset: 0x0003BB8C private void RPC_ZDOData(ZRpc rpc, ZPackage pkg) { ZDOMan.ZDOPeer zdopeer = this.FindPeer(rpc); if (zdopeer == null) { ZLog.Log("ZDO data from unkown host, ignoring"); return; } float time = Time.time; int num = 0; ZPackage pkg2 = new ZPackage(); int num2 = pkg.ReadInt(); for (int i = 0; i < num2; i++) { ZDOID id = pkg.ReadZDOID(); ZDO zdo = this.GetZDO(id); if (zdo != null) { zdo.InvalidateSector(); } } for (;;) { ZDOID zdoid = pkg.ReadZDOID(); if (zdoid.IsNone()) { break; } num++; uint num3 = pkg.ReadUInt(); uint num4 = pkg.ReadUInt(); long owner = pkg.ReadLong(); Vector3 vector = pkg.ReadVector3(); pkg.ReadPackage(ref pkg2); ZDO zdo2 = this.GetZDO(zdoid); bool flag = false; if (zdo2 != null) { if (num4 <= zdo2.m_dataRevision) { if (num3 > zdo2.m_ownerRevision) { zdo2.m_owner = owner; zdo2.m_ownerRevision = num3; zdopeer.m_zdos[zdoid] = new ZDOMan.ZDOPeer.PeerZDOInfo(num4, num3, time); continue; } continue; } } else { zdo2 = this.CreateNewZDO(zdoid, vector); flag = true; } zdo2.m_ownerRevision = num3; zdo2.m_dataRevision = num4; zdo2.m_owner = owner; zdo2.InternalSetPosition(vector); zdopeer.m_zdos[zdoid] = new ZDOMan.ZDOPeer.PeerZDOInfo(zdo2.m_dataRevision, zdo2.m_ownerRevision, time); zdo2.Deserialize(pkg2); if (ZNet.instance.IsServer() && flag && this.m_deadZDOs.ContainsKey(zdoid)) { zdo2.SetOwner(this.m_myid); this.DestroyZDO(zdo2); } } this.m_zdosRecv += num; }