aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
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
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')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs13
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs35
3 files changed, 22 insertions, 43 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 6cf2a2e..21c1056 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -35,17 +35,28 @@ namespace OpenSim.Region.Framework.Interfaces
35 public interface IAttachmentsModule 35 public interface IAttachmentsModule
36 { 36 {
37 /// <summary> 37 /// <summary>
38 /// Attach an object to an avatar from the world.
39 /// </summary>
40 /// <param name="controllingClient"></param>
41 /// <param name="localID"></param>
42 /// <param name="attachPoint"></param>
43 /// <param name="rot"></param>
44 /// <param name="silent"></param>
45 void AttachObject(
46 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, bool silent);
47
48 /// <summary>
38 /// Attach an object to an avatar. 49 /// Attach an object to an avatar.
39 /// </summary> 50 /// </summary>
40 /// <param name="controllingClient"></param> 51 /// <param name="controllingClient"></param>
41 /// <param name="localID"></param> 52 /// <param name="localID"></param>
42 /// <param name="attachPoint"></param> 53 /// <param name="attachPoint"></param>
43 /// <param name="rot"></param> 54 /// <param name="rot"></param>
44 /// <param name="pos"></param> 55 /// <param name="attachPos"></param>
45 /// <param name="silent"></param> 56 /// <param name="silent"></param>
46 /// <returns>true if the object was successfully attached, false otherwise</returns> 57 /// <returns>true if the object was successfully attached, false otherwise</returns>
47 bool AttachObject( 58 bool AttachObject(
48 IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent); 59 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent);
49 60
50 /// <summary> 61 /// <summary>
51 /// Update the user inventory to the attachment of an item 62 /// Update the user inventory to the attachment of an item
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>