From eb41ec00c94170305fd764d5e0ad5bee04018551 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Tue, 13 Nov 2007 19:57:11 +0000 Subject: first pass on unlinking of objects. From Jay Clarke (IBM) --- .../ClientStack/ClientView.ProcessPackets.cs | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs') 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 #region Objects/m_sceneObjects case PacketType.ObjectLink: - // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); + //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); ObjectLinkPacket link = (ObjectLinkPacket) Pack; uint parentprimid = 0; List childrenprims = new List(); @@ -241,6 +241,26 @@ namespace OpenSim.Region.ClientStack OnLinkObjects(parentprimid, childrenprims); } break; + case PacketType.ObjectDelink: + //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); + ObjectDelinkPacket delink = (ObjectDelinkPacket) Pack; + + // It appears the prim at index 0 is not always the root prim (for + // instance, when one prim of a link set has been edited independently + // of the others). Therefore, we'll pass all the ids onto the delink + // method for it to decide which is the root. + List prims = new List(); + for (int i = 0; i < delink.ObjectData.Length; i++) + { + prims.Add(delink.ObjectData[i].ObjectLocalID); + } + + if (OnDelinkObjects != null) + { + OnDelinkObjects(prims); + } + + break; case PacketType.ObjectAdd: if (OnAddPrim != null) { @@ -775,4 +795,4 @@ namespace OpenSim.Region.ClientStack OutPacket(logReply); } } -} \ No newline at end of file +} -- cgit v1.1