aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJohn Hurliman2010-03-12 14:40:21 -0800
committerJohn Hurliman2010-03-12 14:40:21 -0800
commit5beb08be3153575312b35401da95b7e8810c94df (patch)
tree03f9ebd4d6a4af160a4b3e320be49d0e0577dce3 /OpenSim/Region/Framework/Scenes
parentMinor tweak to clean up SimianGrid asset service URLs (diff)
parentrefactor: move client invoked AttachObject from SceneGraph to AttachmentsModule (diff)
downloadopensim-SC-5beb08be3153575312b35401da95b7e8810c94df.zip
opensim-SC-5beb08be3153575312b35401da95b7e8810c94df.tar.gz
opensim-SC-5beb08be3153575312b35401da95b7e8810c94df.tar.bz2
opensim-SC-5beb08be3153575312b35401da95b7e8810c94df.tar.xz
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs13
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs35
2 files changed, 8 insertions, 40 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 87a753e..d4d134f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2644,12 +2644,14 @@ namespace OpenSim.Region.Framework.Scenes
2644 public virtual void SubscribeToClientAttachmentEvents(IClientAPI client) 2644 public virtual void SubscribeToClientAttachmentEvents(IClientAPI client)
2645 { 2645 {
2646 client.OnRezSingleAttachmentFromInv += RezSingleAttachment; 2646 client.OnRezSingleAttachmentFromInv += RezSingleAttachment;
2647 client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachments; 2647 client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachments;
2648 client.OnObjectAttach += m_sceneGraph.AttachObject;
2649 client.OnObjectDetach += m_sceneGraph.DetachObject; 2648 client.OnObjectDetach += m_sceneGraph.DetachObject;
2650 2649
2651 if (AttachmentsModule != null) 2650 if (AttachmentsModule != null)
2651 {
2652 client.OnObjectAttach += AttachmentsModule.AttachObject;
2652 client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory; 2653 client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory;
2654 }
2653 } 2655 }
2654 2656
2655 public virtual void SubscribeToClientTeleportEvents(IClientAPI client) 2657 public virtual void SubscribeToClientTeleportEvents(IClientAPI client)
@@ -2774,7 +2776,6 @@ namespace OpenSim.Region.Framework.Scenes
2774 client.OnRezObject -= RezObject; 2776 client.OnRezObject -= RezObject;
2775 } 2777 }
2776 2778
2777
2778 public virtual void UnSubscribeToClientInventoryEvents(IClientAPI client) 2779 public virtual void UnSubscribeToClientInventoryEvents(IClientAPI client)
2779 { 2780 {
2780 client.OnCreateNewInventoryItem -= CreateNewInventoryItem; 2781 client.OnCreateNewInventoryItem -= CreateNewInventoryItem;
@@ -2799,12 +2800,14 @@ namespace OpenSim.Region.Framework.Scenes
2799 public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client) 2800 public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client)
2800 { 2801 {
2801 client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachments; 2802 client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachments;
2802 client.OnRezSingleAttachmentFromInv -= RezSingleAttachment; 2803 client.OnRezSingleAttachmentFromInv -= RezSingleAttachment;
2803 client.OnObjectAttach -= m_sceneGraph.AttachObject;
2804 client.OnObjectDetach -= m_sceneGraph.DetachObject; 2804 client.OnObjectDetach -= m_sceneGraph.DetachObject;
2805 2805
2806 if (AttachmentsModule != null) 2806 if (AttachmentsModule != null)
2807 {
2808 client.OnObjectAttach -= AttachmentsModule.AttachObject;
2807 client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory; 2809 client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory;
2810 }
2808 } 2811 }
2809 2812
2810 public virtual void UnSubscribeToClientTeleportEvents(IClientAPI client) 2813 public virtual void UnSubscribeToClientTeleportEvents(IClientAPI client)
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 380722d..a88d456 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -487,41 +487,6 @@ namespace OpenSim.Region.Framework.Scenes
487 } 487 }
488 488
489 /// <summary> 489 /// <summary>
490 /// Event Handling routine for Attach Object
491 /// </summary>
492 /// <param name="remoteClient"></param>
493 /// <param name="objectLocalID"></param>
494 /// <param name="AttachmentPt"></param>
495 /// <param name="rot"></param>
496 protected internal void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, bool silent)
497 {
498 // If we can't take it, we can't attach it!
499 SceneObjectPart part = m_parentScene.GetSceneObjectPart(objectLocalID);
500 if (part == null)
501 return;
502
503 if (!m_parentScene.Permissions.CanTakeObject(part.UUID, remoteClient.AgentId))
504 return;
505
506 // Calls attach with a Zero position
507 if (m_parentScene.AttachmentsModule.AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false))
508 {
509 m_parentScene.SendAttachEvent(objectLocalID, part.ParentGroup.GetFromItemID(), remoteClient.AgentId);
510
511 // Save avatar attachment information
512 ScenePresence presence;
513 if (m_parentScene.AvatarFactory != null && m_parentScene.TryGetAvatar(remoteClient.AgentId, out presence))
514 {
515 m_log.Info(
516 "[SCENE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId
517 + ", AttachmentPoint: " + AttachmentPt);
518
519 m_parentScene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
520 }
521 }
522 }
523
524 /// <summary>
525 /// Rez an attachment 490 /// Rez an attachment
526 /// </summary> 491 /// </summary>
527 /// <param name="remoteClient"></param> 492 /// <param name="remoteClient"></param>