add option MaxRegionsViewDistance to control the maximum range to tell viewer to connect to Neighbour regions, since that is diferent from view range
parent
66be75556b
commit
109723dc2d
|
@ -801,7 +801,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
int newSizeX = finalDestination.RegionSizeX;
|
int newSizeX = finalDestination.RegionSizeX;
|
||||||
int newSizeY = finalDestination.RegionSizeY;
|
int newSizeY = finalDestination.RegionSizeY;
|
||||||
|
|
||||||
bool OutSideViewRange = NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY,
|
bool OutSideViewRange = NeedsNewAgent(sp.RegionViewDistance, oldRegionX, newRegionX, oldRegionY, newRegionY,
|
||||||
oldSizeX, oldSizeY, newSizeX, newSizeY);
|
oldSizeX, oldSizeY, newSizeX, newSizeY);
|
||||||
|
|
||||||
if (OutSideViewRange)
|
if (OutSideViewRange)
|
||||||
|
@ -1338,7 +1338,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// This returns 'true' if the new region already has a child agent for our
|
// This returns 'true' if the new region already has a child agent for our
|
||||||
// incoming agent. The implication is that, if 'false', we have to create the
|
// incoming agent. The implication is that, if 'false', we have to create the
|
||||||
// child and then teleport into the region.
|
// child and then teleport into the region.
|
||||||
protected virtual bool NeedsNewAgent(float drawdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY,
|
protected virtual bool NeedsNewAgent(float viewdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY,
|
||||||
int oldsizeX, int oldsizeY, int newsizeX, int newsizeY)
|
int oldsizeX, int oldsizeY, int newsizeX, int newsizeY)
|
||||||
{
|
{
|
||||||
if (m_regionCombinerModule != null && m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
|
if (m_regionCombinerModule != null && m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
|
||||||
|
@ -1353,7 +1353,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
return !(newRegionX >= swCorner.X && newRegionX <= neCorner.X && newRegionY >= swCorner.Y && newRegionY <= neCorner.Y);
|
return !(newRegionX >= swCorner.X && newRegionX <= neCorner.X && newRegionY >= swCorner.Y && newRegionY <= neCorner.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Util.IsOutsideView(drawdist, oldRegionX, newRegionX, oldRegionY, newRegionY,
|
return Util.IsOutsideView(viewdist, oldRegionX, newRegionX, oldRegionY, newRegionY,
|
||||||
oldsizeX, oldsizeY, newsizeX, newsizeY);
|
oldsizeX, oldsizeY, newsizeX, newsizeY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2449,7 +2449,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// view to include everything in the megaregion
|
// view to include everything in the megaregion
|
||||||
if (m_regionCombinerModule == null || !m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
|
if (m_regionCombinerModule == null || !m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
|
||||||
{
|
{
|
||||||
uint dd = (uint)avatar.DrawDistance;
|
uint dd = (uint)avatar.RegionViewDistance;
|
||||||
|
|
||||||
// until avatar movement updates client connections, we need to seend at least this current region imediate Neighbors
|
// until avatar movement updates client connections, we need to seend at least this current region imediate Neighbors
|
||||||
uint ddX = Math.Max(dd, Constants.RegionSize);
|
uint ddX = Math.Max(dd, Constants.RegionSize);
|
||||||
|
|
|
@ -296,6 +296,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
get { return m_maxDrawDistance; }
|
get { return m_maxDrawDistance; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected float m_maxRegionViewDistance = 255f;
|
||||||
|
public float MaxRegionViewDistance
|
||||||
|
{
|
||||||
|
get { return m_maxRegionViewDistance; }
|
||||||
|
}
|
||||||
|
|
||||||
private List<string> m_AllowedViewers = new List<string>();
|
private List<string> m_AllowedViewers = new List<string>();
|
||||||
private List<string> m_BannedViewers = new List<string>();
|
private List<string> m_BannedViewers = new List<string>();
|
||||||
|
|
||||||
|
@ -972,6 +978,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance", m_defaultDrawDistance);
|
m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance", m_defaultDrawDistance);
|
||||||
m_maxDrawDistance = startupConfig.GetFloat("MaxDrawDistance", m_maxDrawDistance);
|
m_maxDrawDistance = startupConfig.GetFloat("MaxDrawDistance", m_maxDrawDistance);
|
||||||
|
m_maxRegionViewDistance = startupConfig.GetFloat("MaxRegionsViewDistance", m_maxRegionViewDistance);
|
||||||
|
|
||||||
LegacySitOffsets = startupConfig.GetBoolean("LegacyOpenSimSitOffsets", LegacySitOffsets);
|
LegacySitOffsets = startupConfig.GetBoolean("LegacyOpenSimSitOffsets", LegacySitOffsets);
|
||||||
|
|
||||||
|
|
|
@ -583,6 +583,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float RegionViewDistance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Util.Clamp(m_drawDistance, 32f, m_scene.MaxRegionViewDistance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool AllowMovement { get; set; }
|
public bool AllowMovement { get; set; }
|
||||||
|
|
||||||
private bool m_setAlwaysRun;
|
private bool m_setAlwaysRun;
|
||||||
|
@ -3566,7 +3574,33 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|| (!m_pos.ApproxEquals(m_lastPosition, POSITION_SMALLTOLERANCE) && Velocity.LengthSquared() < LOWVELOCITYSQ )
|
|| (!m_pos.ApproxEquals(m_lastPosition, POSITION_SMALLTOLERANCE) && Velocity.LengthSquared() < LOWVELOCITYSQ )
|
||||||
) )
|
) )
|
||||||
{
|
{
|
||||||
SendTerseUpdateToAllClients();
|
/*
|
||||||
|
if (!IsSatOnObject)
|
||||||
|
{
|
||||||
|
// this does need to be more complex later
|
||||||
|
Vector3 vel = Velocity;
|
||||||
|
Vector3 dpos = m_pos - m_lastPosition;
|
||||||
|
if( Math.Abs(vel.X - m_lastVelocity.X) > VELOCITY_TOLERANCE ||
|
||||||
|
Math.Abs(vel.Y - m_lastVelocity.Y) > VELOCITY_TOLERANCE ||
|
||||||
|
Math.Abs(vel.Z - m_lastVelocity.Z) > VELOCITY_TOLERANCE ||
|
||||||
|
|
||||||
|
Math.Abs(m_bodyRot.X - m_lastRotation.X) > ROTATION_TOLERANCE ||
|
||||||
|
Math.Abs(m_bodyRot.Y - m_lastRotation.Y) > ROTATION_TOLERANCE ||
|
||||||
|
Math.Abs(m_bodyRot.Z - m_lastRotation.Z) > ROTATION_TOLERANCE ||
|
||||||
|
|
||||||
|
Math.Abs(dpos.X) > POSITION_LARGETOLERANCE ||
|
||||||
|
Math.Abs(dpos.Y) > POSITION_LARGETOLERANCE ||
|
||||||
|
Math.Abs(dpos.Z) > POSITION_LARGETOLERANCE ||
|
||||||
|
|
||||||
|
( (Math.Abs(dpos.X) > POSITION_SMALLTOLERANCE ||
|
||||||
|
Math.Abs(dpos.Y) > POSITION_SMALLTOLERANCE ||
|
||||||
|
Math.Abs(dpos.Z) > POSITION_SMALLTOLERANCE)
|
||||||
|
&& vel.LengthSquared() < LOWVELOCITYSQ
|
||||||
|
))
|
||||||
|
{
|
||||||
|
*/
|
||||||
|
SendTerseUpdateToAllClients();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
CheckForSignificantMovement();
|
CheckForSignificantMovement();
|
||||||
}
|
}
|
||||||
|
@ -4184,7 +4218,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX)));
|
// m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX)));
|
||||||
// m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY)));
|
// m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY)));
|
||||||
if (Util.IsOutsideView(DrawDistance, x, newRegionX, y, newRegionY,
|
if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY,
|
||||||
regInfo.sizeX, regInfo.sizeY, newRegionSizeX, newRegionSizeY))
|
regInfo.sizeX, regInfo.sizeY, newRegionSizeX, newRegionSizeY))
|
||||||
{
|
{
|
||||||
byebyeRegions.Add(handle);
|
byebyeRegions.Add(handle);
|
||||||
|
@ -4195,7 +4229,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Util.IsOutsideView(DrawDistance, x, newRegionX, y, newRegionY,
|
if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY,
|
||||||
(int)Constants.RegionSize, (int)Constants.RegionSize, newRegionSizeX, newRegionSizeY))
|
(int)Constants.RegionSize, (int)Constants.RegionSize, newRegionSizeX, newRegionSizeY))
|
||||||
{
|
{
|
||||||
byebyeRegions.Add(handle);
|
byebyeRegions.Add(handle);
|
||||||
|
|
Loading…
Reference in New Issue