Example #1
0
        /// <summary>
        /// Gets the user appearance.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns></returns>
        override public AvatarAppearance GetUserAppearance(UUID user)
        {
            try
            {
                AvatarAppearance appearance = new AvatarAppearance();
                string sql = "SELECT * FROM avatarappearance WHERE owner = @UUID";
                using (AutoClosingSqlCommand command = database.Query(sql))
                {
                    command.Parameters.Add(database.CreateParameter("@UUID", user));
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.Read())
                            appearance = readUserAppearance(reader);
                        else
                        {
                            m_log.WarnFormat("[USER DB] No appearance found for user {0}", user.ToString());
                            return null;
                        }

                    }
                }

                appearance.SetAttachments(GetUserAttachments(user));

                return appearance;
            }
            catch (Exception e)
            {
                m_log.ErrorFormat("[USER DB] Error updating userfriend, error: {0}", e.Message);
            }
            return null;
        }
Example #2
0
        public AvatarAppearance ToAvatarAppearance(UUID owner)
        {
            AvatarAppearance appearance = new AvatarAppearance(owner);
            try
            {
                appearance.Serial = Int32.Parse(Data["Serial"]);

                // Wearables
                appearance.BodyItem = UUID.Parse(Data["BodyItem"]);
                appearance.EyesItem = UUID.Parse(Data["EyesItem"]);
                appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]);
                appearance.HairItem = UUID.Parse(Data["HairItem"]);
                appearance.JacketItem = UUID.Parse(Data["JacketItem"]);
                appearance.PantsItem = UUID.Parse(Data["PantsItem"]);
                appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]);
                appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]);
                appearance.SkinItem = UUID.Parse(Data["SkinItem"]);
                appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]);
                appearance.SocksItem = UUID.Parse(Data["SocksItem"]);
                appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]);
                appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]);

                appearance.BodyAsset = UUID.Parse(Data["BodyAsset"]);
                appearance.EyesAsset = UUID.Parse(Data["EyesAsset"]);
                appearance.GlovesAsset = UUID.Parse(Data["GlovesAsset"]);
                appearance.HairAsset = UUID.Parse(Data["HairAsset"]);
                appearance.JacketAsset = UUID.Parse(Data["JacketAsset"]);
                appearance.PantsAsset = UUID.Parse(Data["PantsAsset"]);
                appearance.ShirtAsset = UUID.Parse(Data["ShirtAsset"]);
                appearance.ShoesAsset = UUID.Parse(Data["ShoesAsset"]);
                appearance.SkinAsset = UUID.Parse(Data["SkinAsset"]);
                appearance.SkirtAsset = UUID.Parse(Data["SkirtAsset"]);
                appearance.SocksAsset = UUID.Parse(Data["SocksAsset"]);
                appearance.UnderPantsAsset = UUID.Parse(Data["UnderPantsAsset"]);
                appearance.UnderShirtAsset = UUID.Parse(Data["UnderShirtAsset"]);

                appearance.AlphaAsset = UUID.Parse(Data["AlphaAsset"]);
                appearance.AlphaItem = UUID.Parse(Data["AlphaItem"]);
                appearance.TattooAsset = UUID.Parse(Data["TattooAsset"]);
                appearance.TattooItem = UUID.Parse(Data["TattooItem"]);

                // Attachments
                Dictionary<string, string> attchs = new Dictionary<string, string>();
                foreach (KeyValuePair<string, string> _kvp in Data)
                    if (_kvp.Key.StartsWith("_ap_"))
                        attchs[_kvp.Key] = _kvp.Value;
                Hashtable aaAttachs = new Hashtable();
                foreach (KeyValuePair<string, string> _kvp in attchs)
                {
                    string pointStr = _kvp.Key.Substring(4);
                    int point = 0;
                    if (!Int32.TryParse(pointStr, out point))
                        continue;
                    Hashtable tmp = new Hashtable();
                    UUID uuid = UUID.Zero;
                    UUID.TryParse(_kvp.Value, out uuid);
                    tmp["item"] = uuid;
                    tmp["asset"] = UUID.Zero.ToString();
                    aaAttachs[point] = tmp;
                }
                appearance.SetAttachments(aaAttachs);
            }
            catch { }

            return appearance;
        }
        /// <summary>
        /// Unpack agent circuit data map into an AgentCiruitData object
        /// </summary>
        /// <param name="args"></param>
        public void UnpackAgentCircuitData(OSDMap args)
        {
            if (args["agent_id"] != null)
                AgentID = args["agent_id"].AsUUID();
            if (args["base_folder"] != null)
                BaseFolder = args["base_folder"].AsUUID();
            if (args["caps_path"] != null)
                CapsPath = args["caps_path"].AsString();

            if ((args["children_seeds"] != null) && (args["children_seeds"].Type == OSDType.Array))
            {
                OSDArray childrenSeeds = (OSDArray)(args["children_seeds"]);
                ChildrenCapSeeds = new Dictionary<ulong, string>();
                foreach (OSD o in childrenSeeds)
                {
                    if (o.Type == OSDType.Map)
                    {
                        ulong handle = 0;
                        string seed = "";
                        OSDMap pair = (OSDMap)o;
                        if (pair["handle"] != null)
                            if (!UInt64.TryParse(pair["handle"].AsString(), out handle))
                                continue;
                        if (pair["seed"] != null)
                            seed = pair["seed"].AsString();
                        if (!ChildrenCapSeeds.ContainsKey(handle))
                            ChildrenCapSeeds.Add(handle, seed);
                    }
                }
            }
            else
                ChildrenCapSeeds = new Dictionary<ulong, string>();

            if (args["child"] != null)
                child = args["child"].AsBoolean();
            if (args["circuit_code"] != null)
                UInt32.TryParse(args["circuit_code"].AsString(), out circuitcode);
            if (args["first_name"] != null)
                firstname = args["first_name"].AsString();
            if (args["last_name"] != null)
                lastname = args["last_name"].AsString();
            if (args["inventory_folder"] != null)
                InventoryFolder = args["inventory_folder"].AsUUID();
            if (args["secure_session_id"] != null)
                SecureSessionID = args["secure_session_id"].AsUUID();
            if (args["session_id"] != null)
                SessionID = args["session_id"].AsUUID();
            if (args["service_session_id"] != null)
                ServiceSessionID = args["service_session_id"].AsString();

            if (args["start_pos"] != null)
                Vector3.TryParse(args["start_pos"].AsString(), out startpos);

            Appearance = new AvatarAppearance(AgentID);
            if (args["appearance_serial"] != null)
                Appearance.Serial = args["appearance_serial"].AsInteger();
            if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
            {
                OSDArray wears = (OSDArray)(args["wearables"]);
                for (int i = 0; i < wears.Count / 2; i++) 
                {
                    Appearance.Wearables[i].ItemID = wears[i*2].AsUUID();
                    Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID();
                }
           }

            if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array)
            {
                OSDArray attachs = (OSDArray)(args["attachments"]);
                AttachmentData[] attachments = new AttachmentData[attachs.Count];
                int i = 0;
                foreach (OSD o in attachs)
                {
                    if (o.Type == OSDType.Map)
                    {
                        attachments[i++] = new AttachmentData((OSDMap)o);
                    }
                }
                Appearance.SetAttachments(attachments);
            }

            ServiceURLs = new Dictionary<string, object>();
            if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array)
            {
                OSDArray urls = (OSDArray)(args["service_urls"]);
                for (int i = 0; i < urls.Count / 2; i++)
                {
                    ServiceURLs[urls[i * 2].AsString()] = urls[(i * 2) + 1].AsString();
                    //System.Console.WriteLine("XXX " + urls[i * 2].AsString() + "=" + urls[(i * 2) + 1].AsString());

                }
            }
        }
