From 895c612647c0e5ccc01b1d7a270dbec751188d62 Mon Sep 17 00:00:00 2001 From: Teravus Ovares (Dan Olivares) Date: Mon, 31 Aug 2009 16:29:27 -0400 Subject: * When the RegionCombinerModule is active add an extra set of borders with Infinite distances around the whole AABB of the region --- .../CoreModules/World/Land/RegionCombinerModule.cs | 57 +++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs') diff --git a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs index a6e3859..eabdf51 100644 --- a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs @@ -478,7 +478,62 @@ namespace OpenSim.Region.CoreModules.World.Land public void PostInitialise() { - + if (!enabledYN) + return; + + // Create a set of infinite borders around the whole aabb of the combined island. + lock (m_regions) + { + foreach (RegionConnections rconn in m_regions.Values) + { + Vector3 offset = Vector3.Zero; + rconn.RegionScene.BordersLocked = true; + foreach (RegionData rdata in rconn.ConnectedRegions) + { + if (rdata.Offset.X > offset.X) offset.X = rdata.Offset.X; + if (rdata.Offset.Y > offset.Y) offset.Y = rdata.Offset.Y; + + } + + lock (rconn.RegionScene.NorthBorders) + { + Border northBorder = new Border(); + northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, + offset.Y + (int) Constants.RegionSize); //<--- + northBorder.CrossDirection = Cardinals.N; + rconn.RegionScene.NorthBorders.Add(northBorder); + } + + lock (rconn.RegionScene.SouthBorders) + { + Border southBorder = new Border(); + southBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //---> + southBorder.CrossDirection = Cardinals.S; + rconn.RegionScene.SouthBorders.Add(southBorder); + } + + lock (rconn.RegionScene.EastBorders) + { + Border eastBorder = new Border(); + eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, offset.Y + (int)Constants.RegionSize); + //<--- + eastBorder.CrossDirection = Cardinals.E; + rconn.RegionScene.EastBorders.Add(eastBorder); + } + + lock (rconn.RegionScene.WestBorders) + { + Border westBorder = new Border(); + westBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //---> + westBorder.CrossDirection = Cardinals.W; + rconn.RegionScene.WestBorders.Add(westBorder); + } + + + + rconn.RegionScene.BordersLocked = false; + } + } } public void OnFrame() { -- cgit v1.1 From b8d21d9eae0d14c240668e4c73eb64d5bc773b07 Mon Sep 17 00:00:00 2001 From: Teravus Ovares (Dan Olivares) Date: Mon, 31 Aug 2009 20:10:08 -0400 Subject: * Get rid of some debug info and kill the code to make a large AABB until I can figure out how to detect the fact that the system is done starting up new regions. --- .../CoreModules/World/Land/RegionCombinerModule.cs | 37 ++++++++++++++-------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs') diff --git a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs index eabdf51..4e03e95 100644 --- a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs @@ -14,7 +14,10 @@ namespace OpenSim.Region.CoreModules.World.Land { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - public string Name { get { return "RegionCombinerModule"; } } + public string Name { get + { + return "RegionCombinerModule"; + } } public Type ReplaceableInterface { get { return null; } @@ -22,11 +25,15 @@ namespace OpenSim.Region.CoreModules.World.Land private Dictionary m_regions = new Dictionary(); private bool enabledYN = false; + private Dictionary m_startingScenes = new Dictionary(); + public void Initialise(IConfigSource source) { + IConfig myConfig = source.Configs["Startup"]; enabledYN = myConfig.GetBoolean("CombineContiguousRegions", false); //enabledYN = true; + } public void Close() @@ -36,9 +43,13 @@ namespace OpenSim.Region.CoreModules.World.Land public void AddRegion(Scene scene) { + if (!enabledYN) return; + lock (m_startingScenes) + m_startingScenes.Add(scene.RegionInfo.originRegionID, scene); + Border northBorder = new Border(); northBorder.BorderLine = new Vector3(0, (int)Constants.RegionSize, (int)Constants.RegionSize); //<--- northBorder.CrossDirection = Cardinals.N; @@ -464,11 +475,13 @@ namespace OpenSim.Region.CoreModules.World.Land } } + } public void RemoveRegion(Scene scene) { - + + } public void RegionLoaded(Scene scene) @@ -478,10 +491,12 @@ namespace OpenSim.Region.CoreModules.World.Land public void PostInitialise() { - if (!enabledYN) - return; - - // Create a set of infinite borders around the whole aabb of the combined island. + + } + + // Create a set of infinite borders around the whole aabb of the combined island. + private void MakeLargeRegionBounds() + { lock (m_regions) { foreach (RegionConnections rconn in m_regions.Values) @@ -499,7 +514,7 @@ namespace OpenSim.Region.CoreModules.World.Land { Border northBorder = new Border(); northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, - offset.Y + (int) Constants.RegionSize); //<--- + offset.Y); //<--- northBorder.CrossDirection = Cardinals.N; rconn.RegionScene.NorthBorders.Add(northBorder); } @@ -515,8 +530,8 @@ namespace OpenSim.Region.CoreModules.World.Land lock (rconn.RegionScene.EastBorders) { Border eastBorder = new Border(); - eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, offset.Y + (int)Constants.RegionSize); - //<--- + eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, offset.Y); + //<--- eastBorder.CrossDirection = Cardinals.E; rconn.RegionScene.EastBorders.Add(eastBorder); } @@ -535,10 +550,6 @@ namespace OpenSim.Region.CoreModules.World.Land } } } - public void OnFrame() - { - - } public RegionData GetRegionFromPosition(Vector3 pPosition) -- cgit v1.1