aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs140
1 files changed, 140 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
new file mode 100644
index 0000000..958847b
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -0,0 +1,140 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Xml;
30using OpenMetaverse;
31using OpenMetaverse.Packets;
32using OpenSim.Framework;
33using OpenSim.Region.Framework.Scenes;
34
35namespace OpenSim.Region.Framework.Interfaces
36{
37 public interface IAttachmentsModule
38 {
39 /// <summary>
40 /// Attach an object to an avatar from the world.
41 /// </summary>
42 /// <param name="controllingClient"></param>
43 /// <param name="localID"></param>
44 /// <param name="attachPoint"></param>
45 /// <param name="rot"></param>
46 /// <param name="silent"></param>
47 void AttachObject(
48 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, bool silent);
49
50 /// <summary>
51 /// Attach an object to an avatar.
52 /// </summary>
53 /// <param name="controllingClient"></param>
54 /// <param name="localID"></param>
55 /// <param name="attachPoint"></param>
56 /// <param name="rot"></param>
57 /// <param name="attachPos"></param>
58 /// <param name="silent"></param>
59 /// <returns>true if the object was successfully attached, false otherwise</returns>
60 bool AttachObject(
61 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent);
62
63 /// <summary>
64 /// Rez an attachment from user inventory and change inventory status to match.
65 /// </summary>
66 /// <param name="remoteClient"></param>
67 /// <param name="itemID"></param>
68 /// <param name="AttachmentPt"></param>
69 /// <returns>The scene object that was attached. Null if the scene object could not be found</returns>
70 UUID RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
71
72 /// <summary>
73 /// Rez an attachment from user inventory
74 /// </summary>
75 /// <param name="remoteClient"></param>
76 /// <param name="itemID"></param>
77 /// <param name="AttachmentPt"></param>
78 /// <param name="updateinventoryStatus">
79 /// If true, we also update the user's inventory to show that the attachment is set. If false, we do not.
80 /// False is required so that we don't attempt to update information when a user enters a scene with the
81 /// attachment already correctly set up in inventory.
82 /// <returns>The uuid of the scene object that was attached. Null if the scene object could not be found</returns>
83 UUID RezSingleAttachmentFromInventory(
84 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus);
85
86 // Same as above, but also load script states from a separate doc
87 UUID RezSingleAttachmentFromInventory(
88 IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus, XmlDocument doc);
89
90 /// <summary>
91 /// Rez multiple attachments from a user's inventory
92 /// </summary>
93 /// <param name="remoteClient"></param>
94 /// <param name="header"></param>
95 /// <param name="objects"></param>
96 void RezMultipleAttachmentsFromInventory(
97 IClientAPI remoteClient,
98 RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
99 RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects);
100
101 /// <summary>
102 /// Detach an object from the avatar.
103 /// </summary>
104 ///
105 /// This method is called in response to a client's detach request, so we only update the information in
106 /// inventory
107 /// <param name="objectLocalID"></param>
108 /// <param name="remoteClient"></param>
109 void DetachObject(uint objectLocalID, IClientAPI remoteClient);
110
111 /// <summary>
112 /// Detach the given item to the ground.
113 /// </summary>
114 /// <param name="itemID"></param>
115 /// <param name="remoteClient"></param>
116 void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient);
117
118 /// <summary>
119 /// Update the user inventory to the attachment of an item
120 /// </summary>
121 /// <param name="att"></param>
122 /// <param name="remoteClient"></param>
123 /// <param name="itemID"></param>
124 /// <param name="AttachmentPt"></param>
125 /// <returns></returns>
126 UUID SetAttachmentInventoryStatus(
127 SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
128
129 /// <summary>
130 /// Update the user inventory to show a detach.
131 /// </summary>
132 /// <param name="itemID">
133 /// A <see cref="UUID"/>
134 /// </param>
135 /// <param name="remoteClient">
136 /// A <see cref="IClientAPI"/>
137 /// </param>
138 void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient);
139 }
140}