From 9d6ea497e27bb2c93211fe2899e609ea9ea18623 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Wed, 6 Feb 2008 09:38:14 +0000 Subject: * Added the ability to start and stop all scripts in the simulator using the debug tab on the estate tools. This along with the disable physics via the debug tab are persistant across reboots. That means that if it's disabled when you shut down the simulator, the simulator will come up again when you start it up without loading the scripts. Turning them back on is as simple as unchecking 'disable scripts' in the debug tab of the estate tools. --- OpenSim/Region/Environment/EstateManager.cs | 20 +++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 48 ++++++++++++++++++++++ .../Scenes/SceneObjectGroup.Inventory.cs | 10 +++-- 3 files changed, 75 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs index 860bd93..96baf21 100644 --- a/OpenSim/Region/Environment/EstateManager.cs +++ b/OpenSim/Region/Environment/EstateManager.cs @@ -237,6 +237,26 @@ namespace OpenSim.Region.Environment bool scripted = convertParamStringToBool(packet.ParamList[0].Parameter); bool collisionEvents = convertParamStringToBool(packet.ParamList[1].Parameter); bool physics = convertParamStringToBool(packet.ParamList[2].Parameter); + + if (physics) + { + m_scene.RegionInfo.EstateSettings.regionFlags |= Simulator.RegionFlags.SkipPhysics; + } + else + { + m_scene.RegionInfo.EstateSettings.regionFlags &= ~Simulator.RegionFlags.SkipPhysics; + } + + if (scripted) + { + m_scene.RegionInfo.EstateSettings.regionFlags |= Simulator.RegionFlags.SkipScripts; + } + else + { + m_scene.RegionInfo.EstateSettings.regionFlags &= ~Simulator.RegionFlags.SkipScripts; + } + + m_scene.SetSceneCoreDebug(scripted, collisionEvents, physics); } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index d0acded..40a80c4 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -283,6 +283,23 @@ namespace OpenSim.Region.Environment.Scenes httpListener = httpServer; m_dumpAssetsToFile = dumpAssetsToFile; + if ((RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipScripts) == Simulator.RegionFlags.SkipScripts) + { + m_scripts_enabled = false; + } + else + { + m_scripts_enabled = true; + } + if ((RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipPhysics) == Simulator.RegionFlags.SkipPhysics) + { + m_physics_enabled = false; + } + else + { + m_physics_enabled = true; + } + m_statsReporter = new SimStatsReporter(regInfo); m_statsReporter.OnSendStatsResult += SendSimStatsPackets; } @@ -483,6 +500,37 @@ namespace OpenSim.Region.Environment.Scenes if (m_scripts_enabled != !ScriptEngine) { // Tedd! Here's the method to disable the scripting engine! + if (ScriptEngine) + { + m_log.Info("Stopping all Scripts in Scene"); + lock (Entities) + { + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + ((SceneObjectGroup)ent).StopScripts(); + } + } + } + } + else + { + m_log.Info("Starting all Scripts in Scene"); + lock (Entities) + { + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + ((SceneObjectGroup)ent).StartScripts(); + } + } + } + + + } + m_scripts_enabled = !ScriptEngine; m_log.Info("[TOTEDD]: Here is the method to trigger disabling of the scripting engine"); } if (m_physics_enabled != !PhysicsEngine) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs index 1e99079..6bd0575 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs @@ -88,10 +88,14 @@ namespace OpenSim.Region.Environment.Scenes /// public void StartScripts() { - foreach (SceneObjectPart part in m_parts.Values) + // Don't start scripts if they're turned off in the region! + if (!((m_scene.RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipScripts) == Simulator.RegionFlags.SkipScripts)) { - part.StartScripts(); - } + foreach (SceneObjectPart part in m_parts.Values) + { + part.StartScripts(); + } + } } public void StopScripts() -- cgit v1.1