From 824a3a114b1142325f523e2039ed070cce9ea850 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 19 May 2012 04:22:30 +0100
Subject: refactor: Add RegionConnection.PosX and PosY to return position in
meters rather than copy/pasting the necessary calculations in lots of places.
---
.../RegionCombinerModule/RegionCombinerModule.cs | 36 ++++++---------------
.../RegionCombinerModule/RegionConnections.cs | 37 +++++++++++++++++++---
2 files changed, 43 insertions(+), 30 deletions(-)
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
index b3750ca..81ed339 100644
--- a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
+++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
@@ -408,11 +408,7 @@ namespace OpenSim.Region.RegionCombinerModule
//xxy
//xxx
-
- if ((((int)rootConn.X * (int)Constants.RegionSize) + rootConn.XEnd
- >= (newConn.X * (int)Constants.RegionSize))
- && (((int)rootConn.Y * (int)Constants.RegionSize)
- >= (newConn.Y * (int)Constants.RegionSize)))
+ if (rootConn.PosX + rootConn.XEnd >= newConn.PosX && rootConn.PosY >= newConn.PosY)
{
connectedYN = DoWorkForOneRegionOverPlusXY(rootConn, newConn, scene);
break;
@@ -422,10 +418,7 @@ namespace OpenSim.Region.RegionCombinerModule
//xyx
//xxx
//xxx
- if ((((int)rootConn.X * (int)Constants.RegionSize)
- >= (newConn.X * (int)Constants.RegionSize))
- && (((int)rootConn.Y * (int)Constants.RegionSize) + rootConn.YEnd
- >= (newConn.Y * (int)Constants.RegionSize)))
+ if (rootConn.PosX >= newConn.PosX && rootConn.PosY + rootConn.YEnd >= newConn.PosY)
{
connectedYN = DoWorkForOneRegionOverXPlusY(rootConn, newConn, scene);
break;
@@ -435,10 +428,7 @@ namespace OpenSim.Region.RegionCombinerModule
//xxy
//xxx
//xxx
- if ((((int)rootConn.X * (int)Constants.RegionSize) + rootConn.XEnd
- >= (newConn.X * (int)Constants.RegionSize))
- && (((int)rootConn.Y * (int)Constants.RegionSize) + rootConn.YEnd
- >= (newConn.Y * (int)Constants.RegionSize)))
+ if (rootConn.PosX + rootConn.XEnd >= newConn.PosX && rootConn.PosY + rootConn.YEnd >= newConn.PosY)
{
connectedYN = DoWorkForOneRegionOverPlusXPlusY(rootConn, newConn, scene);
break;
@@ -460,10 +450,8 @@ namespace OpenSim.Region.RegionCombinerModule
private bool DoWorkForOneRegionOverPlusXY(RegionConnections rootConn, RegionConnections newConn, Scene scene)
{
Vector3 offset = Vector3.Zero;
- offset.X = (((newConn.X * (int)Constants.RegionSize)) -
- ((rootConn.X * (int)Constants.RegionSize)));
- offset.Y = (((newConn.Y * (int)Constants.RegionSize)) -
- ((rootConn.Y * (int)Constants.RegionSize)));
+ offset.X = newConn.PosX - rootConn.PosX;
+ offset.Y = newConn.PosY - rootConn.PosY;
Vector3 extents = Vector3.Zero;
extents.Y = rootConn.YEnd;
@@ -529,10 +517,8 @@ namespace OpenSim.Region.RegionCombinerModule
private bool DoWorkForOneRegionOverXPlusY(RegionConnections rootConn, RegionConnections newConn, Scene scene)
{
Vector3 offset = Vector3.Zero;
- offset.X = (((newConn.X * (int)Constants.RegionSize)) -
- ((rootConn.X * (int)Constants.RegionSize)));
- offset.Y = (((newConn.Y * (int)Constants.RegionSize)) -
- ((rootConn.Y * (int)Constants.RegionSize)));
+ offset.X = newConn.PosX - rootConn.PosX;
+ offset.Y = newConn.PosY - rootConn.PosY;
Vector3 extents = Vector3.Zero;
extents.Y = newConn.YEnd + rootConn.YEnd;
@@ -589,10 +575,8 @@ namespace OpenSim.Region.RegionCombinerModule
private bool DoWorkForOneRegionOverPlusXPlusY(RegionConnections rootConn, RegionConnections newConn, Scene scene)
{
Vector3 offset = Vector3.Zero;
- offset.X = (((newConn.X * (int)Constants.RegionSize)) -
- ((rootConn.X * (int)Constants.RegionSize)));
- offset.Y = (((newConn.Y * (int)Constants.RegionSize)) -
- ((rootConn.Y * (int)Constants.RegionSize)));
+ offset.X = newConn.PosX - rootConn.PosX;
+ offset.Y = newConn.PosY - rootConn.PosY;
Vector3 extents = Vector3.Zero;
@@ -622,7 +606,7 @@ namespace OpenSim.Region.RegionCombinerModule
rootConn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents);
scene.PhysicsScene.Combine(rootConn.RegionScene.PhysicsScene, offset, Vector3.Zero);
-
+
lock (rootConn.RegionScene.NorthBorders)
{
if (rootConn.RegionScene.NorthBorders.Count == 1)// && 2)
diff --git a/OpenSim/Region/RegionCombinerModule/RegionConnections.cs b/OpenSim/Region/RegionCombinerModule/RegionConnections.cs
index 3aa9f20..fba51d2 100644
--- a/OpenSim/Region/RegionCombinerModule/RegionConnections.cs
+++ b/OpenSim/Region/RegionCombinerModule/RegionConnections.cs
@@ -28,6 +28,7 @@
using System;
using System.Collections.Generic;
using OpenMetaverse;
+using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
@@ -49,17 +50,45 @@ namespace OpenSim.Region.RegionCombinerModule
/// LargeLandChannel for combined region
///
public ILandChannel RegionLandChannel;
+
+ ///
+ /// The x map co-ordinate for this region (where each co-ordinate is a Constants.RegionSize block).
+ ///
public uint X;
+
+ ///
+ /// The y co-ordinate for this region (where each cor-odinate is a Constants.RegionSize block).
+ ///
public uint Y;
- public int XEnd;
- public int YEnd;
+
+ ///
+ /// The X meters position of this connection.
+ ///
+ public uint PosX { get { return X * Constants.RegionSize; } }
+
+ ///
+ /// The Y meters co-ordinate of this connection.
+ ///
+ public uint PosY { get { return Y * Constants.RegionSize; } }
+
+ ///
+ /// The size of the megaregion in meters.
+ ///
+ public uint XEnd;
+
+ ///
+ /// The size of the megaregion in meters.
+ ///
+ public uint YEnd;
+
public List ConnectedRegions;
public RegionCombinerPermissionModule PermissionModule;
public RegionCombinerClientEventForwarder ClientEventForwarder;
+
public void UpdateExtents(Vector3 extents)
{
- XEnd = (int)extents.X;
- YEnd = (int)extents.Y;
+ XEnd = (uint)extents.X;
+ YEnd = (uint)extents.Y;
}
}
}
\ No newline at end of file
--
cgit v1.1