diff options
author | Diva Canto | 2012-09-30 06:52:19 -0700 |
---|---|---|
committer | Diva Canto | 2012-09-30 06:52:19 -0700 |
commit | 14a4b146bf7f3552defcbe1e99fdbc64cb8fbf9c (patch) | |
tree | 3c76fe34e863fa990c6da0f72d8350c7476cf1e4 /OpenSim/Region/CoreModules | |
parent | Made a method of GridUserService virtual so it can be overridden. (diff) | |
parent | Get rid of some unnecessary casts in RemoteAdminPlugin. (diff) | |
download | opensim-SC_OLD-14a4b146bf7f3552defcbe1e99fdbc64cb8fbf9c.zip opensim-SC_OLD-14a4b146bf7f3552defcbe1e99fdbc64cb8fbf9c.tar.gz opensim-SC_OLD-14a4b146bf7f3552defcbe1e99fdbc64cb8fbf9c.tar.bz2 opensim-SC_OLD-14a4b146bf7f3552defcbe1e99fdbc64cb8fbf9c.tar.xz |
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to '')
3 files changed, 75 insertions, 42 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index c74584c..130c869 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -238,9 +238,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
238 | 238 | ||
239 | sp.ClearAttachments(); | 239 | sp.ClearAttachments(); |
240 | } | 240 | } |
241 | 241 | ||
242 | public bool AttachObject(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent, bool temp) | 242 | public bool AttachObject(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent, bool temp) |
243 | { | 243 | { |
244 | if (!Enabled) | ||
245 | return false; | ||
246 | |||
247 | if (AttachObjectInternal(sp, group, attachmentPt, silent, temp)) | ||
248 | { | ||
249 | m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID); | ||
250 | return true; | ||
251 | } | ||
252 | |||
253 | return false; | ||
254 | } | ||
255 | |||
256 | private bool AttachObjectInternal(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent, bool temp) | ||
257 | { | ||
244 | lock (sp.AttachmentsSyncLock) | 258 | lock (sp.AttachmentsSyncLock) |
245 | { | 259 | { |
246 | // m_log.DebugFormat( | 260 | // m_log.DebugFormat( |
@@ -794,7 +808,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
794 | // This will throw if the attachment fails | 808 | // This will throw if the attachment fails |
795 | try | 809 | try |
796 | { | 810 | { |
797 | AttachObject(sp, objatt, attachmentPt, false, false); | 811 | AttachObjectInternal(sp, objatt, attachmentPt, false, false); |
798 | } | 812 | } |
799 | catch (Exception e) | 813 | catch (Exception e) |
800 | { | 814 | { |
@@ -951,15 +965,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
951 | AttachmentPt &= 0x7f; | 965 | AttachmentPt &= 0x7f; |
952 | 966 | ||
953 | // Calls attach with a Zero position | 967 | // Calls attach with a Zero position |
954 | if (AttachObject(sp, part.ParentGroup, AttachmentPt, false, false)) | 968 | AttachObject(sp, part.ParentGroup, AttachmentPt, false, false); |
955 | { | ||
956 | // m_log.Debug( | ||
957 | // "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId | ||
958 | // + ", AttachmentPoint: " + AttachmentPt); | ||
959 | |||
960 | // Save avatar attachment information | ||
961 | m_scene.EventManager.TriggerOnAttach(objectLocalID, part.ParentGroup.FromItemID, remoteClient.AgentId); | ||
962 | } | ||
963 | } | 969 | } |
964 | catch (Exception e) | 970 | catch (Exception e) |
965 | { | 971 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs index 51e10f5..0ee01c7 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs | |||
@@ -64,6 +64,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
64 | private AutoResetEvent m_chatEvent = new AutoResetEvent(false); | 64 | private AutoResetEvent m_chatEvent = new AutoResetEvent(false); |
65 | // private OSChatMessage m_osChatMessageReceived; | 65 | // private OSChatMessage m_osChatMessageReceived; |
66 | 66 | ||
67 | // Used to test whether the operations have fired the attach event. Must be reset after each test. | ||
68 | private int m_numberOfAttachEventsFired; | ||
69 | |||
67 | [TestFixtureSetUp] | 70 | [TestFixtureSetUp] |
68 | public void FixtureInit() | 71 | public void FixtureInit() |
69 | { | 72 | { |
@@ -99,6 +102,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
99 | "attachments-test-scene", TestHelpers.ParseTail(999), 1000, 1000, config); | 102 | "attachments-test-scene", TestHelpers.ParseTail(999), 1000, 1000, config); |
100 | SceneHelpers.SetupSceneModules(scene, config, modules.ToArray()); | 103 | SceneHelpers.SetupSceneModules(scene, config, modules.ToArray()); |
101 | 104 | ||
105 | scene.EventManager.OnAttach += (localID, itemID, avatarID) => m_numberOfAttachEventsFired++; | ||
106 | |||
102 | return scene; | 107 | return scene; |
103 | } | 108 | } |
104 | 109 | ||
@@ -181,6 +186,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
181 | TestHelpers.InMethod(); | 186 | TestHelpers.InMethod(); |
182 | // TestHelpers.EnableLogging(); | 187 | // TestHelpers.EnableLogging(); |
183 | 188 | ||
189 | m_numberOfAttachEventsFired = 0; | ||
190 | |||
184 | Scene scene = CreateTestScene(); | 191 | Scene scene = CreateTestScene(); |
185 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1); | 192 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1); |
186 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, ua1); | 193 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, ua1); |
@@ -189,6 +196,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
189 | 196 | ||
190 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, attName, sp.UUID); | 197 | SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, attName, sp.UUID); |
191 | 198 | ||
199 | m_numberOfAttachEventsFired = 0; | ||
192 | scene.AttachmentsModule.AttachObject(sp, so, (uint)AttachmentPoint.Chest, false, false); | 200 | scene.AttachmentsModule.AttachObject(sp, so, (uint)AttachmentPoint.Chest, false, false); |
193 | 201 | ||
194 | // Check status on scene presence | 202 | // Check status on scene presence |
@@ -216,7 +224,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
216 | 224 | ||
217 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); | 225 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); |
218 | 226 | ||
219 | // TestHelpers.DisableLogging(); | 227 | // Check events |
228 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); | ||
220 | } | 229 | } |
221 | 230 | ||
222 | /// <summary> | 231 | /// <summary> |
@@ -228,6 +237,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
228 | TestHelpers.InMethod(); | 237 | TestHelpers.InMethod(); |
229 | // TestHelpers.EnableLogging(); | 238 | // TestHelpers.EnableLogging(); |
230 | 239 | ||
240 | m_numberOfAttachEventsFired = 0; | ||
241 | |||
231 | Scene scene = CreateTestScene(); | 242 | Scene scene = CreateTestScene(); |
232 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1); | 243 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1); |
233 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, ua1); | 244 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, ua1); |
@@ -247,6 +258,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
247 | 258 | ||
248 | Assert.That(sp.HasAttachments(), Is.False); | 259 | Assert.That(sp.HasAttachments(), Is.False); |
249 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); | 260 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); |
261 | |||
262 | // Check events | ||
263 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); | ||
250 | } | 264 | } |
251 | 265 | ||
252 | [Test] | 266 | [Test] |
@@ -261,6 +275,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
261 | 275 | ||
262 | InventoryItemBase attItem = CreateAttachmentItem(scene, ua1.PrincipalID, "att", 0x10, 0x20); | 276 | InventoryItemBase attItem = CreateAttachmentItem(scene, ua1.PrincipalID, "att", 0x10, 0x20); |
263 | 277 | ||
278 | m_numberOfAttachEventsFired = 0; | ||
264 | scene.AttachmentsModule.RezSingleAttachmentFromInventory( | 279 | scene.AttachmentsModule.RezSingleAttachmentFromInventory( |
265 | sp, attItem.ID, (uint)AttachmentPoint.Chest); | 280 | sp, attItem.ID, (uint)AttachmentPoint.Chest); |
266 | 281 | ||
@@ -280,6 +295,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
280 | Assert.That(sp.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest)); | 295 | Assert.That(sp.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest)); |
281 | 296 | ||
282 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); | 297 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); |
298 | |||
299 | // Check events | ||
300 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); | ||
283 | } | 301 | } |
284 | 302 | ||
285 | /// <summary> | 303 | /// <summary> |
@@ -338,6 +356,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
338 | ISceneEntity so | 356 | ISceneEntity so |
339 | = scene.AttachmentsModule.RezSingleAttachmentFromInventory( | 357 | = scene.AttachmentsModule.RezSingleAttachmentFromInventory( |
340 | sp, attItem.ID, (uint)AttachmentPoint.Chest); | 358 | sp, attItem.ID, (uint)AttachmentPoint.Chest); |
359 | |||
360 | m_numberOfAttachEventsFired = 0; | ||
341 | scene.AttachmentsModule.DetachSingleAttachmentToGround(sp, so.LocalId); | 361 | scene.AttachmentsModule.DetachSingleAttachmentToGround(sp, so.LocalId); |
342 | 362 | ||
343 | // Check scene presence status | 363 | // Check scene presence status |
@@ -353,6 +373,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
353 | 373 | ||
354 | // Check object in scene | 374 | // Check object in scene |
355 | Assert.That(scene.GetSceneObjectGroup("att"), Is.Not.Null); | 375 | Assert.That(scene.GetSceneObjectGroup("att"), Is.Not.Null); |
376 | |||
377 | // Check events | ||
378 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); | ||
356 | } | 379 | } |
357 | 380 | ||
358 | [Test] | 381 | [Test] |
@@ -369,6 +392,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
369 | SceneObjectGroup so | 392 | SceneObjectGroup so |
370 | = (SceneObjectGroup)scene.AttachmentsModule.RezSingleAttachmentFromInventory( | 393 | = (SceneObjectGroup)scene.AttachmentsModule.RezSingleAttachmentFromInventory( |
371 | sp, attItem.ID, (uint)AttachmentPoint.Chest); | 394 | sp, attItem.ID, (uint)AttachmentPoint.Chest); |
395 | |||
396 | m_numberOfAttachEventsFired = 0; | ||
372 | scene.AttachmentsModule.DetachSingleAttachmentToInv(sp, so); | 397 | scene.AttachmentsModule.DetachSingleAttachmentToInv(sp, so); |
373 | 398 | ||
374 | // Check status on scene presence | 399 | // Check status on scene presence |
@@ -380,6 +405,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
380 | Assert.That(sp.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo(0)); | 405 | Assert.That(sp.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo(0)); |
381 | 406 | ||
382 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(0)); | 407 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(0)); |
408 | |||
409 | // Check events | ||
410 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); | ||
383 | } | 411 | } |
384 | 412 | ||
385 | /// <summary> | 413 | /// <summary> |
@@ -461,10 +489,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
461 | 489 | ||
462 | SceneObjectGroup rezzedAtt = presence.GetAttachments()[0]; | 490 | SceneObjectGroup rezzedAtt = presence.GetAttachments()[0]; |
463 | 491 | ||
492 | m_numberOfAttachEventsFired = 0; | ||
464 | scene.IncomingCloseAgent(presence.UUID, false); | 493 | scene.IncomingCloseAgent(presence.UUID, false); |
465 | 494 | ||
466 | // Check that we can't retrieve this attachment from the scene. | 495 | // Check that we can't retrieve this attachment from the scene. |
467 | Assert.That(scene.GetSceneObjectGroup(rezzedAtt.UUID), Is.Null); | 496 | Assert.That(scene.GetSceneObjectGroup(rezzedAtt.UUID), Is.Null); |
497 | |||
498 | // Check events | ||
499 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); | ||
468 | } | 500 | } |
469 | 501 | ||
470 | [Test] | 502 | [Test] |
@@ -480,6 +512,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
480 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID); | 512 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID); |
481 | acd.Appearance = new AvatarAppearance(); | 513 | acd.Appearance = new AvatarAppearance(); |
482 | acd.Appearance.SetAttachment((int)AttachmentPoint.Chest, attItem.ID, attItem.AssetID); | 514 | acd.Appearance.SetAttachment((int)AttachmentPoint.Chest, attItem.ID, attItem.AssetID); |
515 | |||
516 | m_numberOfAttachEventsFired = 0; | ||
483 | ScenePresence presence = SceneHelpers.AddScenePresence(scene, acd); | 517 | ScenePresence presence = SceneHelpers.AddScenePresence(scene, acd); |
484 | 518 | ||
485 | Assert.That(presence.HasAttachments(), Is.True); | 519 | Assert.That(presence.HasAttachments(), Is.True); |
@@ -502,6 +536,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
502 | Assert.That(presence.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest)); | 536 | Assert.That(presence.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest)); |
503 | 537 | ||
504 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); | 538 | Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1)); |
539 | |||
540 | // Check events. We expect OnAttach to fire on login. | ||
541 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); | ||
505 | } | 542 | } |
506 | 543 | ||
507 | [Test] | 544 | [Test] |
@@ -522,10 +559,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
522 | 559 | ||
523 | Vector3 newPosition = new Vector3(1, 2, 4); | 560 | Vector3 newPosition = new Vector3(1, 2, 4); |
524 | 561 | ||
562 | m_numberOfAttachEventsFired = 0; | ||
525 | scene.SceneGraph.UpdatePrimGroupPosition(attSo.LocalId, newPosition, sp.ControllingClient); | 563 | scene.SceneGraph.UpdatePrimGroupPosition(attSo.LocalId, newPosition, sp.ControllingClient); |
526 | 564 | ||
527 | Assert.That(attSo.AbsolutePosition, Is.EqualTo(sp.AbsolutePosition)); | 565 | Assert.That(attSo.AbsolutePosition, Is.EqualTo(sp.AbsolutePosition)); |
528 | Assert.That(attSo.RootPart.AttachedPos, Is.EqualTo(newPosition)); | 566 | Assert.That(attSo.RootPart.AttachedPos, Is.EqualTo(newPosition)); |
567 | |||
568 | // Check events | ||
569 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); | ||
529 | } | 570 | } |
530 | 571 | ||
531 | [Test] | 572 | [Test] |
@@ -574,6 +615,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
574 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 615 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
575 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 616 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
576 | 617 | ||
618 | m_numberOfAttachEventsFired = 0; | ||
577 | sceneA.RequestTeleportLocation( | 619 | sceneA.RequestTeleportLocation( |
578 | beforeTeleportSp.ControllingClient, | 620 | beforeTeleportSp.ControllingClient, |
579 | sceneB.RegionInfo.RegionHandle, | 621 | sceneB.RegionInfo.RegionHandle, |
@@ -616,29 +658,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
616 | Assert.That(actualSceneAAttachments.Count, Is.EqualTo(0)); | 658 | Assert.That(actualSceneAAttachments.Count, Is.EqualTo(0)); |
617 | 659 | ||
618 | Assert.That(sceneA.GetSceneObjectGroups().Count, Is.EqualTo(0)); | 660 | Assert.That(sceneA.GetSceneObjectGroups().Count, Is.EqualTo(0)); |
619 | } | ||
620 | 661 | ||
621 | // I'm commenting this test because scene setup NEEDS InventoryService to | 662 | // Check events |
622 | // be non-null | 663 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); |
623 | //[Test] | 664 | } |
624 | // public void T032_CrossAttachments() | ||
625 | // { | ||
626 | // TestHelpers.InMethod(); | ||
627 | // | ||
628 | // ScenePresence presence = scene.GetScenePresence(agent1); | ||
629 | // ScenePresence presence2 = scene2.GetScenePresence(agent1); | ||
630 | // presence2.AddAttachment(sog1); | ||
631 | // presence2.AddAttachment(sog2); | ||
632 | // | ||
633 | // ISharedRegionModule serialiser = new SerialiserModule(); | ||
634 | // SceneHelpers.SetupSceneModules(scene, new IniConfigSource(), serialiser); | ||
635 | // SceneHelpers.SetupSceneModules(scene2, new IniConfigSource(), serialiser); | ||
636 | // | ||
637 | // Assert.That(presence.HasAttachments(), Is.False, "Presence has attachments before cross"); | ||
638 | // | ||
639 | // //Assert.That(presence2.CrossAttachmentsIntoNewRegion(region1, true), Is.True, "Cross was not successful"); | ||
640 | // Assert.That(presence2.HasAttachments(), Is.False, "Presence2 objects were not deleted"); | ||
641 | // Assert.That(presence.HasAttachments(), Is.True, "Presence has not received new objects"); | ||
642 | // } | ||
643 | } | 665 | } |
644 | } | 666 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs index d82551e..b4e3d77 100644 --- a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs | |||
@@ -112,14 +112,19 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender | |||
112 | public void GetDrawStringSize(string text, string fontName, int fontSize, | 112 | public void GetDrawStringSize(string text, string fontName, int fontSize, |
113 | out double xSize, out double ySize) | 113 | out double xSize, out double ySize) |
114 | { | 114 | { |
115 | using (Font myFont = new Font(fontName, fontSize)) | 115 | lock (this) |
116 | { | 116 | { |
117 | SizeF stringSize = new SizeF(); | 117 | using (Font myFont = new Font(fontName, fontSize)) |
118 | lock (m_graph) | ||
119 | { | 118 | { |
120 | stringSize = m_graph.MeasureString(text, myFont); | 119 | SizeF stringSize = new SizeF(); |
121 | xSize = stringSize.Width; | 120 | |
122 | ySize = stringSize.Height; | 121 | // XXX: This lock may be unnecessary. |
122 | lock (m_graph) | ||
123 | { | ||
124 | stringSize = m_graph.MeasureString(text, myFont); | ||
125 | xSize = stringSize.Width; | ||
126 | ySize = stringSize.Height; | ||
127 | } | ||
123 | } | 128 | } |
124 | } | 129 | } |
125 | } | 130 | } |