diff options
24 files changed, 191 insertions, 134 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index ad683b8..3abf40b 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -1768,7 +1768,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1768 | m_log.Info("[RADMIN]: Received Estate Reload Request"); | 1768 | m_log.Info("[RADMIN]: Received Estate Reload Request"); |
1769 | 1769 | ||
1770 | Hashtable responseData = (Hashtable)response.Value; | 1770 | Hashtable responseData = (Hashtable)response.Value; |
1771 | Hashtable requestData = (Hashtable)request.Params[0]; | 1771 | // Hashtable requestData = (Hashtable)request.Params[0]; |
1772 | 1772 | ||
1773 | m_application.SceneManager.ForEachScene(s => | 1773 | m_application.SceneManager.ForEachScene(s => |
1774 | s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false) | 1774 | s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false) |
diff --git a/OpenSim/Framework/Console/LocalConsole.cs b/OpenSim/Framework/Console/LocalConsole.cs index d41481f..a967db6 100644 --- a/OpenSim/Framework/Console/LocalConsole.cs +++ b/OpenSim/Framework/Console/LocalConsole.cs | |||
@@ -426,6 +426,21 @@ namespace OpenSim.Framework.Console | |||
426 | System.Console.Write("{0}", prompt); | 426 | System.Console.Write("{0}", prompt); |
427 | 427 | ||
428 | break; | 428 | break; |
429 | case ConsoleKey.Delete: | ||
430 | if (m_cursorXPosition == m_commandLine.Length) | ||
431 | break; | ||
432 | |||
433 | m_commandLine.Remove(m_cursorXPosition, 1); | ||
434 | |||
435 | SetCursorLeft(0); | ||
436 | m_cursorYPosition = SetCursorTop(m_cursorYPosition); | ||
437 | |||
438 | if (m_echo) | ||
439 | System.Console.Write("{0}{1} ", prompt, m_commandLine); | ||
440 | else | ||
441 | System.Console.Write("{0}", prompt); | ||
442 | |||
443 | break; | ||
429 | case ConsoleKey.End: | 444 | case ConsoleKey.End: |
430 | m_cursorXPosition = m_commandLine.Length; | 445 | m_cursorXPosition = m_commandLine.Length; |
431 | break; | 446 | break; |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index cfb36fe..59ce2c4 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -1097,9 +1097,8 @@ namespace OpenSim.Framework | |||
1097 | /// <summary> | 1097 | /// <summary> |
1098 | /// Tell the client that an object has been deleted | 1098 | /// Tell the client that an object has been deleted |
1099 | /// </summary> | 1099 | /// </summary> |
1100 | /// <param name="regionHandle"></param> | ||
1101 | /// <param name="localID"></param> | 1100 | /// <param name="localID"></param> |
1102 | void SendKillObject(ulong regionHandle, List<uint> localID); | 1101 | void SendKillObject(List<uint> localID); |
1103 | 1102 | ||
1104 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); | 1103 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); |
1105 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); | 1104 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 47dd842..e014471 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -1588,7 +1588,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1588 | OutPacket(pc, ThrottleOutPacketType.Unknown); | 1588 | OutPacket(pc, ThrottleOutPacketType.Unknown); |
1589 | } | 1589 | } |
1590 | 1590 | ||
1591 | public void SendKillObject(ulong regionHandle, List<uint> localIDs) | 1591 | public void SendKillObject(List<uint> localIDs) |
1592 | { | 1592 | { |
1593 | // m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle); | 1593 | // m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle); |
1594 | 1594 | ||
@@ -11555,8 +11555,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11555 | if (part == null) | 11555 | if (part == null) |
11556 | { | 11556 | { |
11557 | // It's a ghost! tell the client to delete it from view. | 11557 | // It's a ghost! tell the client to delete it from view. |
11558 | simClient.SendKillObject(Scene.RegionInfo.RegionHandle, | 11558 | simClient.SendKillObject(new List<uint> { localId }); |
11559 | new List<uint> { localId }); | ||
11560 | } | 11559 | } |
11561 | else | 11560 | else |
11562 | { | 11561 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 7d16635..f69ec21 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -776,7 +776,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
776 | m_scene.ForEachClient( | 776 | m_scene.ForEachClient( |
777 | client => | 777 | client => |
778 | { if (client.AgentId != so.AttachedAvatar) | 778 | { if (client.AgentId != so.AttachedAvatar) |
779 | client.SendKillObject(m_scene.RegionInfo.RegionHandle, new List<uint>() { so.LocalId }); | 779 | client.SendKillObject(new List<uint>() { so.LocalId }); |
780 | }); | 780 | }); |
781 | } | 781 | } |
782 | 782 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs index 25444e5..508743c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs | |||
@@ -833,11 +833,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
833 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1); | 833 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1); |
834 | 834 | ||
835 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID); | 835 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID); |
836 | TestClient tc = new TestClient(acd, sceneA, sh.SceneManager); | 836 | TestClient tc = new TestClient(acd, sceneA); |
837 | List<TestClient> destinationTestClients = new List<TestClient>(); | 837 | List<TestClient> destinationTestClients = new List<TestClient>(); |
838 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); | 838 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); |
839 | 839 | ||
840 | ScenePresence beforeTeleportSp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager); | 840 | ScenePresence beforeTeleportSp = SceneHelpers.AddScenePresence(sceneA, tc, acd); |
841 | beforeTeleportSp.AbsolutePosition = new Vector3(30, 31, 32); | 841 | beforeTeleportSp.AbsolutePosition = new Vector3(30, 31, 32); |
842 | 842 | ||
843 | InventoryItemBase attItem = CreateAttachmentItem(sceneA, ua1.PrincipalID, "att", 0x10, 0x20); | 843 | InventoryItemBase attItem = CreateAttachmentItem(sceneA, ua1.PrincipalID, "att", 0x10, 0x20); |
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index f555b49..11a0146 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs | |||
@@ -104,14 +104,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
104 | // better than losing the object for now. | 104 | // better than losing the object for now. |
105 | if (permissionToDelete) | 105 | if (permissionToDelete) |
106 | { | 106 | { |
107 | List<uint> killIDs = new List<uint>(); | ||
108 | |||
109 | foreach (SceneObjectGroup g in objectGroups) | 107 | foreach (SceneObjectGroup g in objectGroups) |
110 | { killIDs.Add(g.LocalId); | 108 | g.DeleteGroupFromScene(false); |
111 | g.DeleteGroupFromScene(true); | ||
112 | } | ||
113 | |||
114 | m_scene.SendKillObject(killIDs); | ||
115 | } | 109 | } |
116 | } | 110 | } |
117 | 111 | ||
@@ -160,7 +154,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
160 | if (x.permissionToDelete) | 154 | if (x.permissionToDelete) |
161 | { | 155 | { |
162 | foreach (SceneObjectGroup g in x.objectGroups) | 156 | foreach (SceneObjectGroup g in x.objectGroups) |
163 | m_scene.DeleteSceneObject(g, false); | 157 | m_scene.DeleteSceneObject(g, true); |
164 | } | 158 | } |
165 | } | 159 | } |
166 | catch (Exception e) | 160 | catch (Exception e) |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 8ddaa60..80581dc 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -490,7 +490,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
490 | item.SaleType = itemUpd.SaleType; | 490 | item.SaleType = itemUpd.SaleType; |
491 | 491 | ||
492 | InventoryService.UpdateItem(item); | 492 | InventoryService.UpdateItem(item); |
493 | remoteClient.SendBulkUpdateInventory(item); | 493 | |
494 | // We cannot send out a bulk update here, since this will cause editing of clothing to start | ||
495 | // failing frequently. Possibly this is a race with a separate transaction that uploads the asset. | ||
496 | // remoteClient.SendBulkUpdateInventory(item); | ||
494 | } | 497 | } |
495 | 498 | ||
496 | if (UUID.Zero != transactionID) | 499 | if (UUID.Zero != transactionID) |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 1fa2fc7..80c4922 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3480,7 +3480,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3480 | delegate(IClientAPI client) | 3480 | delegate(IClientAPI client) |
3481 | { | 3481 | { |
3482 | //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway | 3482 | //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway |
3483 | try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); } | 3483 | try { client.SendKillObject(new List<uint> { avatar.LocalId }); } |
3484 | catch (NullReferenceException) { } | 3484 | catch (NullReferenceException) { } |
3485 | }); | 3485 | }); |
3486 | } | 3486 | } |
@@ -3560,7 +3560,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3560 | } | 3560 | } |
3561 | deleteIDs.Add(localID); | 3561 | deleteIDs.Add(localID); |
3562 | } | 3562 | } |
3563 | ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, deleteIDs); }); | 3563 | |
3564 | ForEachClient(c => c.SendKillObject(deleteIDs)); | ||
3564 | } | 3565 | } |
3565 | 3566 | ||
3566 | #endregion | 3567 | #endregion |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 9e7a986..38fa26a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1221,11 +1221,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1221 | /// <summary> | 1221 | /// <summary> |
1222 | /// Delete this group from its scene. | 1222 | /// Delete this group from its scene. |
1223 | /// </summary> | 1223 | /// </summary> |
1224 | /// | 1224 | /// <remarks> |
1225 | /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood | 1225 | /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood |
1226 | /// up and all avatars receive notification of its removal. Removal of the scene object from database backup | 1226 | /// up and all avatars receive notification of its removal. Removal of the scene object from database backup |
1227 | /// must be handled by the caller. | 1227 | /// must be handled by the caller. |
1228 | /// | 1228 | /// </remarks> |
1229 | /// <param name="silent">If true then deletion is not broadcast to clients</param> | 1229 | /// <param name="silent">If true then deletion is not broadcast to clients</param> |
1230 | public void DeleteGroupFromScene(bool silent) | 1230 | public void DeleteGroupFromScene(bool silent) |
1231 | { | 1231 | { |
@@ -1234,10 +1234,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1234 | { | 1234 | { |
1235 | SceneObjectPart part = parts[i]; | 1235 | SceneObjectPart part = parts[i]; |
1236 | 1236 | ||
1237 | Scene.ForEachRootScenePresence(delegate(ScenePresence avatar) | 1237 | Scene.ForEachScenePresence(sp => |
1238 | { | 1238 | { |
1239 | if (avatar.ParentID == LocalId) | 1239 | if (!sp.IsChildAgent && sp.ParentID == LocalId) |
1240 | avatar.StandUp(); | 1240 | sp.StandUp(); |
1241 | 1241 | ||
1242 | if (!silent) | 1242 | if (!silent) |
1243 | { | 1243 | { |
@@ -1245,9 +1245,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1245 | if (part == m_rootPart) | 1245 | if (part == m_rootPart) |
1246 | { | 1246 | { |
1247 | if (!IsAttachment | 1247 | if (!IsAttachment |
1248 | || AttachedAvatar == avatar.ControllingClient.AgentId | 1248 | || AttachedAvatar == sp.UUID |
1249 | || !HasPrivateAttachmentPoint) | 1249 | || !HasPrivateAttachmentPoint) |
1250 | avatar.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId }); | 1250 | sp.ControllingClient.SendKillObject(new List<uint> { part.LocalId }); |
1251 | } | 1251 | } |
1252 | } | 1252 | } |
1253 | }); | 1253 | }); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs index 52ad538..d670dad 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs | |||
@@ -33,7 +33,9 @@ using NUnit.Framework; | |||
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Region.CoreModules.Framework.EntityTransfer; | ||
36 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; | 37 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; |
38 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; | ||
37 | using OpenSim.Region.CoreModules.World.Permissions; | 39 | using OpenSim.Region.CoreModules.World.Permissions; |
38 | using OpenSim.Region.Framework.Scenes; | 40 | using OpenSim.Region.Framework.Scenes; |
39 | using OpenSim.Services.Interfaces; | 41 | using OpenSim.Services.Interfaces; |
@@ -52,6 +54,24 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
52 | [TestFixture] | 54 | [TestFixture] |
53 | public class SceneObjectDeRezTests : OpenSimTestCase | 55 | public class SceneObjectDeRezTests : OpenSimTestCase |
54 | { | 56 | { |
57 | [TestFixtureSetUp] | ||
58 | public void FixtureInit() | ||
59 | { | ||
60 | // Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread. | ||
61 | // This facility was added after the original async delete tests were written, so it may be possible now | ||
62 | // to not bother explicitly disabling their async (since everything will be running sync). | ||
63 | Util.FireAndForgetMethod = FireAndForgetMethod.RegressionTest; | ||
64 | } | ||
65 | |||
66 | [TestFixtureTearDown] | ||
67 | public void TearDown() | ||
68 | { | ||
69 | // We must set this back afterwards, otherwise later tests will fail since they're expecting multiple | ||
70 | // threads. Possibly, later tests should be rewritten so none of them require async stuff (which regression | ||
71 | // tests really shouldn't). | ||
72 | Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod; | ||
73 | } | ||
74 | |||
55 | /// <summary> | 75 | /// <summary> |
56 | /// Test deleting an object from a scene. | 76 | /// Test deleting an object from a scene. |
57 | /// </summary> | 77 | /// </summary> |
@@ -59,46 +79,96 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
59 | public void TestDeRezSceneObject() | 79 | public void TestDeRezSceneObject() |
60 | { | 80 | { |
61 | TestHelpers.InMethod(); | 81 | TestHelpers.InMethod(); |
62 | // log4net.Config.XmlConfigurator.Configure(); | ||
63 | 82 | ||
64 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); | 83 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); |
65 | 84 | ||
66 | TestScene scene = new SceneHelpers().SetupScene(); | 85 | TestScene scene = new SceneHelpers().SetupScene(); |
67 | IConfigSource configSource = new IniConfigSource(); | 86 | SceneHelpers.SetupSceneModules(scene, new PermissionsModule()); |
68 | IConfig config = configSource.AddConfig("Startup"); | 87 | TestClient client = (TestClient)SceneHelpers.AddScenePresence(scene, userId).ControllingClient; |
69 | config.Set("serverside_object_permissions", true); | ||
70 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() }); | ||
71 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; | ||
72 | 88 | ||
73 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | 89 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. |
74 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; | 90 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; |
75 | sogd.Enabled = false; | 91 | sogd.Enabled = false; |
76 | 92 | ||
77 | SceneObjectPart part | 93 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, "so1", userId); |
78 | = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero); | 94 | uint soLocalId = so.LocalId; |
79 | part.Name = "obj1"; | ||
80 | scene.AddNewSceneObject(new SceneObjectGroup(part), false); | ||
81 | 95 | ||
82 | List<uint> localIds = new List<uint>(); | 96 | List<uint> localIds = new List<uint>(); |
83 | localIds.Add(part.LocalId); | 97 | localIds.Add(so.LocalId); |
84 | scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero); | 98 | scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero); |
85 | 99 | ||
86 | // Check that object isn't deleted until we crank the sogd handle. | 100 | // Check that object isn't deleted until we crank the sogd handle. |
87 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); | 101 | SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId); |
88 | Assert.That(retrievedPart, Is.Not.Null); | 102 | Assert.That(retrievedPart, Is.Not.Null); |
89 | Assert.That(retrievedPart.ParentGroup.IsDeleted, Is.False); | 103 | Assert.That(retrievedPart.ParentGroup.IsDeleted, Is.False); |
90 | 104 | ||
91 | sogd.InventoryDeQueueAndDelete(); | 105 | sogd.InventoryDeQueueAndDelete(); |
92 | 106 | ||
93 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(part.LocalId); | 107 | SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId); |
94 | Assert.That(retrievedPart2, Is.Null); | 108 | Assert.That(retrievedPart2, Is.Null); |
109 | |||
110 | Assert.That(client.ReceivedKills.Count, Is.EqualTo(1)); | ||
111 | Assert.That(client.ReceivedKills[0], Is.EqualTo(soLocalId)); | ||
112 | } | ||
113 | |||
114 | /// <summary> | ||
115 | /// Test that child and root agents correctly receive KillObject notifications. | ||
116 | /// </summary> | ||
117 | [Test] | ||
118 | public void TestDeRezSceneObjectToAgents() | ||
119 | { | ||
120 | TestHelpers.InMethod(); | ||
121 | // TestHelpers.EnableLogging(); | ||
122 | |||
123 | SceneHelpers sh = new SceneHelpers(); | ||
124 | TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000); | ||
125 | TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1000, 999); | ||
126 | |||
127 | // We need this so that the creation of the root client for userB in sceneB can trigger the creation of a child client in sceneA | ||
128 | LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule(); | ||
129 | EntityTransferModule etmB = new EntityTransferModule(); | ||
130 | IConfigSource config = new IniConfigSource(); | ||
131 | IConfig modulesConfig = config.AddConfig("Modules"); | ||
132 | modulesConfig.Set("EntityTransferModule", etmB.Name); | ||
133 | modulesConfig.Set("SimulationServices", lscm.Name); | ||
134 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); | ||
135 | SceneHelpers.SetupSceneModules(sceneB, config, etmB); | ||
136 | |||
137 | // We need this for derez | ||
138 | SceneHelpers.SetupSceneModules(sceneA, new PermissionsModule()); | ||
139 | |||
140 | UserAccount uaA = UserAccountHelpers.CreateUserWithInventory(sceneA, "Andy", "AAA", 0x1, ""); | ||
141 | UserAccount uaB = UserAccountHelpers.CreateUserWithInventory(sceneA, "Brian", "BBB", 0x2, ""); | ||
142 | |||
143 | TestClient clientA = (TestClient)SceneHelpers.AddScenePresence(sceneA, uaA).ControllingClient; | ||
144 | |||
145 | // This is the more long-winded route we have to take to get a child client created for userB in sceneA | ||
146 | // rather than just calling AddScenePresence() as for userA | ||
147 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(uaB); | ||
148 | TestClient clientB = new TestClient(acd, sceneB); | ||
149 | List<TestClient> childClientsB = new List<TestClient>(); | ||
150 | EntityTransferHelpers.SetUpInformClientOfNeighbour(clientB, childClientsB); | ||
151 | |||
152 | SceneHelpers.AddScenePresence(sceneB, clientB, acd); | ||
153 | |||
154 | SceneObjectGroup so = SceneHelpers.AddSceneObject(sceneA); | ||
155 | uint soLocalId = so.LocalId; | ||
156 | |||
157 | sceneA.DeleteSceneObject(so, false); | ||
158 | |||
159 | Assert.That(clientA.ReceivedKills.Count, Is.EqualTo(1)); | ||
160 | Assert.That(clientA.ReceivedKills[0], Is.EqualTo(soLocalId)); | ||
161 | |||
162 | Assert.That(childClientsB[0].ReceivedKills.Count, Is.EqualTo(1)); | ||
163 | Assert.That(childClientsB[0].ReceivedKills[0], Is.EqualTo(soLocalId)); | ||
95 | } | 164 | } |
96 | 165 | ||
97 | /// <summary> | 166 | /// <summary> |
98 | /// Test deleting an object from a scene where the deleter is not the owner | 167 | /// Test deleting an object from a scene where the deleter is not the owner |
99 | /// </summary> | 168 | /// </summary> |
100 | /// | 169 | /// <remarks> |
101 | /// This test assumes that the deleter is not a god. | 170 | /// This test assumes that the deleter is not a god. |
171 | /// </remarks> | ||
102 | [Test] | 172 | [Test] |
103 | public void TestDeRezSceneObjectNotOwner() | 173 | public void TestDeRezSceneObjectNotOwner() |
104 | { | 174 | { |
@@ -109,10 +179,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
109 | UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001"); | 179 | UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001"); |
110 | 180 | ||
111 | TestScene scene = new SceneHelpers().SetupScene(); | 181 | TestScene scene = new SceneHelpers().SetupScene(); |
112 | IConfigSource configSource = new IniConfigSource(); | 182 | SceneHelpers.SetupSceneModules(scene, new PermissionsModule()); |
113 | IConfig config = configSource.AddConfig("Startup"); | ||
114 | config.Set("serverside_object_permissions", true); | ||
115 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() }); | ||
116 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; | 183 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; |
117 | 184 | ||
118 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | 185 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCrossingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCrossingTests.cs index 8775949..5a72239 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCrossingTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCrossingTests.cs | |||
@@ -95,11 +95,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
95 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB); | 95 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB); |
96 | 96 | ||
97 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId); | 97 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId); |
98 | TestClient tc = new TestClient(acd, sceneA, sh.SceneManager); | 98 | TestClient tc = new TestClient(acd, sceneA); |
99 | List<TestClient> destinationTestClients = new List<TestClient>(); | 99 | List<TestClient> destinationTestClients = new List<TestClient>(); |
100 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); | 100 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); |
101 | 101 | ||
102 | ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager); | 102 | ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, tc, acd); |
103 | originalSp.AbsolutePosition = new Vector3(128, 32, 10); | 103 | originalSp.AbsolutePosition = new Vector3(128, 32, 10); |
104 | 104 | ||
105 | // originalSp.Flying = true; | 105 | // originalSp.Flying = true; |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs index de4458d..297c66b 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs | |||
@@ -139,7 +139,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
139 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 139 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
140 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 140 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
141 | 141 | ||
142 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); | 142 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId); |
143 | sp.AbsolutePosition = new Vector3(30, 31, 32); | 143 | sp.AbsolutePosition = new Vector3(30, 31, 32); |
144 | 144 | ||
145 | List<TestClient> destinationTestClients = new List<TestClient>(); | 145 | List<TestClient> destinationTestClients = new List<TestClient>(); |
@@ -224,7 +224,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
224 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 224 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
225 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 225 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
226 | 226 | ||
227 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); | 227 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId); |
228 | sp.AbsolutePosition = preTeleportPosition; | 228 | sp.AbsolutePosition = preTeleportPosition; |
229 | 229 | ||
230 | // Make sceneB return false on query access | 230 | // Make sceneB return false on query access |
@@ -300,7 +300,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
300 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 300 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
301 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 301 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
302 | 302 | ||
303 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); | 303 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId); |
304 | sp.AbsolutePosition = preTeleportPosition; | 304 | sp.AbsolutePosition = preTeleportPosition; |
305 | 305 | ||
306 | // Make sceneB refuse CreateAgent | 306 | // Make sceneB refuse CreateAgent |
@@ -389,7 +389,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
389 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 389 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
390 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 390 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
391 | 391 | ||
392 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); | 392 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId); |
393 | sp.AbsolutePosition = preTeleportPosition; | 393 | sp.AbsolutePosition = preTeleportPosition; |
394 | 394 | ||
395 | sceneA.RequestTeleportLocation( | 395 | sceneA.RequestTeleportLocation( |
@@ -428,7 +428,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
428 | public void TestSameSimulatorNeighbouringRegions() | 428 | public void TestSameSimulatorNeighbouringRegions() |
429 | { | 429 | { |
430 | TestHelpers.InMethod(); | 430 | TestHelpers.InMethod(); |
431 | TestHelpers.EnableLogging(); | 431 | // TestHelpers.EnableLogging(); |
432 | 432 | ||
433 | UUID userId = TestHelpers.ParseTail(0x1); | 433 | UUID userId = TestHelpers.ParseTail(0x1); |
434 | 434 | ||
@@ -458,11 +458,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
458 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 458 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
459 | 459 | ||
460 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId); | 460 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId); |
461 | TestClient tc = new TestClient(acd, sceneA, sh.SceneManager); | 461 | TestClient tc = new TestClient(acd, sceneA); |
462 | List<TestClient> destinationTestClients = new List<TestClient>(); | 462 | List<TestClient> destinationTestClients = new List<TestClient>(); |
463 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); | 463 | EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients); |
464 | 464 | ||
465 | ScenePresence beforeSceneASp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager); | 465 | ScenePresence beforeSceneASp = SceneHelpers.AddScenePresence(sceneA, tc, acd); |
466 | beforeSceneASp.AbsolutePosition = new Vector3(30, 31, 32); | 466 | beforeSceneASp.AbsolutePosition = new Vector3(30, 31, 32); |
467 | 467 | ||
468 | Assert.That(beforeSceneASp, Is.Not.Null); | 468 | Assert.That(beforeSceneASp, Is.Not.Null); |
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 3644856..384eb1f 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -950,7 +950,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
950 | 950 | ||
951 | } | 951 | } |
952 | 952 | ||
953 | public void SendKillObject(ulong regionHandle, List<uint> localID) | 953 | public void SendKillObject(List<uint> localID) |
954 | { | 954 | { |
955 | 955 | ||
956 | } | 956 | } |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 8aae300..553443f 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -592,7 +592,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
592 | 592 | ||
593 | } | 593 | } |
594 | 594 | ||
595 | public virtual void SendKillObject(ulong regionHandle, List<uint> localID) | 595 | public virtual void SendKillObject(List<uint> localID) |
596 | { | 596 | { |
597 | } | 597 | } |
598 | 598 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs index 9d47657..262d734 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | |||
@@ -368,9 +368,10 @@ public class BSShapeMesh : BSShape | |||
368 | 368 | ||
369 | // Check to see if mesh was created (might require an asset). | 369 | // Check to see if mesh was created (might require an asset). |
370 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 370 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
371 | if (!newShape.isNativeShape) | 371 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) |
372 | { | 372 | { |
373 | // If a mesh was what was created, remember the built shape for later sharing. | 373 | // If a mesh was what was created, remember the built shape for later sharing. |
374 | // Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh. | ||
374 | Meshes.Add(newMeshKey, retMesh); | 375 | Meshes.Add(newMeshKey, retMesh); |
375 | } | 376 | } |
376 | 377 | ||
@@ -481,8 +482,11 @@ public class BSShapeMesh : BSShape | |||
481 | } | 482 | } |
482 | else | 483 | else |
483 | { | 484 | { |
485 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. | ||
486 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | ||
484 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", | 487 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", |
485 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); | 488 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); |
489 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); | ||
486 | } | 490 | } |
487 | } | 491 | } |
488 | newShape.shapeKey = newMeshKey; | 492 | newShape.shapeKey = newMeshKey; |
@@ -521,7 +525,7 @@ public class BSShapeHull : BSShape | |||
521 | 525 | ||
522 | // Check to see if hull was created (might require an asset). | 526 | // Check to see if hull was created (might require an asset). |
523 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 527 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
524 | if (!newShape.isNativeShape) | 528 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) |
525 | { | 529 | { |
526 | // If a mesh was what was created, remember the built shape for later sharing. | 530 | // If a mesh was what was created, remember the built shape for later sharing. |
527 | Hulls.Add(newHullKey, retHull); | 531 | Hulls.Add(newHullKey, retHull); |
diff --git a/OpenSim/Services/LLLoginService/LLLoginResponse.cs b/OpenSim/Services/LLLoginService/LLLoginResponse.cs index 9ec744f..400f303 100644 --- a/OpenSim/Services/LLLoginService/LLLoginResponse.cs +++ b/OpenSim/Services/LLLoginService/LLLoginResponse.cs | |||
@@ -227,7 +227,7 @@ namespace OpenSim.Services.LLLoginService | |||
227 | GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, | 227 | GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, |
228 | string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message, | 228 | string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message, |
229 | GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency, | 229 | GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency, |
230 | string DSTZone) | 230 | string DSTZone, string destinationsURL, string avatarsURL) |
231 | : this() | 231 | : this() |
232 | { | 232 | { |
233 | FillOutInventoryData(invSkel, libService); | 233 | FillOutInventoryData(invSkel, libService); |
@@ -246,6 +246,8 @@ namespace OpenSim.Services.LLLoginService | |||
246 | MapTileURL = mapTileURL; | 246 | MapTileURL = mapTileURL; |
247 | ProfileURL = profileURL; | 247 | ProfileURL = profileURL; |
248 | OpenIDURL = openIDURL; | 248 | OpenIDURL = openIDURL; |
249 | DestinationsURL = destinationsURL; | ||
250 | AvatarsURL = avatarsURL; | ||
249 | 251 | ||
250 | SearchURL = searchURL; | 252 | SearchURL = searchURL; |
251 | Currency = currency; | 253 | Currency = currency; |
@@ -533,6 +535,12 @@ namespace OpenSim.Services.LLLoginService | |||
533 | if (profileURL != String.Empty) | 535 | if (profileURL != String.Empty) |
534 | responseData["profile-server-url"] = profileURL; | 536 | responseData["profile-server-url"] = profileURL; |
535 | 537 | ||
538 | if (DestinationsURL != String.Empty) | ||
539 | responseData["destination_guide_url"] = DestinationsURL; | ||
540 | |||
541 | if (AvatarsURL != String.Empty) | ||
542 | responseData["avatar_picker_url"] = AvatarsURL; | ||
543 | |||
536 | // We need to send an openid_token back in the response too | 544 | // We need to send an openid_token back in the response too |
537 | if (openIDURL != String.Empty) | 545 | if (openIDURL != String.Empty) |
538 | responseData["openid_url"] = openIDURL; | 546 | responseData["openid_url"] = openIDURL; |
@@ -1056,6 +1064,16 @@ namespace OpenSim.Services.LLLoginService | |||
1056 | set { currency = value; } | 1064 | set { currency = value; } |
1057 | } | 1065 | } |
1058 | 1066 | ||
1067 | public string DestinationsURL | ||
1068 | { | ||
1069 | get; set; | ||
1070 | } | ||
1071 | |||
1072 | public string AvatarsURL | ||
1073 | { | ||
1074 | get; set; | ||
1075 | } | ||
1076 | |||
1059 | #endregion | 1077 | #endregion |
1060 | 1078 | ||
1061 | public class UserInfo | 1079 | public class UserInfo |
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 53a22d4..abda98f 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -78,6 +78,8 @@ namespace OpenSim.Services.LLLoginService | |||
78 | protected string m_OpenIDURL; | 78 | protected string m_OpenIDURL; |
79 | protected string m_SearchURL; | 79 | protected string m_SearchURL; |
80 | protected string m_Currency; | 80 | protected string m_Currency; |
81 | protected string m_DestinationGuide; | ||
82 | protected string m_AvatarPicker; | ||
81 | 83 | ||
82 | protected string m_AllowedClients; | 84 | protected string m_AllowedClients; |
83 | protected string m_DeniedClients; | 85 | protected string m_DeniedClients; |
@@ -117,6 +119,8 @@ namespace OpenSim.Services.LLLoginService | |||
117 | m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty); | 119 | m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty); |
118 | m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty); | 120 | m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty); |
119 | m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty); | 121 | m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty); |
122 | m_DestinationGuide = m_LoginServerConfig.GetString ("DestinationGuide", string.Empty); | ||
123 | m_AvatarPicker = m_LoginServerConfig.GetString ("AvatarPicker", string.Empty); | ||
120 | 124 | ||
121 | m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty); | 125 | m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty); |
122 | m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty); | 126 | m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty); |
@@ -453,7 +457,8 @@ namespace OpenSim.Services.LLLoginService | |||
453 | = new LLLoginResponse( | 457 | = new LLLoginResponse( |
454 | account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, | 458 | account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, |
455 | where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP, | 459 | where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP, |
456 | m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone); | 460 | m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone, |
461 | m_DestinationGuide, m_AvatarPicker); | ||
457 | 462 | ||
458 | m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName); | 463 | m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName); |
459 | 464 | ||
diff --git a/OpenSim/Tests/Common/Helpers/EntityTransferHelpers.cs b/OpenSim/Tests/Common/Helpers/EntityTransferHelpers.cs index 6cc7ff2..1b960b1 100644 --- a/OpenSim/Tests/Common/Helpers/EntityTransferHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/EntityTransferHelpers.cs | |||
@@ -82,7 +82,7 @@ namespace OpenSim.Tests.Common | |||
82 | Scene neighbourScene; | 82 | Scene neighbourScene; |
83 | SceneManager.Instance.TryGetScene(x, y, out neighbourScene); | 83 | SceneManager.Instance.TryGetScene(x, y, out neighbourScene); |
84 | 84 | ||
85 | TestClient neighbourTc = new TestClient(newAgent, neighbourScene, SceneManager.Instance); | 85 | TestClient neighbourTc = new TestClient(newAgent, neighbourScene); |
86 | neighbourTcs.Add(neighbourTc); | 86 | neighbourTcs.Add(neighbourTc); |
87 | neighbourScene.AddNewClient(neighbourTc, PresenceType.User); | 87 | neighbourScene.AddNewClient(neighbourTc, PresenceType.User); |
88 | }; | 88 | }; |
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs index bdd9093..d9bb85e 100644 --- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs | |||
@@ -447,9 +447,6 @@ namespace OpenSim.Tests.Common | |||
447 | /// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test | 447 | /// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test |
448 | /// </summary> | 448 | /// </summary> |
449 | /// <remarks> | 449 | /// <remarks> |
450 | /// This can be used for tests where there is only one region or where there are multiple non-neighbour regions | ||
451 | /// and teleport doesn't take place. | ||
452 | /// | ||
453 | /// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will | 450 | /// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will |
454 | /// make the agent circuit data (e.g. first, lastname) consistent with the user account data. | 451 | /// make the agent circuit data (e.g. first, lastname) consistent with the user account data. |
455 | /// </remarks> | 452 | /// </remarks> |
@@ -462,22 +459,6 @@ namespace OpenSim.Tests.Common | |||
462 | } | 459 | } |
463 | 460 | ||
464 | /// <summary> | 461 | /// <summary> |
465 | /// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test | ||
466 | /// </summary> | ||
467 | /// <remarks> | ||
468 | /// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will | ||
469 | /// make the agent circuit data (e.g. first, lastname) consistent with the user account data. | ||
470 | /// </remarks> | ||
471 | /// <param name="scene"></param> | ||
472 | /// <param name="agentId"></param> | ||
473 | /// <param name="sceneManager"></param> | ||
474 | /// <returns></returns> | ||
475 | public static ScenePresence AddScenePresence(Scene scene, UUID agentId, SceneManager sceneManager) | ||
476 | { | ||
477 | return AddScenePresence(scene, GenerateAgentData(agentId), sceneManager); | ||
478 | } | ||
479 | |||
480 | /// <summary> | ||
481 | /// Add a root agent. | 462 | /// Add a root agent. |
482 | /// </summary> | 463 | /// </summary> |
483 | /// <param name="scene"></param> | 464 | /// <param name="scene"></param> |
@@ -508,31 +489,7 @@ namespace OpenSim.Tests.Common | |||
508 | /// <returns></returns> | 489 | /// <returns></returns> |
509 | public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData) | 490 | public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData) |
510 | { | 491 | { |
511 | return AddScenePresence(scene, agentData, null); | 492 | return AddScenePresence(scene, new TestClient(agentData, scene), agentData); |
512 | } | ||
513 | |||
514 | /// <summary> | ||
515 | /// Add a root agent. | ||
516 | /// </summary> | ||
517 | /// <remarks> | ||
518 | /// This function | ||
519 | /// | ||
520 | /// 1) Tells the scene that an agent is coming. Normally, the login service (local if standalone, from the | ||
521 | /// userserver if grid) would give initial login data back to the client and separately tell the scene that the | ||
522 | /// agent was coming. | ||
523 | /// | ||
524 | /// 2) Connects the agent with the scene | ||
525 | /// | ||
526 | /// This function performs actions equivalent with notifying the scene that an agent is | ||
527 | /// coming and then actually connecting the agent to the scene. The one step missed out is the very first | ||
528 | /// </remarks> | ||
529 | /// <param name="scene"></param> | ||
530 | /// <param name="agentData"></param> | ||
531 | /// <param name="sceneManager"></param> | ||
532 | /// <returns></returns> | ||
533 | public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData, SceneManager sceneManager) | ||
534 | { | ||
535 | return AddScenePresence(scene, new TestClient(agentData, scene, sceneManager), agentData, sceneManager); | ||
536 | } | 493 | } |
537 | 494 | ||
538 | /// <summary> | 495 | /// <summary> |
@@ -552,10 +509,9 @@ namespace OpenSim.Tests.Common | |||
552 | /// </remarks> | 509 | /// </remarks> |
553 | /// <param name="scene"></param> | 510 | /// <param name="scene"></param> |
554 | /// <param name="agentData"></param> | 511 | /// <param name="agentData"></param> |
555 | /// <param name="sceneManager"></param> | ||
556 | /// <returns></returns> | 512 | /// <returns></returns> |
557 | public static ScenePresence AddScenePresence( | 513 | public static ScenePresence AddScenePresence( |
558 | Scene scene, IClientAPI client, AgentCircuitData agentData, SceneManager sceneManager) | 514 | Scene scene, IClientAPI client, AgentCircuitData agentData) |
559 | { | 515 | { |
560 | // We emulate the proper login sequence here by doing things in four stages | 516 | // We emulate the proper login sequence here by doing things in four stages |
561 | 517 | ||
@@ -578,10 +534,6 @@ namespace OpenSim.Tests.Common | |||
578 | /// Introduce an agent into the scene by adding a new client. | 534 | /// Introduce an agent into the scene by adding a new client. |
579 | /// </summary> | 535 | /// </summary> |
580 | /// <returns>The scene presence added</returns> | 536 | /// <returns>The scene presence added</returns> |
581 | /// <param name='sceneManager'> | ||
582 | /// Scene manager. Can be null if there is only one region in the test or multiple regions that are not | ||
583 | /// neighbours and where no teleporting takes place. | ||
584 | /// </param> | ||
585 | /// <param name='scene'></param> | 537 | /// <param name='scene'></param> |
586 | /// <param name='testClient'></param> | 538 | /// <param name='testClient'></param> |
587 | /// <param name='agentData'></param> | 539 | /// <param name='agentData'></param> |
@@ -607,7 +559,7 @@ namespace OpenSim.Tests.Common | |||
607 | acd.child = true; | 559 | acd.child = true; |
608 | 560 | ||
609 | // XXX: ViaLogin may not be correct for child agents | 561 | // XXX: ViaLogin may not be correct for child agents |
610 | TestClient client = new TestClient(acd, scene, null); | 562 | TestClient client = new TestClient(acd, scene); |
611 | return IntroduceClientToScene(scene, client, acd, TeleportFlags.ViaLogin); | 563 | return IntroduceClientToScene(scene, client, acd, TeleportFlags.ViaLogin); |
612 | } | 564 | } |
613 | 565 | ||
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index 664ecb6..09e751a 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs | |||
@@ -47,9 +47,9 @@ namespace OpenSim.Tests.Common.Mock | |||
47 | EventWaitHandle wh = new EventWaitHandle (false, EventResetMode.AutoReset, "Crossing"); | 47 | EventWaitHandle wh = new EventWaitHandle (false, EventResetMode.AutoReset, "Crossing"); |
48 | 48 | ||
49 | private Scene m_scene; | 49 | private Scene m_scene; |
50 | private SceneManager m_sceneManager; | ||
51 | 50 | ||
52 | // Properties so that we can get at received data for test purposes | 51 | // Properties so that we can get at received data for test purposes |
52 | public List<uint> ReceivedKills { get; private set; } | ||
53 | public List<UUID> ReceivedOfflineNotifications { get; private set; } | 53 | public List<UUID> ReceivedOfflineNotifications { get; private set; } |
54 | public List<UUID> ReceivedOnlineNotifications { get; private set; } | 54 | public List<UUID> ReceivedOnlineNotifications { get; private set; } |
55 | public List<UUID> ReceivedFriendshipTerminations { get; private set; } | 55 | public List<UUID> ReceivedFriendshipTerminations { get; private set; } |
@@ -434,33 +434,21 @@ namespace OpenSim.Tests.Common.Mock | |||
434 | /// <summary> | 434 | /// <summary> |
435 | /// Constructor | 435 | /// Constructor |
436 | /// </summary> | 436 | /// </summary> |
437 | /// <remarks> | ||
438 | /// Can be used for a test where there is only one region or where there are multiple regions that are not | ||
439 | /// neighbours and where no teleporting takes place. In other situations, the constructor that takes in a | ||
440 | /// scene manager should be used. | ||
441 | /// </remarks> | ||
442 | /// <param name="agentData"></param> | ||
443 | /// <param name="scene"></param> | ||
444 | public TestClient(AgentCircuitData agentData, Scene scene) : this(agentData, scene, null) {} | ||
445 | |||
446 | /// <summary> | ||
447 | /// Constructor | ||
448 | /// </summary> | ||
449 | /// <param name="agentData"></param> | 437 | /// <param name="agentData"></param> |
450 | /// <param name="scene"></param> | 438 | /// <param name="scene"></param> |
451 | /// <param name="sceneManager"></param> | 439 | /// <param name="sceneManager"></param> |
452 | public TestClient(AgentCircuitData agentData, Scene scene, SceneManager sceneManager) | 440 | public TestClient(AgentCircuitData agentData, Scene scene) |
453 | { | 441 | { |
454 | m_agentId = agentData.AgentID; | 442 | m_agentId = agentData.AgentID; |
455 | m_firstName = agentData.firstname; | 443 | m_firstName = agentData.firstname; |
456 | m_lastName = agentData.lastname; | 444 | m_lastName = agentData.lastname; |
457 | m_circuitCode = agentData.circuitcode; | 445 | m_circuitCode = agentData.circuitcode; |
458 | m_scene = scene; | 446 | m_scene = scene; |
459 | m_sceneManager = sceneManager; | ||
460 | SessionId = agentData.SessionID; | 447 | SessionId = agentData.SessionID; |
461 | SecureSessionId = agentData.SecureSessionID; | 448 | SecureSessionId = agentData.SecureSessionID; |
462 | CapsSeedUrl = agentData.CapsPath; | 449 | CapsSeedUrl = agentData.CapsPath; |
463 | 450 | ||
451 | ReceivedKills = new List<uint>(); | ||
464 | ReceivedOfflineNotifications = new List<UUID>(); | 452 | ReceivedOfflineNotifications = new List<UUID>(); |
465 | ReceivedOnlineNotifications = new List<UUID>(); | 453 | ReceivedOnlineNotifications = new List<UUID>(); |
466 | ReceivedFriendshipTerminations = new List<UUID>(); | 454 | ReceivedFriendshipTerminations = new List<UUID>(); |
@@ -529,22 +517,22 @@ namespace OpenSim.Tests.Common.Mock | |||
529 | 517 | ||
530 | public virtual void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) | 518 | public virtual void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) |
531 | { | 519 | { |
532 | |||
533 | } | 520 | } |
534 | 521 | ||
535 | public virtual void SendKillObject(ulong regionHandle, List<uint> localID) | 522 | public virtual void SendKillObject(List<uint> localID) |
536 | { | 523 | { |
524 | ReceivedKills.AddRange(localID); | ||
537 | } | 525 | } |
538 | 526 | ||
539 | public virtual void SetChildAgentThrottle(byte[] throttle) | 527 | public virtual void SetChildAgentThrottle(byte[] throttle) |
540 | { | 528 | { |
541 | } | 529 | } |
530 | |||
542 | public byte[] GetThrottlesPacked(float multiplier) | 531 | public byte[] GetThrottlesPacked(float multiplier) |
543 | { | 532 | { |
544 | return new byte[0]; | 533 | return new byte[0]; |
545 | } | 534 | } |
546 | 535 | ||
547 | |||
548 | public virtual void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) | 536 | public virtual void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) |
549 | { | 537 | { |
550 | } | 538 | } |
diff --git a/OpenSim/Tests/Common/Mock/TestXInventoryDataPlugin.cs b/OpenSim/Tests/Common/Mock/TestXInventoryDataPlugin.cs index 30b1f38..2be5524 100644 --- a/OpenSim/Tests/Common/Mock/TestXInventoryDataPlugin.cs +++ b/OpenSim/Tests/Common/Mock/TestXInventoryDataPlugin.cs | |||
@@ -118,8 +118,8 @@ namespace OpenSim.Tests.Common.Mock | |||
118 | 118 | ||
119 | folder.parentFolderID = new UUID(newParent); | 119 | folder.parentFolderID = new UUID(newParent); |
120 | 120 | ||
121 | XInventoryFolder[] newParentFolders | 121 | // XInventoryFolder[] newParentFolders |
122 | = GetFolders(new string[] { "folderID" }, new string[] { folder.parentFolderID.ToString() }); | 122 | // = GetFolders(new string[] { "folderID" }, new string[] { folder.parentFolderID.ToString() }); |
123 | 123 | ||
124 | // Console.WriteLine( | 124 | // Console.WriteLine( |
125 | // "Moved folder {0} {1}, to {2} {3}", | 125 | // "Moved folder {0} {1}, to {2} {3}", |
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index fee2a87..bc2b4cf 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example | |||
@@ -325,6 +325,12 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset | |||
325 | ; For V2/V3 webapp authentication SSO | 325 | ; For V2/V3 webapp authentication SSO |
326 | ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" | 326 | ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" |
327 | 327 | ||
328 | ; For V3 destination guide | ||
329 | ; DestinationGuide = "http://127.0.0.1/guide" | ||
330 | |||
331 | ; For V3 avatar picker (( work in progress )) | ||
332 | ; AvatarPicker = "http://127.0.0.1/avatars" | ||
333 | |||
328 | ; If you run this login server behind a proxy, set this to true | 334 | ; If you run this login server behind a proxy, set this to true |
329 | ; HasProxy = false | 335 | ; HasProxy = false |
330 | 336 | ||
diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index 2d5aa8c..1d66b7f 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example | |||
@@ -288,6 +288,12 @@ MapGetServiceConnector = "8002/OpenSim.Server.Handlers.dll:MapGetServiceConnecto | |||
288 | ; For V2/V3 webapp authentication SSO | 288 | ; For V2/V3 webapp authentication SSO |
289 | ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" | 289 | ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" |
290 | 290 | ||
291 | ; For V3 destination guide | ||
292 | ; DestinationGuide = "http://127.0.0.1/guide" | ||
293 | |||
294 | ; For V3 avatar picker (( work in progress )) | ||
295 | ; AvatarPicker = "http://127.0.0.1/avatars" | ||
296 | |||
291 | ; If you run this login server behind a proxy, set this to true | 297 | ; If you run this login server behind a proxy, set this to true |
292 | ; HasProxy = false | 298 | ; HasProxy = false |
293 | 299 | ||