From f67f37074f3f7e0602b66aa66a044dd9fd107f6a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 24 Feb 2012 05:02:33 +0000
Subject: Stop spurious scene loop startup timeout alarms for scenes with many
 prims.

On the first frame, all startup scene objects are added to the physics scene.
This can cause a considerable delay, so we don't start raising the alarm on scene loop timeouts until the second frame.
This commit also slightly changes the behaviour of timeout reporting.
Previously, a report was made for the very first timed out thread, ignoring all others until the next watchdog check.
Instead, we now report every timed out thread, though we still only do this once no matter how long the timeout.
---
 .../Agent/InternetRelayClientView/Server/IRCClientView.cs               | 2 +-
 .../OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'OpenSim/Region/OptionalModules')

diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index c928af7..d3c96e2 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -70,7 +70,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
             m_client = client;
             m_scene = scene;
 
-            Watchdog.StartThread(InternalLoop, "IRCClientView", ThreadPriority.Normal, false);
+            Watchdog.StartThread(InternalLoop, "IRCClientView", ThreadPriority.Normal, false, true);
         }
 
         private void SendServerCommand(string command)
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
index eb39026..a7c5020 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
@@ -57,7 +57,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
 
             m_listener.Start(50);
 
-            Watchdog.StartThread(ListenLoop, "IRCServer", ThreadPriority.Normal, false);
+            Watchdog.StartThread(ListenLoop, "IRCServer", ThreadPriority.Normal, false, true);
             m_baseScene = baseScene;
         }
 
-- 
cgit v1.1


From d44b7c486a5b51bbfbea2c3d2efd2c9dc0f99d0e Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 6 Mar 2012 01:27:30 +0000
Subject: Go back to setting appearance directly in NPCModule.SetAppearance()
 to fix mantis 5914

The part reverted is from commit 2ebb421.
Unfortunately, IAvatarFactoryModule.SetAppearance() does not transfer attachments.
I'm not sure how to do this separately, unfortunately I'll need to leave it to Dan :)
Regression test added for this case.
Mantis ref: http://opensimulator.org/mantis/view.php?id=5914
---
 .../Region/OptionalModules/World/NPC/NPCModule.cs  | 20 ++++++----
 .../World/NPC/Tests/NPCModuleTests.cs              | 46 +++++++++++++++++++++-
 2 files changed, 57 insertions(+), 9 deletions(-)

(limited to 'OpenSim/Region/OptionalModules')

diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 2052cdb..2b8379d 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -88,22 +88,26 @@ namespace OpenSim.Region.OptionalModules.World.NPC
 
         public bool SetNPCAppearance(UUID agentId, AvatarAppearance appearance, Scene scene)
         {
-            ScenePresence sp = scene.GetScenePresence(agentId);
-            if (sp == null || sp.IsChildAgent)
+            ScenePresence npc = scene.GetScenePresence(agentId);
+            if (npc == null || npc.IsChildAgent)
                 return false;
 
             lock (m_avatars)
                 if (!m_avatars.ContainsKey(agentId))
                     return false;
 
-            // Delete existing sp attachments
-            scene.AttachmentsModule.DeleteAttachmentsFromScene(sp, false);
+            // Delete existing npc attachments
+            scene.AttachmentsModule.DeleteAttachmentsFromScene(npc, false);
 
-            // Set new sp appearance. Also sends to clients.
-            scene.RequestModuleInterface<IAvatarFactoryModule>().SetAppearance(sp, new AvatarAppearance(appearance, true));
+            // XXX: We can't just use IAvatarFactoryModule.SetAppearance() yet since it doesn't transfer attachments
+            AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true);
+            npc.Appearance = npcAppearance;
             
-            // Rez needed sp attachments
-            scene.AttachmentsModule.RezAttachments(sp);
+            // Rez needed npc attachments
+            scene.AttachmentsModule.RezAttachments(npc);
+
+            IAvatarFactoryModule module = scene.RequestModuleInterface<IAvatarFactoryModule>();
+            module.SendAppearance(npc.UUID);
             
             return true;
         }
diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
index d507822..36e2d4a 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
@@ -139,7 +139,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
         }
 
         [Test]
-        public void TestAttachments()
+        public void TestCreateWithAttachments()
         {
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
@@ -179,6 +179,50 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
         }
 
         [Test]
