Bounding Box/find rez from inventory point code now seems to be working correctly.
So next step is to clean up that code and wait for bug reports.trunk
parent
856d5f4375
commit
a266e6dc4b
|
@ -2312,14 +2312,19 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
AddNewSceneObject(group, true);
|
||||
|
||||
// m_log.InfoFormat("ray end point for inventory rezz is {0} {1} {2} ", RayEnd.X, RayEnd.Y, RayEnd.Z);
|
||||
// if attachment we set it's asset id so object updates can reflect that
|
||||
// if not, we set it's position in world.
|
||||
if (!attachment)
|
||||
{
|
||||
float offsetHeight = 0;
|
||||
pos = GetNewRezLocation(
|
||||
RayStart, RayEnd, RayTargetID, Quaternion.Identity,
|
||||
BypassRayCast, bRayEndIsIntersection, true, group.GetAxisAlignedBoundingBox(), false);
|
||||
BypassRayCast, bRayEndIsIntersection, true, group.GetAxisAlignedBoundingBox(out offsetHeight), false);
|
||||
pos.Z += offsetHeight;
|
||||
group.AbsolutePosition = pos;
|
||||
// m_log.InfoFormat("rezx point for inventory rezz is {0} {1} {2} and offsetheight was {3}", pos.X, pos.Y, pos.Z, offsetHeight);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -592,9 +592,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <summary>
|
||||
/// Gets a vector representing the size of the bounding box containing all the prims in the group
|
||||
/// Treats all prims as rectangular, so no shape (cut etc) is taken into account
|
||||
/// offsetHeight is the offset in the Z axis from the centre of the bounding box to the centre of the root prim
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Vector3 GetAxisAlignedBoundingBox()
|
||||
public Vector3 GetAxisAlignedBoundingBox(out float offsetHeight)
|
||||
{
|
||||
float maxX = -256f, maxY = -256f, maxZ = -256f, minX = 256f, minY = 256f, minZ = 256f;
|
||||
lock (m_parts)
|
||||
|
@ -659,7 +660,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
backBottomRight.Y = orig.Y + (part.Scale.Y / 2);
|
||||
backBottomRight.Z = orig.Z - (part.Scale.Z / 2);
|
||||
|
||||
|
||||
frontTopLeft = frontTopLeft * worldRot;
|
||||
frontTopRight = frontTopRight * worldRot;
|
||||
frontBottomLeft = frontBottomLeft * worldRot;
|
||||
|
@ -795,10 +795,23 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
Vector3 boundingBox = new Vector3(maxX - minX, maxY - minY, maxZ - minZ);
|
||||
|
||||
offsetHeight = 0;
|
||||
float lower = (minZ * -1);
|
||||
if (lower > maxZ)
|
||||
{
|
||||
offsetHeight = lower - (boundingBox.Z / 2);
|
||||
|
||||
}
|
||||
else if (maxZ > lower)
|
||||
{
|
||||
offsetHeight = maxZ - (boundingBox.Z / 2);
|
||||
offsetHeight *= -1;
|
||||
}
|
||||
|
||||
// m_log.InfoFormat("BoundingBox is {0} , {1} , {2} ", boundingBox.X, boundingBox.Y, boundingBox.Z);
|
||||
return boundingBox;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public void SaveScriptedState(XmlTextWriter writer)
|
||||
|
|
Loading…
Reference in New Issue