/// <summary> /// /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { LLObject llobj = obj as LLObject; if (llobj == null) { return(false); } return(ID.Equals(llobj.ID)); }
/// <summary> /// Send an Instant Message /// </summary> /// <param name="fromName">The name this IM will show up as being from</param> /// <param name="target">Key of Avatar</param> /// <param name="message">Text message being sent</param> /// <param name="imSessionID">IM session ID (to differentiate between IM windows)</param> /// <param name="dialog">Type of instant message to send</param> /// <param name="offline">Whether to IM offline avatars as well</param> /// <param name="position">Senders Position</param> /// <param name="regionID">RegionID Sender is In</param> /// <param name="binaryBucket">Packed binary data that is specific to /// the dialog type</param> public void InstantMessage(string fromName, LLUUID target, string message, LLUUID imSessionID, InstantMessageDialog dialog, InstantMessageOnline offline, LLVector3 position, LLUUID regionID, byte[] binaryBucket) { if (target != LLUUID.Zero) { ImprovedInstantMessagePacket im = new ImprovedInstantMessagePacket(); if (imSessionID.Equals(LLUUID.Zero) || imSessionID.Equals(AgentID)) imSessionID = AgentID.Equals(target) ? AgentID : target ^ AgentID; im.AgentData.AgentID = Client.Self.AgentID; im.AgentData.SessionID = Client.Self.SessionID; im.MessageBlock.Dialog = (byte)dialog; im.MessageBlock.FromAgentName = Helpers.StringToField(fromName); im.MessageBlock.FromGroup = false; im.MessageBlock.ID = imSessionID; im.MessageBlock.Message = Helpers.StringToField(message); im.MessageBlock.Offline = (byte)offline; im.MessageBlock.ToAgentID = target; if (binaryBucket != null) im.MessageBlock.BinaryBucket = binaryBucket; else im.MessageBlock.BinaryBucket = new byte[0]; // These fields are mandatory, even if we don't have valid values for them im.MessageBlock.Position = LLVector3.Zero; //TODO: Allow region id to be correctly set by caller or fetched from Client.* im.MessageBlock.RegionID = regionID; // Send the message Client.Network.SendPacket(im); } else { Client.Log(String.Format("Suppressing instant message \"{0}\" to LLUUID.Zero", message), Helpers.LogLevel.Error); } }