* This doesn't fix mantis 3522, but it should mitigate it.
* If the start position is outside of the region on the X and Y, put the user in the center of the region and then damp the Z position at 720 if necessary. If the start position is not outside of the region on the X or Y, then don't check the Z.0.6.8-post-fixes
parent
c155099faf
commit
0ff3c28f90
|
@ -3470,6 +3470,49 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
agent.startpos.Y = crossedBorder.BorderLine.Z - 1;
|
agent.startpos.Y = crossedBorder.BorderLine.Z - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Mitigate http://opensimulator.org/mantis/view.php?id=3522
|
||||||
|
// Check if start position is outside of region
|
||||||
|
// If it is, check the Z start position also.. if not, leave it alone.
|
||||||
|
if (BordersLocked)
|
||||||
|
{
|
||||||
|
lock (EastBorders)
|
||||||
|
{
|
||||||
|
if (agent.startpos.X > EastBorders[0].BorderLine.Z)
|
||||||
|
{
|
||||||
|
m_log.Warn("FIX AGENT POSITION");
|
||||||
|
agent.startpos.X = EastBorders[0].BorderLine.Z * 0.5f;
|
||||||
|
if (agent.startpos.Z > 720)
|
||||||
|
agent.startpos.Z = 720;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lock (NorthBorders)
|
||||||
|
{
|
||||||
|
if (agent.startpos.Y > NorthBorders[0].BorderLine.Z)
|
||||||
|
{
|
||||||
|
m_log.Warn("FIX Agent POSITION");
|
||||||
|
agent.startpos.Y = NorthBorders[0].BorderLine.Z * 0.5f;
|
||||||
|
if (agent.startpos.Z > 720)
|
||||||
|
agent.startpos.Z = 720;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (agent.startpos.X > EastBorders[0].BorderLine.Z)
|
||||||
|
{
|
||||||
|
m_log.Warn("FIX AGENT POSITION");
|
||||||
|
agent.startpos.X = EastBorders[0].BorderLine.Z * 0.5f;
|
||||||
|
if (agent.startpos.Z > 720)
|
||||||
|
agent.startpos.Z = 720;
|
||||||
|
}
|
||||||
|
if (agent.startpos.Y > NorthBorders[0].BorderLine.Z)
|
||||||
|
{
|
||||||
|
m_log.Warn("FIX Agent POSITION");
|
||||||
|
agent.startpos.Y = NorthBorders[0].BorderLine.Z * 0.5f;
|
||||||
|
if (agent.startpos.Z > 720)
|
||||||
|
agent.startpos.Z = 720;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Honor parcel landing type and position.
|
// Honor parcel landing type and position.
|
||||||
ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y);
|
ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y);
|
||||||
if (land != null)
|
if (land != null)
|
||||||
|
|
Loading…
Reference in New Issue