OpenMetaverse.ObjectManager.RequestObjectMedia C# (CSharp) Method

RequestObjectMedia() public method

Retrieve information about object media
public RequestObjectMedia ( UUID primID, Simulator sim, ObjectMediaCallback callback ) : void
primID UUID UUID of the primitive
sim Simulator Simulator where prim is located
callback ObjectMediaCallback Call this callback when done
return void
        public void RequestObjectMedia(UUID primID, Simulator sim, ObjectMediaCallback callback)
        {
            Uri url;
            if (sim.Caps != null && null != (url = sim.Caps.CapabilityURI("ObjectMedia")))
            {
                ObjectMediaRequest req = new ObjectMediaRequest();
                req.PrimID = primID;
                req.Verb = "GET";

                CapsClient request = new CapsClient(url);
                request.OnComplete += (CapsClient client, OSD result, Exception error) =>
                    {
                        if (result == null)
                        {
                            Logger.Log("Failed retrieving ObjectMedia data", Helpers.LogLevel.Error, Client);
                            try { callback(false, string.Empty, null); }
                            catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client); }
                            return;
                        }

                        ObjectMediaMessage msg = new ObjectMediaMessage();
                        msg.Deserialize((OSDMap)result);

                        if (msg.Request is ObjectMediaResponse)
                        {
                            ObjectMediaResponse response = (ObjectMediaResponse)msg.Request;

                            if (Client.Settings.OBJECT_TRACKING)
                            {
                                Primitive prim = sim.ObjectsPrimitives.Find((Primitive p) => { return p.ID == primID; });
                                if (prim != null)
                                {
                                    prim.MediaVersion = response.Version;
                                    prim.FaceMedia = response.FaceMedia;
                                }
                            }

                            try { callback(true, response.Version, response.FaceMedia); }
                            catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client); }
                        }
                        else
                        {
                            try { callback(false, string.Empty, null); }
                            catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client); }
                        }
                    };

                request.BeginGetResponse(req.Serialize(), OSDFormat.Xml, Client.Settings.CAPS_TIMEOUT);
            }
            else
            {
                Logger.Log("ObjectMedia capability not available", Helpers.LogLevel.Error, Client);
                try { callback(false, string.Empty, null); }
                catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client); }
            }
        }