Add "show borders" command to show the borders of a region.

This is relevant to mega-regions where the borders are very different to a regular region.
Also adds some method doc and other code comments.
0.7.4-extended
Justin Clark-Casey (justincc) 2013-03-23 00:39:03 +00:00
parent fa4ea2db17
commit f6a0294bbc
6 changed files with 54 additions and 11 deletions

View File

@ -977,6 +977,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
{ {
Scene scene = agent.Scene; Scene scene = agent.Scene;
Vector3 pos = agent.AbsolutePosition; Vector3 pos = agent.AbsolutePosition;
// m_log.DebugFormat(
// "[ENTITY TRANSFER MODULE]: Crossing agent {0} at pos {1} in {2}", agent.Name, pos, scene.Name);
Vector3 newpos = new Vector3(pos.X, pos.Y, pos.Z); Vector3 newpos = new Vector3(pos.X, pos.Y, pos.Z);
uint neighbourx = scene.RegionInfo.RegionLocX; uint neighbourx = scene.RegionInfo.RegionLocX;
uint neighboury = scene.RegionInfo.RegionLocY; uint neighboury = scene.RegionInfo.RegionLocY;

View File

@ -33,8 +33,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Scenes namespace OpenSim.Region.Framework.Scenes
{ {
public class Border public class Border
{ {
/// <summary> /// <summary>
/// Line perpendicular to the Direction Cardinal. Z value is the /// Line perpendicular to the Direction Cardinal. Z value is the
/// </summary> /// </summary>
@ -81,6 +80,10 @@ namespace OpenSim.Region.Framework.Scenes
TriggerRegionY = triggerRegionY; TriggerRegionY = triggerRegionY;
} }
/// <summary>
/// Tests to see if the given position would cross this border.
/// </summary>
/// <returns></returns>
public bool TestCross(Vector3 position) public bool TestCross(Vector3 position)
{ {
bool result = false; bool result = false;

View File

@ -2462,7 +2462,6 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
return null; return null;
} }

View File

@ -439,9 +439,9 @@ namespace OpenSim.Region.Framework.Scenes
{ {
m_pos = PhysicsActor.Position; m_pos = PhysicsActor.Position;
//m_log.DebugFormat( // m_log.DebugFormat(
// "[SCENE PRESENCE]: Set position {0} for {1} in {2} via getting AbsolutePosition!", // "[SCENE PRESENCE]: Set position of {0} in {1} to {2} via getting AbsolutePosition!",
// m_pos, Name, Scene.RegionInfo.RegionName); // Name, Scene.Name, m_pos);
} }
else else
{ {
@ -468,6 +468,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
set set
{ {
// m_log.DebugFormat("[SCENE PRESENCE]: Setting position of {0} in {1} to {2}", Name, Scene.Name, value);
// Util.PrintCallStack();
if (PhysicsActor != null) if (PhysicsActor != null)
{ {
try try
@ -831,6 +834,7 @@ namespace OpenSim.Region.Framework.Scenes
// before the inventory is processed in MakeRootAgent. This fixes a race condition // before the inventory is processed in MakeRootAgent. This fixes a race condition
// related to the handling of attachments // related to the handling of attachments
//m_scene.GetAvatarAppearance(ControllingClient, out Appearance); //m_scene.GetAvatarAppearance(ControllingClient, out Appearance);
if (m_scene.TestBorderCross(pos, Cardinals.E)) if (m_scene.TestBorderCross(pos, Cardinals.E))
{ {
Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E); Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E);
@ -2747,6 +2751,10 @@ namespace OpenSim.Region.Framework.Scenes
if (!IsInTransit) if (!IsInTransit)
{ {
// m_log.DebugFormat(
// "[SCENE PRESENCE]: Testing border check for projected position {0} of {1} in {2}",
// pos2, Name, Scene.Name);
// Checks if where it's headed exists a region // Checks if where it's headed exists a region
bool needsTransit = false; bool needsTransit = false;
if (m_scene.TestBorderCross(pos2, Cardinals.W)) if (m_scene.TestBorderCross(pos2, Cardinals.W))

View File

@ -116,6 +116,37 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
+ "If teleport is true then some extra teleport debug information is logged.\n" + "If teleport is true then some extra teleport debug information is logged.\n"
+ "If updates is true then any frame which exceeds double the maximum desired frame time is logged.", + "If updates is true then any frame which exceeds double the maximum desired frame time is logged.",
HandleDebugSceneSetCommand); HandleDebugSceneSetCommand);
scene.AddCommand(
"Regions",
this, "show borders", "show borders", "Show border information for regions", HandleShowBordersCommand);
}
private void HandleShowBordersCommand(string module, string[] args)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Borders for {0}:\n", m_scene.Name);
ConsoleDisplayTable cdt = new ConsoleDisplayTable();
cdt.AddColumn("Cross Direction", 15);
cdt.AddColumn("Line", 34);
cdt.AddColumn("Trigger Region", 14);
foreach (Border b in m_scene.NorthBorders)
cdt.AddRow(b.CrossDirection, b.BorderLine, string.Format("{0}, {1}", b.TriggerRegionX, b.TriggerRegionY));
foreach (Border b in m_scene.EastBorders)
cdt.AddRow(b.CrossDirection, b.BorderLine, string.Format("{0}, {1}", b.TriggerRegionX, b.TriggerRegionY));
foreach (Border b in m_scene.SouthBorders)
cdt.AddRow(b.CrossDirection, b.BorderLine, string.Format("{0}, {1}", b.TriggerRegionX, b.TriggerRegionY));
foreach (Border b in m_scene.WestBorders)
cdt.AddRow(b.CrossDirection, b.BorderLine, string.Format("{0}, {1}", b.TriggerRegionX, b.TriggerRegionY));
cdt.AddToStringBuilder(sb);
MainConsole.Instance.Output(sb.ToString());
} }
private void HandleDebugSceneGetCommand(string module, string[] args) private void HandleDebugSceneGetCommand(string module, string[] args)

View File

@ -418,18 +418,17 @@ namespace OpenSim.Region.RegionCombinerModule
*/ */
#endregion #endregion
// If we're one region over +x y // If we're one region over +x y (i.e. root region is to the west)
//xxx //xxx
//xxy //xxy
//xxx //xxx
if (rootConn.PosX + rootConn.XEnd >= newConn.PosX && rootConn.PosY >= newConn.PosY) if (rootConn.PosX + rootConn.XEnd >= newConn.PosX && rootConn.PosY >= newConn.PosY)
{ {
connectedYN = DoWorkForOneRegionOverPlusXY(rootConn, newConn, scene); connectedYN = DoWorkForOneRegionOverPlusXY(rootConn, newConn, scene);
break; break;
} }
// If we're one region over x +y // If we're one region over x +y (i.e. root region is to the south)
//xyx //xyx
//xxx //xxx
//xxx //xxx
@ -439,7 +438,7 @@ namespace OpenSim.Region.RegionCombinerModule
break; break;
} }
// If we're one region over +x +y // If we're one region over +x +y (i.e. root region is to the south-west)
//xxy //xxy
//xxx //xxx
//xxx //xxx
@ -649,7 +648,6 @@ namespace OpenSim.Region.RegionCombinerModule
{ {
if (rootConn.RegionScene.EastBorders.Count == 1)// && conn.RegionScene.EastBorders.Count == 2) if (rootConn.RegionScene.EastBorders.Count == 1)// && conn.RegionScene.EastBorders.Count == 2)
{ {
rootConn.RegionScene.EastBorders[0].BorderLine.Z += (int)Constants.RegionSize; rootConn.RegionScene.EastBorders[0].BorderLine.Z += (int)Constants.RegionSize;
lock (rootConn.RegionScene.NorthBorders) lock (rootConn.RegionScene.NorthBorders)