From c95bdb83c0d91ecb4c5a73e3ae4deadbcc54955f Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Tue, 9 Sep 2008 05:25:29 +0000 Subject: [PATCH] * Adds OnGenericMessage and SendGenericMessage functionality to IClientAPI. * Please don't break the build. *fingers crossed* --- OpenSim/Framework/IClientAPI.cs | 7 ++++ .../ClientStack/LindenUDP/LLClientView.cs | 38 +++++++++++++++++++ .../Modules/World/NPC/NPCAvatar.cs | 8 +++- .../Examples/SimpleModule/MyNpcCharacter.cs | 8 +++- 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index e1c6f4b0b4..ac97375353 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -39,6 +39,8 @@ namespace OpenSim.Framework public delegate void ChatMessage(Object sender, OSChatMessage e); + public delegate void GenericMessage(Object sender, string method, List args); + public delegate void TextureRequest(Object sender, TextureRequestArgs e); public delegate void AvatarNowWearing(Object sender, AvatarWearingArgs e); @@ -356,6 +358,9 @@ namespace OpenSim.Framework // [Obsolete("LLClientView Specific - Circuits are unique to LLClientView")] uint CircuitCode { get; } + + event GenericMessage OnGenericMessage; + // [Obsolete("LLClientView Specific - Replace with more bare-bones arguments.")] event ImprovedInstantMessage OnInstantMessage; // [Obsolete("LLClientView Specific - Replace with more bare-bones arguments. Rename OnChat.")] @@ -547,6 +552,8 @@ namespace OpenSim.Framework UUID imSessionID, string fromName, byte dialog, uint timeStamp, byte[] binaryBucket); + void SendGenericMessage(string method, List message); + void SendLayerData(float[] map); void SendLayerData(int px, int py, float[] map); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 3c860a9043..f778557ce7 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -120,6 +120,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /* Instantiated Designated Event Delegates */ //- used so we don't create new objects for each incoming packet and then toss it out later */ + private GenericMessage handlerGenericMessage = null; private RequestAvatarProperties handlerRequestAvatarProperties = null; //OnRequestAvatarProperties; private UpdateAvatarProperties handlerUpdateAvatarProperties = null; // OnUpdateAvatarProperties; private ChatMessage handlerChatFromViewer = null; //OnChatFromViewer; @@ -820,6 +821,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP # endregion // Previously ClientView.API partial class + public event GenericMessage OnGenericMessage; public event Action OnLogout; public event ObjectPermissions OnObjectPermissions; public event Action OnConnectionClosed; @@ -1119,6 +1121,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } + public void SendGenericMessage(string method, List message) + { + + GenericMessagePacket gmp = new GenericMessagePacket(); + gmp.MethodData.Method = Utils.StringToBytes(method); + gmp.ParamList = new GenericMessagePacket.ParamListBlock[message.Count]; + int i = 0; + foreach (string val in message) + { + gmp.ParamList[i] = new GenericMessagePacket.ParamListBlock(); + gmp.ParamList[i++].Parameter = Utils.StringToBytes(val); + } + OutPacket(gmp, ThrottleOutPacketType.Task); + } + /// /// Send the region heightmap to the client /// @@ -3320,6 +3337,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest); AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); + AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); } private bool HandleMoneyTransferRequest(IClientAPI sender, Packet Pack) @@ -3380,6 +3398,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP return true; } + public bool HandleGenericMessage(IClientAPI sender, Packet pack) + { + GenericMessagePacket gmpack = (GenericMessagePacket) pack; + handlerGenericMessage = OnGenericMessage; + + List msg = new List(); + + if(handlerGenericMessage != null) + { + string method = Util.FieldToString(gmpack.MethodData.Method); + foreach (GenericMessagePacket.ParamListBlock block in gmpack.ParamList) + { + msg.Add(Util.FieldToString(block.Parameter)); + } + + handlerGenericMessage(this, method, msg); + } + return true; + } + public bool HandleObjectGroupRequest(IClientAPI sender, Packet Pack) { diff --git a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs index 8bf0d96e1e..20b203a6d3 100644 --- a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs @@ -159,7 +159,7 @@ namespace OpenSim.Region.Environment.Modules.World.NPC public event MoneyTransferRequest OnMoneyTransferRequest; public event ParcelBuy OnParcelBuy; public event Action OnConnectionClosed; - + public event GenericMessage OnGenericMessage; public event ImprovedInstantMessage OnInstantMessage; public event ChatMessage OnChatFromViewer; public event TextureRequest OnRequestTexture; @@ -465,6 +465,11 @@ namespace OpenSim.Region.Environment.Modules.World.NPC { } + public void SendGenericMessage(string method, List message) + { + + } + public virtual void SendLayerData(float[] map) { } @@ -762,6 +767,7 @@ namespace OpenSim.Region.Environment.Modules.World.NPC get { return m_circuitCode; } set { m_circuitCode = value; } } + public void SendBlueBoxMessage(UUID FromAvatarID, UUID fromSessionID, String FromAvatarName, String Message) { diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 149126c4ac..c42eaeb98b 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -141,7 +141,7 @@ namespace OpenSim.Region.Examples.SimpleModule public event MoveTaskInventory OnMoveTaskItem; public event RemoveTaskInventory OnRemoveTaskItem; public event RequestAsset OnRequestAsset; - + public event GenericMessage OnGenericMessage; public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnUUIDGroupNameRequest; @@ -379,6 +379,11 @@ namespace OpenSim.Region.Examples.SimpleModule { } + public void SendGenericMessage(string method, List message) + { + + } + public virtual void SendLayerData(float[] map) { } @@ -751,6 +756,7 @@ namespace OpenSim.Region.Examples.SimpleModule get { return m_circuitCode; } set { m_circuitCode = value; } } + public void SendBlueBoxMessage(UUID FromAvatarID, UUID fromSessionID, String FromAvatarName, String Message) {