aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Application/OpenSim.cs13
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs40
2 files changed, 47 insertions, 6 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index c3c612f..b24641a 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -254,8 +254,14 @@ namespace OpenSim
254 m_console.Commands.AddCommand("Debug", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); 254 m_console.Commands.AddCommand("Debug", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug);
255 255
256 m_console.Commands.AddCommand("Debug", false, "debug scene", 256 m_console.Commands.AddCommand("Debug", false, "debug scene",
257 "debug scene <scripting> <collisions> <physics>", 257 "debug scene active|collisions|physics|scripting|teleport true|false",
258 "Turn on scene debugging", Debug); 258 "Turn on scene debugging.",
259 "If active is false then main scene update and maintenance loops are suspended.\n"
260 + "If collisions is false then collisions with other objects are turned off.\n"
261 + "If physics is false then all physics objects are non-physical.\n"
262 + "If scripting is false then no scripting operations happen.\n"
263 + "If teleport is true then some extra teleport debug information is logged.",
264 Debug);
259 265
260 m_console.Commands.AddCommand("General", false, "change region", 266 m_console.Commands.AddCommand("General", false, "change region",
261 "change region <region name>", 267 "change region <region name>",
@@ -930,7 +936,8 @@ namespace OpenSim
930 } 936 }
931 else 937 else
932 { 938 {
933 MainConsole.Instance.Output("Usage: debug scene scripting|collisions|physics|teleport true|false"); 939 MainConsole.Instance.Output(
940 "Usage: debug scene active|scripting|collisions|physics|teleport true|false");
934 } 941 }
935 942
936 break; 943 break;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index fb2decc..7f4f7e5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -306,6 +306,30 @@ namespace OpenSim.Region.Framework.Scenes
306 } 306 }
307 private volatile bool m_shuttingDown; 307 private volatile bool m_shuttingDown;
308 308
309 /// <summary>
310 /// Is the scene active?
311 /// </summary>
312 /// <remarks>
313 /// If false, maintenance and update loops are not run.
314 /// </remarks>
315 public bool Active
316 {
317 get { return m_active; }
318 set
319 {
320 if (value)
321 {
322 if (!m_active)
323 Start();
324 }
325 else
326 {
327 m_active = false;
328 }
329 }
330 }
331 private volatile bool m_active;
332
309// private int m_lastUpdate; 333// private int m_lastUpdate;
310// private bool m_firstHeartbeat = true; 334// private bool m_firstHeartbeat = true;
311 335
@@ -1159,6 +1183,14 @@ namespace OpenSim.Region.Framework.Scenes
1159 1183
1160 public void SetSceneCoreDebug(Dictionary<string, string> options) 1184 public void SetSceneCoreDebug(Dictionary<string, string> options)
1161 { 1185 {
1186 if (options.ContainsKey("active"))
1187 {
1188 bool active;
1189
1190 if (bool.TryParse(options["active"], out active))
1191 Active = active;
1192 }
1193
1162 if (options.ContainsKey("scripting")) 1194 if (options.ContainsKey("scripting"))
1163 { 1195 {
1164 bool enableScripts = true; 1196 bool enableScripts = true;
@@ -1298,6 +1330,8 @@ namespace OpenSim.Region.Framework.Scenes
1298 /// </summary> 1330 /// </summary>
1299 public void Start() 1331 public void Start()
1300 { 1332 {
1333 m_active = true;
1334
1301// m_log.DebugFormat("[SCENE]: Starting Heartbeat timer for {0}", RegionInfo.RegionName); 1335// m_log.DebugFormat("[SCENE]: Starting Heartbeat timer for {0}", RegionInfo.RegionName);
1302 1336
1303 //m_heartbeatTimer.Enabled = true; 1337 //m_heartbeatTimer.Enabled = true;
@@ -1339,7 +1373,7 @@ namespace OpenSim.Region.Framework.Scenes
1339 #region Update Methods 1373 #region Update Methods
1340 1374
1341 /// <summary> 1375 /// <summary>
1342 /// Performs per-frame updates regularly 1376 /// Activate the various loops necessary to continually update the scene.
1343 /// </summary> 1377 /// </summary>
1344 private void Heartbeat() 1378 private void Heartbeat()
1345 { 1379 {
@@ -1396,7 +1430,7 @@ namespace OpenSim.Region.Framework.Scenes
1396 List<Vector3> coarseLocations; 1430 List<Vector3> coarseLocations;
1397 List<UUID> avatarUUIDs; 1431 List<UUID> avatarUUIDs;
1398 1432
1399 while (!m_shuttingDown && (endRun == null || MaintenanceRun < endRun)) 1433 while (Active && !m_shuttingDown && (endRun == null || MaintenanceRun < endRun))
1400 { 1434 {
1401 runtc = Util.EnvironmentTickCount(); 1435 runtc = Util.EnvironmentTickCount();
1402 ++MaintenanceRun; 1436 ++MaintenanceRun;
@@ -1455,7 +1489,7 @@ namespace OpenSim.Region.Framework.Scenes
1455 int previousFrameTick, tmpMS; 1489 int previousFrameTick, tmpMS;
1456 int maintc = Util.EnvironmentTickCount(); 1490 int maintc = Util.EnvironmentTickCount();
1457 1491
1458 while (!m_shuttingDown && (endFrame == null || Frame < endFrame)) 1492 while (Active && !m_shuttingDown && (endFrame == null || Frame < endFrame))
1459 { 1493 {
1460 ++Frame; 1494 ++Frame;
1461 1495