+        public void TestLoadAppearance()
+        {
+            TestHelpers.InMethod();
+//            log4net.Config.XmlConfigurator.Configure();
+
+            UUID userId = TestHelpers.ParseTail(0x1);
+            UserAccountHelpers.CreateUserWithInventory(scene, userId);
+            ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
+
+            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
+            UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, scene, sp.Appearance);
+
+            // Now add the attachment to the original avatar and use that to load a new appearance
+            // TODO: Could also run tests loading from a notecard though this isn't much different for our purposes here
+            UUID attItemId = TestHelpers.ParseTail(0x2);
+            UUID attAssetId = TestHelpers.ParseTail(0x3);
+            string attName = "att";
+
+            UserInventoryHelpers.CreateInventoryItem(scene, attName, attItemId, attAssetId, sp.UUID, InventoryType.Object);
+
+            am.RezSingleAttachmentFromInventory(sp, attItemId, (uint)AttachmentPoint.Chest);
+
+            npcModule.SetNPCAppearance(npcId, sp.Appearance, scene);
+
+            ScenePresence npc = scene.GetScenePresence(npcId);
+
+            // Check scene presence status
+            Assert.That(npc.HasAttachments(), Is.True);
+            List<SceneObjectGroup> attachments = npc.GetAttachments();
+            Assert.That(attachments.Count, Is.EqualTo(1));
+            SceneObjectGroup attSo = attachments[0];
+
+            // Just for now, we won't test the name since this is (wrongly) the asset part name rather than the item
+            // name.  TODO: Do need to fix ultimately since the item may be renamed before being passed on to an NPC.
+//            Assert.That(attSo.Name, Is.EqualTo(attName));
+
+            Assert.That(attSo.AttachmentPoint, Is.EqualTo((byte)AttachmentPoint.Chest));
+            Assert.That(attSo.IsAttachment);
+            Assert.That(attSo.UsesPhysics, Is.False);
+            Assert.That(attSo.IsTemporary, Is.False);
+            Assert.That(attSo.OwnerID, Is.EqualTo(npc.UUID));
+        }
+
+        [Test]
         public void TestMove()
         {
             TestHelpers.InMethod();
-- 
cgit v1.1


From 1dc03e5c4f76064fc193dab3c8f3e1f3783ec227 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 6 Mar 2012 01:47:43 +0000
Subject: Simplify NPCModuleTests code by putting the NPCModule in an instance
 variable rather than making each test fetch it seperately.

Also rename instance variables in the test to conform to naming standards and for understandability
---
 .../World/NPC/Tests/NPCModuleTests.cs              | 117 ++++++++++-----------
 1 file changed, 56 insertions(+), 61 deletions(-)

(limited to 'OpenSim/Region/OptionalModules')

diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
index 36e2d4a..9a7e9e8 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
@@ -50,10 +50,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
     [TestFixture]
     public class NPCModuleTests
     {
-        private TestScene scene;
-        private AvatarFactoryModule afm;
-        private UserManagementModule umm;
-        private AttachmentsModule am;
+        private TestScene m_scene;
+        private AvatarFactoryModule m_afMod;
+        private UserManagementModule m_umMod;
+        private AttachmentsModule m_attMod;
+        private NPCModule m_npcMod;
 
         [TestFixtureSetUp]
         public void FixtureInit()
@@ -79,12 +80,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             config.AddConfig("Modules");
             config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
 
-            afm = new AvatarFactoryModule();
-            umm = new UserManagementModule();
-            am = new AttachmentsModule();
+            m_afMod = new AvatarFactoryModule();
+            m_umMod = new UserManagementModule();
+            m_attMod = new AttachmentsModule();
+            m_npcMod = new NPCModule();
 
-            scene = SceneHelpers.SetupScene();
-            SceneHelpers.SetupSceneModules(scene, config, afm, umm, am, new BasicInventoryAccessModule(), new NPCModule());
+            m_scene = SceneHelpers.SetupScene();
+            SceneHelpers.SetupSceneModules(m_scene, config, m_afMod, m_umMod, m_attMod, m_npcMod, new BasicInventoryAccessModule());
         }
 
         [Test]
@@ -93,7 +95,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
 
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
 //            ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId);
 
             // 8 is the index of the first baked texture in AvatarAppearance
@@ -104,18 +106,17 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
 
             // We also need to add the texture to the asset service, otherwise the AvatarFactoryModule will tell
             // ScenePresence.SendInitialData() to reset our entire appearance.
-            scene.AssetService.Store(AssetHelpers.CreateNotecardAsset(originalFace8TextureId));
+            m_scene.AssetService.Store(AssetHelpers.CreateNotecardAsset(originalFace8TextureId));
 
-            afm.SetAppearance(sp, originalTe, null);
+            m_afMod.SetAppearance(sp, originalTe, null);
 
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, m_scene, sp.Appearance);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
 
             Assert.That(npc, Is.Not.Null);
             Assert.That(npc.Appearance.Texture.FaceTextures[8].TextureID, Is.EqualTo(originalFace8TextureId));
