From ed717ec181ef9946fbb5182d59e9f051ae1478ac Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Mon, 26 May 2008 16:16:48 +0000 Subject: Thank you kindly, Melanie for a patch for script reset that creates the event handler chain ready to hook by script engines --- OpenSim/Framework/IClientAPI.cs | 2 ++ OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 10 ++++++++++ OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs | 2 ++ OpenSim/Region/Environment/Scenes/EventManager.cs | 12 ++++++++++++ OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | 9 +++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 1 + OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | 1 + 7 files changed, 37 insertions(+) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 7fb8091..48b4eb3 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -640,6 +640,7 @@ namespace OpenSim.Framework public delegate void EstateBlueBoxMessageRequest(IClientAPI remoteClient, LLUUID invoice, LLUUID senderID, LLUUID sessionID, string senderName, string message); public delegate void EstateDebugRegionRequest(IClientAPI remoteClient, LLUUID invoice, LLUUID senderID, bool scripted, bool collisionEvents, bool physics); public delegate void EstateTeleportOneUserHomeRequest(IClientAPI remoteClient, LLUUID invoice, LLUUID senderID, LLUUID prey); + public delegate void ScriptReset(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID); public interface IClientAPI @@ -836,6 +837,7 @@ namespace OpenSim.Framework event UUIDNameRequest OnUUIDGroupNameRequest; event RequestObjectPropertiesFamily OnObjectGroupRequest; + event ScriptReset OnScriptReset; [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")] void OutPacket(Packet newPack, ThrottleOutPacketType packType); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index e27a003..c9a6b84 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -254,6 +254,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private UUIDNameRequest handlerUUIDGroupNameRequest = null; private RequestObjectPropertiesFamily handlerObjectGroupRequest = null; + private ScriptReset handlerScriptReset = null; /* Properties */ @@ -859,6 +860,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; public event EstateDebugRegionRequest OnEstateDebugRegionRequest; public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; + public event ScriptReset OnScriptReset; #region Scene/Avatar to Client @@ -5797,6 +5799,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP // TODO: Perhaps this should be processed on the Sim to determine whether or not to drop a dead client //m_log.Warn("[CLIENT]: unhandled CompletePingCheck packet"); break; + case PacketType.ScriptReset: + ScriptResetPacket scriptResetPacket = (ScriptResetPacket)Pack; + handlerScriptReset = OnScriptReset; + if (handlerScriptReset != null) + { + handlerScriptReset(this, scriptResetPacket.Script.ObjectID, scriptResetPacket.Script.ItemID); + } + break; case PacketType.ViewerStats: // TODO: handle this packet m_log.Warn("[CLIENT]: unhandled ViewerStats packet"); diff --git a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs index 09069a9..bad089d 100644 --- a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs @@ -288,6 +288,8 @@ namespace OpenSim.Region.Environment.Modules.World.NPC public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; public event EstateDebugRegionRequest OnEstateDebugRegionRequest; public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; + public event ScriptReset OnScriptReset; + #pragma warning restore 67 #endregion diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs index 6cecb6d..e77bebc 100644 --- a/OpenSim/Region/Environment/Scenes/EventManager.cs +++ b/OpenSim/Region/Environment/Scenes/EventManager.cs @@ -85,11 +85,13 @@ namespace OpenSim.Region.Environment.Scenes public delegate void ObjectGrabDelegate(uint localID, LLVector3 offsetPos, IClientAPI remoteClient); public delegate void ObjectDeGrabDelegate(uint localID, IClientAPI remoteClient); + public delegate void ScriptResetDelegate(uint localID, LLUUID itemID); public delegate void OnPermissionErrorDelegate(LLUUID user, string reason); public event ObjectGrabDelegate OnObjectGrab; public event ObjectDeGrabDelegate OnObjectDeGrab; + public event ScriptResetDelegate OnScriptReset; public event OnPermissionErrorDelegate OnPermissionError; @@ -310,6 +312,7 @@ namespace OpenSim.Region.Environment.Scenes private OnShutdownDelegate handlerShutdown = null; //OnShutdown; private ObjectGrabDelegate handlerObjectGrab = null; //OnObjectGrab; private ObjectDeGrabDelegate handlerObjectDeGrab = null; //OnObjectDeGrab; + private ScriptResetDelegate handlerScriptReset = null; // OnScriptReset private NewRezScript handlerRezScript = null; //OnRezScript; private RemoveScript handlerRemoveScript = null; //OnRemoveScript; private SceneGroupMoved handlerSceneGroupMove = null; //OnSceneGroupMove; @@ -484,6 +487,15 @@ namespace OpenSim.Region.Environment.Scenes } } + public void TriggerScriptReset(uint localID, LLUUID itemID) + { + handlerScriptReset = OnScriptReset; + if (handlerScriptReset != null) + { + handlerScriptReset(localID, itemID); + } + } + public void TriggerRezScript(uint localID, LLUUID itemID, string script) { handlerRezScript = OnRezScript; diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 8419399..41bd2d3 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -288,5 +288,14 @@ namespace OpenSim.Region.Environment.Scenes } client.SendAvatarPickerReply(agent_data, data_args); } + + public void ProcessScriptReset(IClientAPI remoteClient, LLUUID objectID, + LLUUID itemID) + { + SceneObjectPart part=GetSceneObjectPart(objectID); + if(part == null) + return; + EventManager.TriggerScriptReset(part.LocalId, itemID); + } } } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 4d380f9..c9f23af 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1704,6 +1704,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnUndo += m_innerScene.HandleUndo; client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate; client.OnParcelReturnObjectsRequest += LandChannel.ReturnObjectsInParcel; + client.OnScriptReset += ProcessScriptReset; // EventManager.TriggerOnNewClient(client); } diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 0410e1c..4407462 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -193,6 +193,7 @@ namespace OpenSim.Region.Examples.SimpleModule public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; public event EstateDebugRegionRequest OnEstateDebugRegionRequest; public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; + public event ScriptReset OnScriptReset; #pragma warning restore 67 -- cgit v1.1