From c78cb96c62c0a62499e8af9d0bde725276ce19fe Mon Sep 17 00:00:00 2001 From: Melanie Date: Tue, 18 Jun 2013 04:42:20 +0200 Subject: Allow coalesced objects to be rezzed even if they extend past the sim bounds --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index ea22772..d09ea3e 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -788,6 +788,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); XmlElement e = (XmlElement)doc.SelectSingleNode("/CoalescedObject"); + Vector3 rez_pos; if (e == null || attachment) // Single { SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); @@ -809,6 +810,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess RayStart, RayEnd, RayTargetID, Quaternion.Identity, BypassRayCast, bRayEndIsIntersection, true, g.GetAxisAlignedBoundingBox(out offsetHeight), false); pos.Z += offsetHeight; + rez_pos = pos; } else { @@ -823,6 +825,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess BypassRayCast, bRayEndIsIntersection, true, bbox, false); + rez_pos = pos; + pos -= bbox / 2; XmlNodeList groups = e.SelectNodes("SceneObjectGroup"); @@ -859,7 +863,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess primcount += g.PrimCount; if (!m_Scene.Permissions.CanRezObject( - primcount, remoteClient.AgentId, pos) + primcount, remoteClient.AgentId, rez_pos) && !attachment) { // The client operates in no fail mode. It will @@ -876,7 +880,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return null; } - if (item != null && !DoPreRezWhenFromItem(remoteClient, item, objlist, pos, attachment)) + if (item != null && !DoPreRezWhenFromItem(remoteClient, item, objlist, rez_pos, attachment)) return null; for (int i = 0; i < objlist.Count; i++) -- cgit v1.1