diff options
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.API.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | 24 |
2 files changed, 23 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index b18a844..b24b207 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -58,6 +58,7 @@ namespace OpenSim.Region.ClientStack | |||
58 | public event StartAnim OnStartAnim; | 58 | public event StartAnim OnStartAnim; |
59 | public event Action<IClientAPI> OnRequestAvatarsData; | 59 | public event Action<IClientAPI> OnRequestAvatarsData; |
60 | public event LinkObjects OnLinkObjects; | 60 | public event LinkObjects OnLinkObjects; |
61 | public event DelinkObjects OnDelinkObjects; | ||
61 | public event UpdateVector OnGrabObject; | 62 | public event UpdateVector OnGrabObject; |
62 | public event ObjectSelect OnDeGrabObject; | 63 | public event ObjectSelect OnDeGrabObject; |
63 | public event ObjectDuplicate OnObjectDuplicate; | 64 | public event ObjectDuplicate OnObjectDuplicate; |
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index f941d6c..82ad1c8 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | |||
@@ -223,7 +223,7 @@ namespace OpenSim.Region.ClientStack | |||
223 | #region Objects/m_sceneObjects | 223 | #region Objects/m_sceneObjects |
224 | 224 | ||
225 | case PacketType.ObjectLink: | 225 | case PacketType.ObjectLink: |
226 | // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); | 226 | //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); |
227 | ObjectLinkPacket link = (ObjectLinkPacket) Pack; | 227 | ObjectLinkPacket link = (ObjectLinkPacket) Pack; |
228 | uint parentprimid = 0; | 228 | uint parentprimid = 0; |
229 | List<uint> childrenprims = new List<uint>(); | 229 | List<uint> childrenprims = new List<uint>(); |
@@ -241,6 +241,26 @@ namespace OpenSim.Region.ClientStack | |||
241 | OnLinkObjects(parentprimid, childrenprims); | 241 | OnLinkObjects(parentprimid, childrenprims); |
242 | } | 242 | } |
243 | break; | 243 | break; |
244 | case PacketType.ObjectDelink: | ||
245 | //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); | ||
246 | ObjectDelinkPacket delink = (ObjectDelinkPacket) Pack; | ||
247 | |||
248 | // It appears the prim at index 0 is not always the root prim (for | ||
249 | // instance, when one prim of a link set has been edited independently | ||
250 | // of the others). Therefore, we'll pass all the ids onto the delink | ||
251 | // method for it to decide which is the root. | ||
252 | List<uint> prims = new List<uint>(); | ||
253 | for (int i = 0; i < delink.ObjectData.Length; i++) | ||
254 | { | ||
255 | prims.Add(delink.ObjectData[i].ObjectLocalID); | ||
256 | } | ||
257 | |||
258 | if (OnDelinkObjects != null) | ||
259 | { | ||
260 | OnDelinkObjects(prims); | ||
261 | } | ||
262 | |||
263 | break; | ||
244 | case PacketType.ObjectAdd: | 264 | case PacketType.ObjectAdd: |
245 | if (OnAddPrim != null) | 265 | if (OnAddPrim != null) |
246 | { | 266 | { |
@@ -775,4 +795,4 @@ namespace OpenSim.Region.ClientStack | |||
775 | OutPacket(logReply); | 795 | OutPacket(logReply); |
776 | } | 796 | } |
777 | } | 797 | } |
778 | } \ No newline at end of file | 798 | } |