Example #4
0
        /// <summary>
        /// Unpack agent circuit data map into an AgentCiruitData object
        /// </summary>
        /// <param name="args"></param>
        public void UnpackAgentCircuitData(OSDMap args)
        {
            if (args["agent_id"] != null)
            {
                AgentID = args["agent_id"].AsUUID();
            }
            if (args["base_folder"] != null)
            {
                BaseFolder = args["base_folder"].AsUUID();
            }
            if (args["caps_path"] != null)
            {
                CapsPath = args["caps_path"].AsString();
            }

            if ((args["children_seeds"] != null) && (args["children_seeds"].Type == OSDType.Array))
            {
                OSDArray childrenSeeds = (OSDArray)(args["children_seeds"]);
                ChildrenCapSeeds = new Dictionary <ulong, string>();
                foreach (OSD o in childrenSeeds)
                {
                    if (o.Type == OSDType.Map)
                    {
                        ulong  handle = 0;
                        string seed   = "";
                        OSDMap pair   = (OSDMap)o;
                        if (pair["handle"] != null)
                        {
                            if (!UInt64.TryParse(pair["handle"].AsString(), out handle))
                            {
                                continue;
                            }
                        }
                        if (pair["seed"] != null)
                        {
                            seed = pair["seed"].AsString();
                        }
                        if (!ChildrenCapSeeds.ContainsKey(handle))
                        {
                            ChildrenCapSeeds.Add(handle, seed);
                        }
                    }
                }
            }
            else
            {
                ChildrenCapSeeds = new Dictionary <ulong, string>();
            }

            if (args["child"] != null)
            {
                child = args["child"].AsBoolean();
            }
            if (args["circuit_code"] != null)
            {
                UInt32.TryParse(args["circuit_code"].AsString(), out circuitcode);
            }
            if (args["first_name"] != null)
            {
                firstname = args["first_name"].AsString();
            }
            if (args["last_name"] != null)
            {
                lastname = args["last_name"].AsString();
            }
            if (args["inventory_folder"] != null)
            {
                InventoryFolder = args["inventory_folder"].AsUUID();
            }
            if (args["secure_session_id"] != null)
            {
                SecureSessionID = args["secure_session_id"].AsUUID();
            }
            if (args["session_id"] != null)
            {
                SessionID = args["session_id"].AsUUID();
            }
            if (args["service_session_id"] != null)
            {
                ServiceSessionID = args["service_session_id"].AsString();
            }
            if (args["viewer"] != null)
            {
                Viewer = args["viewer"].AsString();
            }

            if (args["start_pos"] != null)
            {
                Vector3.TryParse(args["start_pos"].AsString(), out startpos);
            }

            Appearance = new AvatarAppearance(AgentID);
            if (args["appearance_serial"] != null)
            {
                Appearance.Serial = args["appearance_serial"].AsInteger();
            }
            if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
            {
                OSDArray wears = (OSDArray)(args["wearables"]);
                for (int i = 0; i < wears.Count / 2; i++)
                {
                    Appearance.Wearables[i].ItemID  = wears[i * 2].AsUUID();
                    Appearance.Wearables[i].AssetID = wears[(i * 2) + 1].AsUUID();
                }
            }

            if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array)
            {
                OSDArray         attachs     = (OSDArray)(args["attachments"]);
                AttachmentData[] attachments = new AttachmentData[attachs.Count];
                int i = 0;
                foreach (OSD o in attachs)
                {
                    if (o.Type == OSDType.Map)
                    {
                        attachments[i++] = new AttachmentData((OSDMap)o);
                    }
                }
                Appearance.SetAttachments(attachments);
            }

            ServiceURLs = new Dictionary <string, object>();
            if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array)
            {
                OSDArray urls = (OSDArray)(args["service_urls"]);
                for (int i = 0; i < urls.Count / 2; i++)
                {
                    ServiceURLs[urls[i * 2].AsString()] = urls[(i * 2) + 1].AsString();
                    //System.Console.WriteLine("XXX " + urls[i * 2].AsString() + "=" + urls[(i * 2) + 1].AsString());
                }
            }
        }