remove references to RegionCombinerModule

LSLKeyTest
UbitUmarov 2016-07-28 00:34:16 +01:00
parent a8e19b7831
commit ec8101a24a
7 changed files with 26 additions and 185 deletions

View File

@ -173,7 +173,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
private BannedRegionCache m_bannedRegionCache = new BannedRegionCache();
private IEventQueue m_eqModule;
private IRegionCombinerModule m_regionCombinerModule;
#region ISharedRegionModule
@ -339,7 +338,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
return;
m_eqModule = Scene.RequestModuleInterface<IEventQueue>();
m_regionCombinerModule = Scene.RequestModuleInterface<IRegionCombinerModule>();
}
#endregion
@ -1341,18 +1339,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
protected virtual bool NeedsNewAgent(float viewdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY,
int oldsizeX, int oldsizeY, int newsizeX, int newsizeY)
{
if (m_regionCombinerModule != null && m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
{
Vector2 swCorner, neCorner;
GetMegaregionViewRange(out swCorner, out neCorner);
m_log.DebugFormat(
"[ENTITY TRANSFER MODULE]: Megaregion view of {0} is from {1} to {2} with new agent check for {3},{4}",
Scene.Name, swCorner, neCorner, newRegionX, newRegionY);
return !(newRegionX >= swCorner.X && newRegionX <= neCorner.X && newRegionY >= swCorner.Y && newRegionY <= neCorner.Y);
}
return Util.IsOutsideView(viewdist, oldRegionX, newRegionX, oldRegionY, newRegionY,
oldsizeX, oldsizeY, newsizeX, newsizeY);
}
@ -2385,13 +2371,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
{
Vector2 extent = Vector2.Zero;
if (m_regionCombinerModule != null)
{
Vector2 megaRegionSize = m_regionCombinerModule.GetSizeOfMegaregion(Scene.RegionInfo.RegionID);
extent.X = (float)Util.WorldToRegionLoc((uint)megaRegionSize.X);
extent.Y = (float)Util.WorldToRegionLoc((uint)megaRegionSize.Y);
}
swCorner.X = Scene.RegionInfo.RegionLocX - 1;
swCorner.Y = Scene.RegionInfo.RegionLocY - 1;
neCorner.X = Scene.RegionInfo.RegionLocX + extent.X;
@ -2411,46 +2390,29 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
RegionInfo m_regionInfo = pScene.RegionInfo;
List<GridRegion> neighbours;
// Leaving this as a "megaregions" computation vs "non-megaregions" computation; it isn't
// clear what should be done with a "far view" given that megaregions already extended the
// view to include everything in the megaregion
if (m_regionCombinerModule == null || !m_regionCombinerModule.IsRootForMegaregion(Scene.RegionInfo.RegionID))
{
uint dd = (uint)avatar.RegionViewDistance;
uint dd = (uint)avatar.RegionViewDistance;
// 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 ddY = Math.Max(dd, Constants.RegionSize);
// 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 ddY = Math.Max(dd, Constants.RegionSize);
ddX--;
ddY--;
ddX--;
ddY--;
// reference to region edges. Should be avatar position
uint startX = Util.RegionToWorldLoc(pRegionLocX);
uint endX = startX + m_regionInfo.RegionSizeX;
uint startY = Util.RegionToWorldLoc(pRegionLocY);
uint endY = startY + m_regionInfo.RegionSizeY;
// reference to region edges. Should be avatar position
uint startX = Util.RegionToWorldLoc(pRegionLocX);
uint endX = startX + m_regionInfo.RegionSizeX;
uint startY = Util.RegionToWorldLoc(pRegionLocY);
uint endY = startY + m_regionInfo.RegionSizeY;
startX -= ddX;
startY -= ddY;
endX += ddX;
endY += ddY;
startX -= ddX;
startY -= ddY;
endX += ddX;
endY += ddY;
neighbours
= avatar.Scene.GridService.GetRegionRange(
m_regionInfo.ScopeID, (int)startX, (int)endX, (int)startY, (int)endY);
}
else
{
Vector2 swCorner, neCorner;
GetMegaregionViewRange(out swCorner, out neCorner);
neighbours
= pScene.GridService.GetRegionRange(
m_regionInfo.ScopeID,
(int)Util.RegionToWorldLoc((uint)swCorner.X), (int)Util.RegionToWorldLoc((uint)neCorner.X),
(int)Util.RegionToWorldLoc((uint)swCorner.Y), (int)Util.RegionToWorldLoc((uint)neCorner.Y));
}
neighbours
= avatar.Scene.GridService.GetRegionRange(
m_regionInfo.ScopeID, (int)startX, (int)endX, (int)startY, (int)endY);
// The r.RegionFlags == null check only needs to be made for simulators before 2015-01-14 (pre 0.8.1).
neighbours.RemoveAll( r => r.RegionID == m_regionInfo.RegionID );

View File

@ -522,22 +522,10 @@ namespace OpenSim.Region.CoreModules.World.Archiver
protected static void WriteRegionInfo(Scene scene, XmlTextWriter xtw)
{
bool isMegaregion;
Vector2 size;
IRegionCombinerModule rcMod = scene.RequestModuleInterface<IRegionCombinerModule>();
if (rcMod != null)
isMegaregion = rcMod.IsRootForMegaregion(scene.RegionInfo.RegionID);
else
isMegaregion = false;
size = new Vector2((float)scene.RegionInfo.RegionSizeX, (float)scene.RegionInfo.RegionSizeY);
if (isMegaregion)
size = rcMod.GetSizeOfMegaregion(scene.RegionInfo.RegionID);
else
size = new Vector2((float)scene.RegionInfo.RegionSizeX, (float)scene.RegionInfo.RegionSizeY);
xtw.WriteElementString("is_megaregion", isMegaregion.ToString());
xtw.WriteElementString("size_in_meters", string.Format("{0},{1}", size.X, size.Y));
}

View File

@ -53,7 +53,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Scene Scene { get; private set; }
public IRegionCombinerModule RegionCombinerModule { get; private set; }
/// <value>
/// The file used to load and save an opensimulator archive if no filename has been specified
@ -85,7 +84,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
public void RegionLoaded(Scene scene)
{
RegionCombinerModule = scene.RequestModuleInterface<IRegionCombinerModule>();
}
public void RemoveRegion(Scene scene)

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenSim.Region.Framework.Scenes;
using System.IO;
using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces
{
public interface IRegionCombinerModule
{
/// <summary>
/// Does the given id belong to the root region of a megaregion?
/// </summary>
bool IsRootForMegaregion(UUID regionId);
/// <summary>
/// Gets the size of megaregion.
/// </summary>
/// <remarks>
/// Returns size in meters.
/// Do not rely on this method remaining the same - this area is actively under development.
/// </remarks>
/// <param name="sceneId">
/// The id of the root region for a megaregion.
/// This may change in the future to allow any region id that makes up a megaregion.
/// Currently, will throw an exception if this does not match a root region.
/// </param>
Vector2 GetSizeOfMegaregion(UUID regionId);
/// <summary>
/// Tests to see of position (relative to the region) is within the megaregion
/// </summary>
bool PositionIsInMegaregion(UUID currentRegion, int xx, int yy);
}
}

View File

@ -2925,18 +2925,8 @@ namespace OpenSim.Region.Framework.Scenes
if (xx < 0 || yy < 0)
return false;
IRegionCombinerModule regionCombinerModule = RequestModuleInterface<IRegionCombinerModule>();
if (regionCombinerModule == null)
{
// Regular region. Just check for region size
if (xx < RegionInfo.RegionSizeX && yy < RegionInfo.RegionSizeY )
ret = true;
}
else
{
// We're in a mega-region so see if we are still in that larger region
ret = regionCombinerModule.PositionIsInMegaregion(this.RegionInfo.RegionID, xx, yy);
}
if (xx < RegionInfo.RegionSizeX && yy < RegionInfo.RegionSizeY )
ret = true;
return ret;
}

View File

@ -2910,11 +2910,7 @@ namespace OpenSim.Region.Framework.Scenes
// Allow move to another sub-region within a megaregion
Vector2 regionSize;
IRegionCombinerModule regionCombinerModule = m_scene.RequestModuleInterface<IRegionCombinerModule>();
if (regionCombinerModule != null)
regionSize = regionCombinerModule.GetSizeOfMegaregion(m_scene.RegionInfo.RegionID);
else
regionSize = new Vector2(m_scene.RegionInfo.RegionSizeX, m_scene.RegionInfo.RegionSizeY);
regionSize = new Vector2(m_scene.RegionInfo.RegionSizeX, m_scene.RegionInfo.RegionSizeY);
if (pos.X < 0 || pos.X >= regionSize.X
|| pos.Y < 0 || pos.Y >= regionSize.Y
@ -2923,21 +2919,7 @@ namespace OpenSim.Region.Framework.Scenes
float terrainHeight;
Scene targetScene = m_scene;
// Get terrain height for sub-region in a megaregion if necessary
if (regionCombinerModule != null)
{
int X = (int)((m_scene.RegionInfo.WorldLocX) + pos.X);
int Y = (int)((m_scene.RegionInfo.WorldLocY) + pos.Y);
GridRegion target_region = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, X, Y);
// If X and Y is NaN, target_region will be null
if (target_region == null)
return;
UUID target_regionID = target_region.RegionID;
SceneManager.Instance.TryGetScene(target_region.RegionID, out targetScene);
terrainHeight = (float)targetScene.Heightmap[(int)(pos.X % regionSize.X), (int)(pos.Y % regionSize.Y)];
}
else
terrainHeight = m_scene.GetGroundHeight(pos.X, pos.Y);
terrainHeight = m_scene.GetGroundHeight(pos.X, pos.Y);
// dont try to land underground
terrainHeight += Appearance.AvatarHeight * 0.5f + 0.2f;

View File

@ -3347,24 +3347,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
CheckThreatLevel(ThreatLevel.None, "osGetRegionSize");
m_host.AddScriptLPS(1);
bool isMegaregion;
IRegionCombinerModule rcMod = World.RequestModuleInterface<IRegionCombinerModule>();
if (rcMod != null)
isMegaregion = rcMod.IsRootForMegaregion(World.RegionInfo.RegionID);
else
isMegaregion = false;
if (isMegaregion)
{
Vector2 size = rcMod.GetSizeOfMegaregion(World.RegionInfo.RegionID);
return new LSL_Vector(size.X, size.Y, Constants.RegionHeight);
}
else
{
Scene scene = m_ScriptEngine.World;
GridRegion region = scene.GridService.GetRegionByUUID(UUID.Zero, World.RegionInfo.RegionID);
return new LSL_Vector((float)region.RegionSizeX, (float)region.RegionSizeY, (float)Constants.RegionHeight);
}
Scene scene = m_ScriptEngine.World;
GridRegion region = scene.GridService.GetRegionByUUID(UUID.Zero, World.RegionInfo.RegionID);
return new LSL_Vector((float)region.RegionSizeX, (float)region.RegionSizeY, (float)Constants.RegionHeight);
}
public int osGetSimulatorMemory()