-            Assert.That(umm.GetUserName(npc.UUID), Is.EqualTo(string.Format("{0} {1}", npc.Firstname, npc.Lastname)));
+            Assert.That(m_umMod.GetUserName(npc.UUID), Is.EqualTo(string.Format("{0} {1}", npc.Firstname, npc.Lastname)));
         }
 
         [Test]
@@ -124,16 +125,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
 
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
 //            ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId);
 
             Vector3 startPos = new Vector3(128, 128, 30);
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", startPos, UUID.Zero, true, m_scene, sp.Appearance);
 
-            npcModule.DeleteNPC(npcId, scene);
+            m_npcMod.DeleteNPC(npcId, m_scene);
 
-            ScenePresence deletedNpc = scene.GetScenePresence(npcId);
+            ScenePresence deletedNpc = m_scene.GetScenePresence(npcId);
 
             Assert.That(deletedNpc, Is.Null);
         }
@@ -145,21 +145,20 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
 //            log4net.Config.XmlConfigurator.Configure();
 
             UUID userId = TestHelpers.ParseTail(0x1);
-            UserAccountHelpers.CreateUserWithInventory(scene, userId);
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
+            UserAccountHelpers.CreateUserWithInventory(m_scene, userId);
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
 
             UUID attItemId = TestHelpers.ParseTail(0x2);
             UUID attAssetId = TestHelpers.ParseTail(0x3);
             string attName = "att";
 
-            UserInventoryHelpers.CreateInventoryItem(scene, attName, attItemId, attAssetId, sp.UUID, InventoryType.Object);
+            UserInventoryHelpers.CreateInventoryItem(m_scene, attName, attItemId, attAssetId, sp.UUID, InventoryType.Object);
 
-            am.RezSingleAttachmentFromInventory(sp, attItemId, (uint)AttachmentPoint.Chest);
+            m_attMod.RezSingleAttachmentFromInventory(sp, attItemId, (uint)AttachmentPoint.Chest);
 
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, m_scene, sp.Appearance);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
 
             // Check scene presence status
             Assert.That(npc.HasAttachments(), Is.True);
@@ -185,11 +184,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
 //            log4net.Config.XmlConfigurator.Configure();
 
             UUID userId = TestHelpers.ParseTail(0x1);
-            UserAccountHelpers.CreateUserWithInventory(scene, userId);
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
+            UserAccountHelpers.CreateUserWithInventory(m_scene, userId);
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
 
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, m_scene, sp.Appearance);
 
             // Now add the attachment to the original avatar and use that to load a new appearance
             // TODO: Could also run tests loading from a notecard though this isn't much different for our purposes here
@@ -197,13 +195,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             UUID attAssetId = TestHelpers.ParseTail(0x3);
             string attName = "att";
 
-            UserInventoryHelpers.CreateInventoryItem(scene, attName, attItemId, attAssetId, sp.UUID, InventoryType.Object);
+            UserInventoryHelpers.CreateInventoryItem(m_scene, attName, attItemId, attAssetId, sp.UUID, InventoryType.Object);
 
-            am.RezSingleAttachmentFromInventory(sp, attItemId, (uint)AttachmentPoint.Chest);
+            m_attMod.RezSingleAttachmentFromInventory(sp, attItemId, (uint)AttachmentPoint.Chest);
 
-            npcModule.SetNPCAppearance(npcId, sp.Appearance, scene);
+            m_npcMod.SetNPCAppearance(npcId, sp.Appearance, m_scene);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
 
             // Check scene presence status
             Assert.That(npc.HasAttachments(), Is.True);
@@ -228,31 +226,30 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
 
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
 //            ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId);
 
             Vector3 startPos = new Vector3(128, 128, 30);
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", startPos, UUID.Zero, true, m_scene, sp.Appearance);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
             Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos));
 
             // For now, we'll make the scene presence fly to simplify this test, but this needs to change.
             npc.Flying = true;
 
