protected void ParcelObjectOwnersReplyHandler(string capsKey, IMessage message, Simulator simulator) { if (m_ParcelObjectOwnersReply != null) { List<ParcelPrimOwners> primOwners = new List<ParcelPrimOwners>(); ParcelObjectOwnersReplyMessage msg = (ParcelObjectOwnersReplyMessage)message; for (int i = 0; i < msg.PrimOwnersBlock.Length; i++) { ParcelPrimOwners primOwner = new ParcelPrimOwners(); primOwner.OwnerID = msg.PrimOwnersBlock[i].OwnerID; primOwner.Count = msg.PrimOwnersBlock[i].Count; primOwner.IsGroupOwned = msg.PrimOwnersBlock[i].IsGroupOwned; primOwner.OnlineStatus = msg.PrimOwnersBlock[i].OnlineStatus; primOwner.NewestPrim = msg.PrimOwnersBlock[i].TimeStamp; primOwners.Add(primOwner); } OnParcelObjectOwnersReply(new ParcelObjectOwnersReplyEventArgs(simulator, primOwners)); } }
/// <summary> /// /// </summary> /// <param name="capsKey"></param> /// <param name="llsd"></param> /// <param name="simulator"></param> private void ParcelObjectOwnersReplyHandler(string capsKey, OSD llsd, Simulator simulator) { if (OnPrimOwnersListReply != null) { OSDMap map = (OSDMap)llsd; List<ParcelPrimOwners> primOwners = new List<ParcelPrimOwners>(); if (map.ContainsKey("Data") && map.ContainsKey("DataExtended")) { OSDArray dataBlock = (OSDArray)map["Data"]; OSDArray dataExtendedBlock = (OSDArray)map["DataExtended"]; for (int i = 0; i < dataBlock.Count; i++) { ParcelPrimOwners poe = new ParcelPrimOwners(); poe.OwnerID = ((OSDMap)dataBlock[i])["OwnerID"].AsUUID(); poe.Count = ((OSDMap)dataBlock[i])["Count"].AsInteger(); poe.IsGroupOwned = ((OSDMap)dataBlock[i])["IsGroupOwned"].AsBoolean(); poe.OnlineStatus = ((OSDMap)dataBlock[i])["OnlineStatus"].AsBoolean(); if (((OSDMap)dataExtendedBlock[i]).ContainsKey("TimeStamp")) { byte[] bytes = (((OSDMap)dataExtendedBlock[i])["TimeStamp"].AsBinary()); if (BitConverter.IsLittleEndian) Array.Reverse(bytes); uint value = Utils.BytesToUInt(bytes); poe.NewestPrim = Utils.UnixTimeToDateTime(value); } primOwners.Add(poe); } } else { // the server will send back a response even when there are no prims primOwners.Add(new ParcelPrimOwners()); } if (OnPrimOwnersListReply != null) { try { OnPrimOwnersListReply(simulator, primOwners); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } }
private void ParcelObjectOwnersReplyHandler(Packet packet, Simulator simulator) { if (OnPrimOwnersListReply != null) { ParcelObjectOwnersReplyPacket reply = (ParcelObjectOwnersReplyPacket)packet; List<ParcelPrimOwners> primOwners = new List<ParcelPrimOwners>(); for (int i = 0; i < reply.Data.Length; i++) { ParcelPrimOwners poe = new ParcelPrimOwners(); poe.OwnerID = reply.Data[i].OwnerID; poe.IsGroupOwned = reply.Data[i].IsGroupOwned; poe.Count = reply.Data[i].Count; poe.OnlineStatus = reply.Data[i].OnlineStatus; primOwners.Add(poe); } try { OnPrimOwnersListReply(simulator, primOwners); } catch (Exception e) { Client.Log(e.ToString(), Helpers.LogLevel.Error); } } }
/// <summary> /// Decode the prim owner information, send the decoded object to any event subscribers /// </summary> /// <param name="capsKey"></param> /// <param name="message">IMessage object containing decoded data from OSD</param> /// <param name="simulator"></param> private void ParcelObjectOwnersReplyHandler(string capsKey, IMessage message, Simulator simulator) { if (OnPrimOwnersListReply != null) { List<ParcelPrimOwners> primOwners = new List<ParcelPrimOwners>(); ParcelObjectOwnersReplyMessage msg = (ParcelObjectOwnersReplyMessage)message; for (int i = 0; i < msg.PrimOwnersBlock.Length; i++) { ParcelPrimOwners primOwner = new ParcelPrimOwners(); primOwner.OwnerID = msg.PrimOwnersBlock[i].OwnerID; primOwner.Count = msg.PrimOwnersBlock[i].Count; primOwner.IsGroupOwned = msg.PrimOwnersBlock[i].IsGroupOwned; primOwner.OnlineStatus = msg.PrimOwnersBlock[i].OnlineStatus; primOwner.NewestPrim = msg.PrimOwnersBlock[i].TimeStamp; primOwners.Add(primOwner); } try { OnPrimOwnersListReply(simulator, primOwners); } catch (Exception e) { Log.Log(e.Message, Helpers.LogLevel.Error, e); } } }