diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs index 40693abe6f..5bf29d710c 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/InventoryItem.cs @@ -81,6 +81,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule public int Type { get { return m_privateItem.Type; } } public UUID AssetID { get { return m_privateItem.AssetID; } } + // This method exposes OpenSim/OpenMetaverse internals and needs to be replaced with a IAsset specific to MRM. public T RetreiveAsset() where T : OpenMetaverse.Assets.Asset, new() { AssetBase a = m_rootSceene.AssetService.Get(AssetID.ToString()); diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs index 53145e2d65..eb807f262c 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs @@ -73,6 +73,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule if (!source.Configs["MRM"].GetBoolean("Hidden", false)) { scene.EventManager.OnRezScript += EventManager_OnRezScript; + scene.EventManager.OnStopScript += EventManager_OnStopScript; } scene.EventManager.OnFrame += EventManager_OnFrame; @@ -90,6 +91,14 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule } } + void EventManager_OnStopScript(uint localID, UUID itemID) + { + if(m_scripts.ContainsKey(itemID)) + { + m_scripts[itemID].Stop(); + } + } + void EventManager_OnFrame() { m_microthreads.Tick(1000);