aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs23
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs39
2 files changed, 62 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 6dea2f0..4d65be9 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -213,6 +213,9 @@ namespace OpenSim.Region.Framework.Scenes
213 /// </remarks> 213 /// </remarks>
214 public event NewScript OnNewScript; 214 public event NewScript OnNewScript;
215 215
216 public delegate void ExtraSettingChangedDelegate(Scene scene, string name, string value);
217 public event ExtraSettingChangedDelegate OnExtraSettingChanged;
218
216 public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID) 219 public virtual void TriggerNewScript(UUID clientID, SceneObjectPart part, UUID itemID)
217 { 220 {
218 NewScript handlerNewScript = OnNewScript; 221 NewScript handlerNewScript = OnNewScript;
@@ -2591,5 +2594,25 @@ namespace OpenSim.Region.Framework.Scenes
2591 } 2594 }
2592 } 2595 }
2593 2596
2597 public void TriggerExtraSettingChanged(Scene scene, string name, string val)
2598 {
2599 ExtraSettingChangedDelegate handler = OnExtraSettingChanged;
2600
2601 if (handler != null)
2602 {
2603 foreach (ExtraSettingChangedDelegate d in handler.GetInvocationList())
2604 {
2605 try
2606 {
2607 d(scene, name, val);
2608 }
2609 catch (Exception e)
2610 {
2611 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for ExtraSettingChanged failed - continuing {0} - {1}",
2612 e.Message, e.StackTrace);
2613 }
2614 }
2615 }
2616 }
2594 } 2617 }
2595} 2618}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 59f49ea..0e5ddfd 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5447,5 +5447,44 @@ namespace OpenSim.Region.Framework.Scenes
5447 5447
5448 callback(asset); 5448 callback(asset);
5449 } 5449 }
5450
5451 public string GetExtraSetting(string name)
5452 {
5453 string val;
5454
5455 if (!m_extraSettings.TryGetValue(name, out val))
5456 return String.Empty;
5457
5458 return val;
5459 }
5460
5461 public void StoreExtraSetting(string name, string val)
5462 {
5463 string oldVal;
5464
5465 if (m_extraSettings.TryGetValue(name, out oldVal))
5466 {
5467 if (oldVal == val)
5468 return;
5469 }
5470
5471 m_extraSettings[name] = val;
5472
5473 m_SimulationDataService.SaveExtra(RegionInfo.RegionID, name, val);
5474
5475 m_eventManager.TriggerExtraSettingChanged(this, name, val);
5476 }
5477
5478 public void RemoveExtraSetting(string name)
5479 {
5480 if (!m_extraSettings.ContainsKey(name))
5481 return;
5482
5483 m_extraSettings.Remove(name);
5484
5485 m_SimulationDataService.RemoveExtra(RegionInfo.RegionID, name);
5486
5487 m_eventManager.TriggerExtraSettingChanged(this, name, String.Empty);
5488 }
5450 } 5489 }
5451} 5490}