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
							parent
							
								
									fa4ea2db17
								
							
						
					
					
						commit
						f6a0294bbc
					
				|  | @ -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; | ||||||
|  |  | ||||||
|  | @ -34,7 +34,6 @@ 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; | ||||||
|  |  | ||||||
|  | @ -2463,7 +2463,6 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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)) | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)