コード例 #1
0
ファイル: ParcelManager.cs プロジェクト: RavenB/gridsearch
        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));
            }                
        }
コード例 #2
0
ファイル: ParcelManager.cs プロジェクト: RavenB/gridsearch
        /// <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); }
                }
            }
        }
コード例 #3
0
ファイル: ParcelManager.cs プロジェクト: RavenB/gridsearch
        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); }
            }

        }
コード例 #4
0
ファイル: ParcelManager.cs プロジェクト: RavenB/gridsearch
        /// <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); }
            }                
        }