aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-04-07 00:33:02 +0100
committerJustin Clark-Casey (justincc)2012-04-07 00:33:02 +0100
commit7d8bb33c5b2420d4e744269f67a25dd2b9746a35 (patch)
tree53e2c0d0258e81c4e87ae78521e85d98d115becc /OpenSim/Region/CoreModules/Avatar
parentrefactor: Eliminate unnecessary SOP.m_physActor (diff)
downloadopensim-SC-7d8bb33c5b2420d4e744269f67a25dd2b9746a35.zip
opensim-SC-7d8bb33c5b2420d4e744269f67a25dd2b9746a35.tar.gz
opensim-SC-7d8bb33c5b2420d4e744269f67a25dd2b9746a35.tar.bz2
opensim-SC-7d8bb33c5b2420d4e744269f67a25dd2b9746a35.tar.xz
Store FromItemID for attachments once on SOG instead of on every SOP and only ever using the root part entry.
This eliminates some pointless memory use.
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs20
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs5
2 files changed, 13 insertions, 12 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 7086e6c..faa413e 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -239,7 +239,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
239 // At the moment we can only deal with a single attachment 239 // At the moment we can only deal with a single attachment
240 if (attachments.Count != 0) 240 if (attachments.Count != 0)
241 { 241 {
242 UUID oldAttachmentItemID = attachments[0].GetFromItemID(); 242 UUID oldAttachmentItemID = attachments[0].FromItemID;
243 243
244 if (oldAttachmentItemID != UUID.Zero) 244 if (oldAttachmentItemID != UUID.Zero)
245 DetachSingleAttachmentToInvInternal(sp, oldAttachmentItemID); 245 DetachSingleAttachmentToInvInternal(sp, oldAttachmentItemID);
@@ -250,7 +250,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
250 } 250 }
251 251
252 // Add the new attachment to inventory if we don't already have it. 252 // Add the new attachment to inventory if we don't already have it.
253 UUID newAttachmentItemID = group.GetFromItemID(); 253 UUID newAttachmentItemID = group.FromItemID;
254 if (newAttachmentItemID == UUID.Zero) 254 if (newAttachmentItemID == UUID.Zero)
255 newAttachmentItemID = AddSceneObjectAsNewAttachmentInInv(sp, group).ID; 255 newAttachmentItemID = AddSceneObjectAsNewAttachmentInInv(sp, group).ID;
256 256
@@ -285,7 +285,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
285 List<SceneObjectGroup> existingAttachments = sp.GetAttachments(); 285 List<SceneObjectGroup> existingAttachments = sp.GetAttachments();
286 foreach (SceneObjectGroup so in existingAttachments) 286 foreach (SceneObjectGroup so in existingAttachments)
287 { 287 {
288 if (so.GetFromItemID() == itemID) 288 if (so.FromItemID == itemID)
289 { 289 {
290 alreadyOn = true; 290 alreadyOn = true;
291 break; 291 break;
@@ -342,7 +342,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
342 if (so.AttachedAvatar != sp.UUID) 342 if (so.AttachedAvatar != sp.UUID)
343 return; 343 return;
344 344
345 UUID inventoryID = so.GetFromItemID(); 345 UUID inventoryID = so.FromItemID;
346 346
347// m_log.DebugFormat( 347// m_log.DebugFormat(
348// "[ATTACHMENTS MODULE]: In DetachSingleAttachmentToGround(), object is {0} {1}, associated item is {2}", 348// "[ATTACHMENTS MODULE]: In DetachSingleAttachmentToGround(), object is {0} {1}, associated item is {2}",
@@ -359,9 +359,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
359 m_scene.AvatarFactory.QueueAppearanceSave(sp.UUID); 359 m_scene.AvatarFactory.QueueAppearanceSave(sp.UUID);
360 360
361 sp.RemoveAttachment(so); 361 sp.RemoveAttachment(so);
362 so.FromItemID = UUID.Zero;
362 363
363 SceneObjectPart rootPart = so.RootPart; 364 SceneObjectPart rootPart = so.RootPart;
364 rootPart.FromItemID = UUID.Zero;
365 so.AbsolutePosition = sp.AbsolutePosition; 365 so.AbsolutePosition = sp.AbsolutePosition;
366 so.AttachedAvatar = UUID.Zero; 366 so.AttachedAvatar = UUID.Zero;
367 rootPart.SetParentLocalId(0); 367 rootPart.SetParentLocalId(0);
@@ -475,7 +475,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
475 475
476 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(grp); 476 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(grp);
477 477
478 InventoryItemBase item = new InventoryItemBase(grp.GetFromItemID(), sp.UUID); 478 InventoryItemBase item = new InventoryItemBase(grp.FromItemID, sp.UUID);
479 item = m_scene.InventoryService.GetItem(item); 479 item = m_scene.InventoryService.GetItem(item);
480 480
481 if (item != null) 481 if (item != null)
@@ -647,7 +647,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
647 item.CreationDate = Util.UnixTimeSinceEpoch(); 647 item.CreationDate = Util.UnixTimeSinceEpoch();
648 648
649 // sets itemID so client can show item as 'attached' in inventory 649 // sets itemID so client can show item as 'attached' in inventory
650 grp.SetFromItemID(item.ID); 650 grp.FromItemID = item.ID;
651 651
652 if (m_scene.AddInventoryItem(item)) 652 if (m_scene.AddInventoryItem(item))
653 { 653 {
@@ -683,7 +683,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
683 if (entity is SceneObjectGroup) 683 if (entity is SceneObjectGroup)
684 { 684 {
685 group = (SceneObjectGroup)entity; 685 group = (SceneObjectGroup)entity;
686 if (group.GetFromItemID() == itemID) 686 if (group.FromItemID == itemID)
687 { 687 {
688 m_scene.EventManager.TriggerOnAttach(group.LocalId, itemID, UUID.Zero); 688 m_scene.EventManager.TriggerOnAttach(group.LocalId, itemID, UUID.Zero);
689 sp.RemoveAttachment(group); 689 sp.RemoveAttachment(group);
@@ -889,7 +889,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
889 // Calls attach with a Zero position 889 // Calls attach with a Zero position
890 if (AttachObject(sp, part.ParentGroup, AttachmentPt, false)) 890 if (AttachObject(sp, part.ParentGroup, AttachmentPt, false))
891 { 891 {
892 m_scene.EventManager.TriggerOnAttach(objectLocalID, part.ParentGroup.GetFromItemID(), remoteClient.AgentId); 892 m_scene.EventManager.TriggerOnAttach(objectLocalID, part.ParentGroup.FromItemID, remoteClient.AgentId);
893 893
894 // Save avatar attachment information 894 // Save avatar attachment information
895 m_log.Debug( 895 m_log.Debug(
@@ -912,7 +912,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
912 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); 912 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId);
913 SceneObjectGroup group = m_scene.GetGroupByPrim(objectLocalID); 913 SceneObjectGroup group = m_scene.GetGroupByPrim(objectLocalID);
914 if (sp != null && group != null) 914 if (sp != null && group != null)
915 DetachSingleAttachmentToInv(sp, group.GetFromItemID()); 915 DetachSingleAttachmentToInv(sp, group.FromItemID);
916 } 916 }
917 917
918 private void Client_OnDetachAttachmentIntoInv(UUID itemID, IClientAPI remoteClient) 918 private void Client_OnDetachAttachmentIntoInv(UUID itemID, IClientAPI remoteClient)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
index 86cfb32..bfe5e4a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
@@ -120,8 +120,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
120 Assert.That(attSo.IsTemporary, Is.False); 120 Assert.That(attSo.IsTemporary, Is.False);
121 121
122 // Check item status 122 // Check item status
123 Assert.That(m_presence.Appearance.GetAttachpoint( 123 Assert.That(
124 attSo.GetFromItemID()), Is.EqualTo((int)AttachmentPoint.Chest)); 124 m_presence.Appearance.GetAttachpoint(attSo.FromItemID),
125 Is.EqualTo((int)AttachmentPoint.Chest));
125 } 126 }
126 127
127 [Test] 128 [Test]