-            scene.Update();
+            m_scene.Update();
             Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos));
 
             Vector3 targetPos = startPos + new Vector3(0, 10, 0);
-            npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false);
+            m_npcMod.MoveToTarget(npc.UUID, m_scene, targetPos, false, false);
 
             Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos));
             //Assert.That(npc.Rotation, Is.EqualTo(new Quaternion(0, 0, 0.7071068f, 0.7071068f)));
             Assert.That(
                 npc.Rotation, new QuaternionToleranceConstraint(new Quaternion(0, 0, 0.7071068f, 0.7071068f), 0.000001));
 
-            scene.Update();
+            m_scene.Update();
 
             // We should really check the exact figure.
             Assert.That(npc.AbsolutePosition.X, Is.EqualTo(startPos.X));
@@ -261,7 +258,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             Assert.That(npc.AbsolutePosition.Z, Is.LessThan(targetPos.X));
 
             for (int i = 0; i < 10; i++)
-                scene.Update();
+                m_scene.Update();
 
             double distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos);
             Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on first move");
@@ -271,14 +268,14 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             // Try a second movement
             startPos = npc.AbsolutePosition;
             targetPos = startPos + new Vector3(10, 0, 0);
-            npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false);
+            m_npcMod.MoveToTarget(npc.UUID, m_scene, targetPos, false, false);
 
             Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos));
 //            Assert.That(npc.Rotation, Is.EqualTo(new Quaternion(0, 0, 0, 1)));
             Assert.That(
                 npc.Rotation, new QuaternionToleranceConstraint(new Quaternion(0, 0, 0, 1), 0.000001));
 
-            scene.Update();
+            m_scene.Update();
 
             // We should really check the exact figure.
             Assert.That(npc.AbsolutePosition.X, Is.GreaterThan(startPos.X));
@@ -287,7 +284,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             Assert.That(npc.AbsolutePosition.Z, Is.EqualTo(startPos.Z));
 
             for (int i = 0; i < 10; i++)
-                scene.Update();
+                m_scene.Update();
 
             distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos);
             Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on second move");
@@ -300,17 +297,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
 
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
 
             Vector3 startPos = new Vector3(128, 128, 30);
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", startPos, UUID.Zero, true, m_scene, sp.Appearance);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
-            SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
+            SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
 
             part.SitTargetPosition = new Vector3(0, 0, 1);
-            npcModule.Sit(npc.UUID, part.UUID, scene);
+            m_npcMod.Sit(npc.UUID, part.UUID, m_scene);
 
             Assert.That(part.SitTargetAvatar, Is.EqualTo(npcId));
             Assert.That(npc.ParentID, Is.EqualTo(part.LocalId));
@@ -318,7 +314,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
                 npc.AbsolutePosition,
                 Is.EqualTo(part.AbsolutePosition + part.SitTargetPosition + ScenePresence.SIT_TARGET_ADJUSTMENT));
 
-            npcModule.Stand(npc.UUID, scene);
+            m_npcMod.Stand(npc.UUID, m_scene);
 
             Assert.That(part.SitTargetAvatar, Is.EqualTo(UUID.Zero));
             Assert.That(npc.ParentID, Is.EqualTo(0));
@@ -330,19 +326,18 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
             TestHelpers.InMethod();
 //            log4net.Config.XmlConfigurator.Configure();
 
-            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
+            ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1));
 
             // FIXME: To get this to work for now, we are going to place the npc right next to the target so that
             // the autopilot doesn't trigger
             Vector3 startPos = new Vector3(1, 1, 1);
 
-            INPCModule npcModule = scene.RequestModuleInterface<INPCModule>();
-            UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, UUID.Zero, true, scene, sp.Appearance);
+            UUID npcId = m_npcMod.CreateNPC("John", "Smith", startPos, UUID.Zero, true, m_scene, sp.Appearance);
 
-            ScenePresence npc = scene.GetScenePresence(npcId);
-            SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
+            ScenePresence npc = m_scene.GetScenePresence(npcId);
+            SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
 
-            npcModule.Sit(npc.UUID, part.UUID, scene);
+            m_npcMod.Sit(npc.UUID, part.UUID, m_scene);
 
             Assert.That(part.SitTargetAvatar, Is.EqualTo(UUID.Zero));
             Assert.That(npc.ParentID, Is.EqualTo(part.LocalId));
