aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs11
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs12
-rw-r--r--OpenSim/Tests/Common/Helpers/SceneHelpers.cs2
3 files changed, 19 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 7333769..609c559 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -387,7 +387,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
387 if (!Enabled) 387 if (!Enabled)
388 return false; 388 return false;
389 389
390 return AttachObjectInternal(sp, group, attachmentPt, silent, addToInventory, false, append); 390 group.DetachFromBackup();
391
392 bool success = AttachObjectInternal(sp, group, attachmentPt, silent, addToInventory, false, append);
393
394 if (!success)
395 group.AttachToBackup();
396
397 return success;
391 } 398 }
392 399
393 /// <summary> 400 /// <summary>
@@ -815,8 +822,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
815 "[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}", 822 "[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}",
816 so.Name, sp.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos); 823 so.Name, sp.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos);
817 824
818 so.DetachFromBackup();
819
820 // Remove from database and parcel prim count 825 // Remove from database and parcel prim count
821 m_scene.DeleteFromStorage(so.UUID); 826 m_scene.DeleteFromStorage(so.UUID);
822 m_scene.EventManager.TriggerParcelPrimCountTainted(); 827 m_scene.EventManager.TriggerParcelPrimCountTainted();
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
index 4e58045..3bd7bee 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
@@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
199 string attName = "att"; 199 string attName = "att";
200 200
201 SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, attName, sp.UUID); 201 SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, attName, sp.UUID);
202 Assert.That(so.Backup, Is.True);
202 203
203 m_numberOfAttachEventsFired = 0; 204 m_numberOfAttachEventsFired = 0;
204 scene.AttachmentsModule.AttachObject(sp, so, (uint)AttachmentPoint.Chest, false, true, false); 205 scene.AttachmentsModule.AttachObject(sp, so, (uint)AttachmentPoint.Chest, false, true, false);
@@ -213,6 +214,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
213 Assert.That(attSo.IsAttachment); 214 Assert.That(attSo.IsAttachment);
214 Assert.That(attSo.UsesPhysics, Is.False); 215 Assert.That(attSo.UsesPhysics, Is.False);
215 Assert.That(attSo.IsTemporary, Is.False); 216 Assert.That(attSo.IsTemporary, Is.False);
217 Assert.That(attSo.Backup, Is.False);
216 218
217 // Check item status 219 // Check item status
218 Assert.That( 220 Assert.That(
@@ -385,7 +387,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
385 public void TestRezAttachmentFromInventory() 387 public void TestRezAttachmentFromInventory()
386 { 388 {
387 TestHelpers.InMethod(); 389 TestHelpers.InMethod();
388// log4net.Config.XmlConfigurator.Configure(); 390// TestHelpers.EnableLogging();
389 391
390 Scene scene = CreateTestScene(); 392 Scene scene = CreateTestScene();
391 UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1); 393 UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1);
@@ -407,6 +409,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
407 Assert.That(attSo.IsAttachment); 409 Assert.That(attSo.IsAttachment);
408 Assert.That(attSo.UsesPhysics, Is.False); 410 Assert.That(attSo.UsesPhysics, Is.False);
409 Assert.That(attSo.IsTemporary, Is.False); 411 Assert.That(attSo.IsTemporary, Is.False);
412 Assert.IsFalse(attSo.Backup);
410 413
411 // Check appearance status 414 // Check appearance status
412 Assert.That(sp.Appearance.GetAttachments().Count, Is.EqualTo(1)); 415 Assert.That(sp.Appearance.GetAttachments().Count, Is.EqualTo(1));
@@ -601,7 +604,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
601 Assert.That(scene.InventoryService.GetItem(new InventoryItemBase(attItem.ID)), Is.Null); 604 Assert.That(scene.InventoryService.GetItem(new InventoryItemBase(attItem.ID)), Is.Null);
602 605
603 // Check object in scene 606 // Check object in scene
604 Assert.That(scene.GetSceneObjectGroup("att"), Is.Not.Null); 607 SceneObjectGroup soInScene = scene.GetSceneObjectGroup("att");
608 Assert.That(soInScene, Is.Not.Null);
609 Assert.IsTrue(soInScene.Backup);
605 610
606 // Check events 611 // Check events
607 Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1)); 612 Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1));
@@ -755,6 +760,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
755 Assert.That(attSo.IsAttachment); 760 Assert.That(attSo.IsAttachment);
756 Assert.That(attSo.UsesPhysics, Is.False); 761 Assert.That(attSo.UsesPhysics, Is.False);
757 Assert.That(attSo.IsTemporary, Is.False); 762 Assert.That(attSo.IsTemporary, Is.False);
763 Assert.IsFalse(attSo.Backup);
758 764
759 // Check appearance status 765 // Check appearance status
760 List<AvatarAttachment> retreivedAttachments = presence.Appearance.GetAttachments(); 766 List<AvatarAttachment> retreivedAttachments = presence.Appearance.GetAttachments();
@@ -884,6 +890,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
884 SceneObjectGroup actualSceneBAtt = actualSceneBAttachments[0]; 890 SceneObjectGroup actualSceneBAtt = actualSceneBAttachments[0];
885 Assert.That(actualSceneBAtt.Name, Is.EqualTo(attItem.Name)); 891 Assert.That(actualSceneBAtt.Name, Is.EqualTo(attItem.Name));
886 Assert.That(actualSceneBAtt.AttachmentPoint, Is.EqualTo((uint)AttachmentPoint.Chest)); 892 Assert.That(actualSceneBAtt.AttachmentPoint, Is.EqualTo((uint)AttachmentPoint.Chest));
893 Assert.IsFalse(actualSceneBAtt.Backup);
887 894
888 Assert.That(sceneB.GetSceneObjectGroups().Count, Is.EqualTo(1)); 895 Assert.That(sceneB.GetSceneObjectGroups().Count, Is.EqualTo(1));
889 896
@@ -994,6 +1001,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
994 SceneObjectGroup actualSceneBAtt = actualSceneBAttachments[0]; 1001 SceneObjectGroup actualSceneBAtt = actualSceneBAttachments[0];
995 Assert.That(actualSceneBAtt.Name, Is.EqualTo(attItem.Name)); 1002 Assert.That(actualSceneBAtt.Name, Is.EqualTo(attItem.Name));
996 Assert.That(actualSceneBAtt.AttachmentPoint, Is.EqualTo((uint)AttachmentPoint.Chest)); 1003 Assert.That(actualSceneBAtt.AttachmentPoint, Is.EqualTo((uint)AttachmentPoint.Chest));
1004 Assert.IsFalse(actualSceneBAtt.Backup);
997 1005
998 Assert.That(sceneB.GetSceneObjectGroups().Count, Is.EqualTo(1)); 1006 Assert.That(sceneB.GetSceneObjectGroups().Count, Is.EqualTo(1));
999 1007
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
index ae2be70..4369659 100644
--- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
@@ -611,7 +611,7 @@ namespace OpenSim.Tests.Common
611 //part.UpdatePrimFlags(false, false, true); 611 //part.UpdatePrimFlags(false, false, true);
612 //part.ObjectFlags |= (uint)PrimFlags.Phantom; 612 //part.ObjectFlags |= (uint)PrimFlags.Phantom;
613 613
614 scene.AddNewSceneObject(so, false); 614 scene.AddNewSceneObject(so, true);
615 615
616 return so; 616 return so;
617 } 617 }