Allow coalesced objects to be rezzed even if they extend past the sim bounds
parent
0be80e5813
commit
c78cb96c62
|
@ -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++)
|
||||
|
|
Loading…
Reference in New Issue