@@ -355,7 +350,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests
                 npc.AbsolutePosition,
                 Is.EqualTo(part.AbsolutePosition + new Vector3(0, 0, 0.845499337f)));
 
-            npcModule.Stand(npc.UUID, scene);
+            m_npcMod.Stand(npc.UUID, m_scene);
 
             Assert.That(part.SitTargetAvatar, Is.EqualTo(UUID.Zero));
             Assert.That(npc.ParentID, Is.EqualTo(0));
-- 
cgit v1.1


From 749c3fef8ad2d3af97fcd9ab9c72740675e46715 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 8 Mar 2012 01:51:37 +0000
Subject: Change "help" to display categories/module list then "help
 <category/module>" to display commands in a category.

This is to deal with the hundred lines of command splurge when one previously typed "help"
Modelled somewhat on the mysql console
One can still type help <command> to get per command help at any point.
Categories capitalized to avoid conflict with the all-lowercase commands (except for commander system, as of yet).
Does not affect command parsing or any other aspects of the console apart from the help system.
Backwards compatible with existing modules.
---
 .../Agent/TextureSender/J2KDecoderCommandModule.cs |  2 +-
 .../Agent/UDP/Linden/LindenUDPInfoModule.cs        | 14 ++++++-------
 .../OptionalModules/Asset/AssetInfoModule.cs       |  4 ++--
 .../Avatar/Appearance/AppearanceInfoModule.cs      | 10 ++++-----
 .../PhysicsParameters/PhysicsParameters.cs         | 24 +++++++++++-----------
 5 files changed, 27 insertions(+), 27 deletions(-)

(limited to 'OpenSim/Region/OptionalModules')

diff --git a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
index 439096a..c897aa5 100644
--- a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
+++ b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
@@ -92,7 +92,7 @@ namespace OpenSim.Region.OptionalModules.Agent.TextureSender
                 m_scene = scene;
 
             MainConsole.Instance.Commands.AddCommand(
-                "j2k",
+                "Assets",
                 false,
                 "j2k decode",
                 "j2k decode <ID>",
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
index 261029c..a7ebecc 100644
--- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
@@ -82,19 +82,19 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
                 m_scenes[scene.RegionInfo.RegionID] = scene;
 
             scene.AddCommand(
-                this, "image queues clear",
+                "Comms", this, "image queues clear",
                 "image queues clear <first-name> <last-name>",
                 "Clear the image queues (textures downloaded via UDP) for a particular client.",
                 (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd)));
 
             scene.AddCommand(
-                this, "image queues show",
+                "Comms", this, "image queues show",
                 "image queues show <first-name> <last-name>",
                 "Show the image queues (textures downloaded via UDP) for a particular client.",
                 (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd)));
 
             scene.AddCommand(
-                this, "show pqueues",
+                "Comms", this, "show pqueues",
                 "show pqueues [full]",
                 "Show priority queue data for each client", 
                 "Without the 'full' option, only root agents are shown."
@@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
                 (mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd)));
             
             scene.AddCommand(
-                this, "show queues",
+                "Comms", this, "show queues",
                 "show queues [full]",
                 "Show queue data for each client", 
                 "Without the 'full' option, only root agents are shown."
@@ -110,13 +110,13 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
                 (mod, cmd) => MainConsole.Instance.Output(GetQueuesReport(cmd)));
 
             scene.AddCommand(
-                this, "show image queues",
+                "Comms", this, "show image queues",
                 "show image queues <first-name> <last-name>",
                 "Show the image queues (textures downloaded via UDP) for a particular client.",
                 (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd)));
             
             scene.AddCommand(
-                this, "show throttles",
+                "Comms", this, "show throttles",
                 "show throttles [full]",
                 "Show throttle settings for each client and for the server overall", 
                 "Without the 'full' option, only root agents are shown."
@@ -124,7 +124,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
                 (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd)));
 
             scene.AddCommand(
-                this, "emergency-monitoring",
+                "Comms", this, "emergency-monitoring",
                 "emergency-monitoring",
                 "Go on/off emergency monitoring mode",
                 "Go on/off emergency monitoring mode",
diff --git a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
index a5207eb..41ec14f 100644
--- a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
@@ -88,7 +88,7 @@ namespace OpenSim.Region.OptionalModules.Asset
                 m_scene = scene;
 
             MainConsole.Instance.Commands.AddCommand(
-                "asset",
+                "Assets",
                 false,
                 "show asset",
                 "show asset <ID>",
@@ -96,7 +96,7 @@ namespace OpenSim.Region.OptionalModules.Asset
                 HandleShowAsset);
 
             MainConsole.Instance.Commands.AddCommand(
-                "asset", false, "dump asset",
+                "Assets", false, "dump asset",
                 "dump asset <id>",
                 "Dump an asset",
                 HandleDumpAsset);
diff --git a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
index 2369d94..6bb6729 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
@@ -94,13 +94,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
                 m_scenes[scene.RegionInfo.RegionID] = scene;
 
             scene.AddCommand(
-                this, "show appearance",
+                "Users", this, "show appearance",
                 "show appearance [<first-name> <last-name>]",
                 "Synonym for 'appearance show'",
                 HandleShowAppearanceCommand);
             
             scene.AddCommand(
-                this, "appearance show",
+                "Users", this, "appearance show",
                 "appearance show [<first-name> <last-name>]",
                 "Show appearance information for each avatar in the simulator.",
                 "This command checks whether the simulator has all the baked textures required to display an avatar to other viewers.  "
@@ -110,14 +110,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
                 HandleShowAppearanceCommand);
 
             scene.AddCommand(
-                this, "appearance send",
+                "Users", this, "appearance send",
                 "appearance send [<first-name> <last-name>]",
                 "Send appearance data for each avatar in the simulator to other viewers.",
                 "Optionally, you can specify that only a particular avatar's appearance data is sent.",
                 HandleSendAppearanceCommand);
 
             scene.AddCommand(
-                this, "appearance rebake",
+                "Users", this, "appearance rebake",
                 "appearance rebake <first-name> <last-name>",
                 "Send a request to the user's viewer for it to rebake and reupload its appearance textures.",
                 "This is currently done for all baked texture references previously received, whether the simulator can find the asset or not."
@@ -127,7 +127,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
                 HandleRebakeAppearanceCommand);
 
             scene.AddCommand(
-                this, "appearance find",
+                "Users", this, "appearance find",
                 "appearance find <uuid-or-start-of-uuid>",
                 "Find out which avatar uses the given asset as a baked texture, if any.",
                 "You can specify just the beginning of the uuid, e.g. 2008a8d.  A longer UUID must be in dashed format.",
diff --git a/OpenSim/Region/OptionalModules/PhysicsParameters/PhysicsParameters.cs b/OpenSim/Region/OptionalModules/PhysicsParameters/PhysicsParameters.cs
index 23ef757..a3f68e5 100755
--- a/OpenSim/Region/OptionalModules/PhysicsParameters/PhysicsParameters.cs
+++ b/OpenSim/Region/OptionalModules/PhysicsParameters/PhysicsParameters.cs
@@ -100,22 +100,22 @@ namespace OpenSim.Region.OptionalModules.PhysicsParameters
         {
             if (!m_commandsLoaded)
             {
-                MainConsole.Instance.Commands.AddCommand("Physics", false, "physics set",
-                    "physics set",
-                    "Set physics parameter from currently selected region" + Environment.NewLine
-                    + "Invocation: " + setInvocation,
+                MainConsole.Instance.Commands.AddCommand(
+                    "Regions", false, "physics set",
+                    setInvocation,
+                    "Set physics parameter from currently selected region",
                     ProcessPhysicsSet);
 
-                MainConsole.Instance.Commands.AddCommand("Physics", false, "physics get",
-                    "physics get",
-                    "Get physics parameter from currently selected region" + Environment.NewLine
-                    + "Invocation: " + getInvocation, 
+                MainConsole.Instance.Commands.AddCommand(
+                    "Regions", false, "physics get",
+                    getInvocation,
+                    "Get physics parameter from currently selected region",
                     ProcessPhysicsGet);
 
-                MainConsole.Instance.Commands.AddCommand("Physics", false, "physics list",
-                    "physics list",
-                    "List settable physics parameters" + Environment.NewLine
-                    + "Invocation: " + listInvocation,
+                MainConsole.Instance.Commands.AddCommand(
+                    "Regions", false, "physics list",
+                    listInvocation,
+                    "List settable physics parameters",
                     ProcessPhysicsList);
 
                 m_commandsLoaded = true;
-- 
cgit v1.1