diff --git a/OpenSim/Region/Framework/Scenes/Border.cs b/OpenSim/Region/Framework/Scenes/Border.cs
deleted file mode 100644
index 08c0c31009..0000000000
--- a/OpenSim/Region/Framework/Scenes/Border.cs
+++ /dev/null
@@ -1,148 +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.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Framework.Scenes
-{
- public class Border
- {
- ///
- /// Line perpendicular to the Direction Cardinal. Z value is the
- ///
- public Vector3 BorderLine = Vector3.Zero;
-
- ///
- /// Direction cardinal of the border, think, 'which side of the region this is'. EX South border: Cardinal.S
- ///
- public Cardinals CrossDirection = Cardinals.N;
- public uint TriggerRegionX = 0;
- public uint TriggerRegionY = 0;
-
- public Border()
- {
- }
-
- ///
- /// Creates a Border. The line is perpendicular to the direction cardinal.
- /// IE: if the direction cardinal is South, the line is West->East
- ///
- /// The starting point for the line of the border.
- /// The position of an object must be greater then this for this border to trigger.
- /// Perpendicular to the direction cardinal
- /// The ending point for the line of the border.
- /// The position of an object must be less then this for this border to trigger.
- /// Perpendicular to the direction cardinal
- /// The position that triggers border the border
- /// cross parallel to the direction cardinal. On the North cardinal, this
- /// normally 256. On the South cardinal, it's normally 0. Any position past this
- /// point on the cartesian coordinate will trigger the border cross as long as it
- /// falls within the line start and the line end.
- /// When this border triggers, teleport to this regionX
- /// in the grid
- /// When this border triggers, teleport to this regionY
- /// in the grid
- /// Cardinal for border direction. Think, 'which side of the
- /// region is this'
- public Border(float lineStart, float lineEnd, float triggerCoordinate, uint triggerRegionX,
- uint triggerRegionY, Cardinals direction)
- {
- BorderLine = new Vector3(lineStart,lineEnd,triggerCoordinate);
- CrossDirection = direction;
- TriggerRegionX = triggerRegionX;
- TriggerRegionY = triggerRegionY;
- }
-
- ///
- /// Tests to see if the given position would cross this border.
- ///
- ///
- public bool TestCross(Vector3 position)
- {
- bool result = false;
- switch (CrossDirection)
- {
- case Cardinals.N: // x+0, y+1
- if (position.X >= BorderLine.X && position.X <= BorderLine.Y && position.Y > BorderLine.Z)
- {
- return true;
- }
- break;
- case Cardinals.NE: // x+1, y+1
- break;
- case Cardinals.E: // x+1, y+0
- if (position.Y >= BorderLine.X && position.Y <= BorderLine.Y && position.X > BorderLine.Z)
- {
- return true;
- }
- break;
- case Cardinals.SE: // x+1, y-1
- break;
- case Cardinals.S: // x+0, y-1
- if (position.X >= BorderLine.X && position.X <= BorderLine.Y && position.Y < BorderLine.Z)
- {
- return true;
- }
- break;
- case Cardinals.SW: // x-1, y-1
- break;
- case Cardinals.W: // x-1, y+0
- if (position.Y >= BorderLine.X && position.Y <= BorderLine.Y && position.X < BorderLine.Z)
- {
- return true;
- }
- break;
- case Cardinals.NW: // x-1, y+1
- break;
- }
-
- return result;
- }
-
- public float Extent
- {
- get
- {
- switch (CrossDirection)
- {
- case Cardinals.N:
- break;
- case Cardinals.S:
- break;
- case Cardinals.W:
- break;
- case Cardinals.E:
- break;
- }
- return 0;
- }
- }
- }
-}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 37352afb9a..00e699e0ed 100755
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -430,7 +430,6 @@ namespace OpenSim.Region.Framework.Scenes
///
private int m_lastFrameTick;
- public bool CombineRegions = false;
///
/// Tick at which the last maintenance run occurred.
///
@@ -1060,7 +1059,6 @@ namespace OpenSim.Region.Framework.Scenes
m_strictAccessControl = startupConfig.GetBoolean("StrictAccessControl", m_strictAccessControl);
m_seeIntoBannedRegion = startupConfig.GetBoolean("SeeIntoBannedRegion", m_seeIntoBannedRegion);
- CombineRegions = startupConfig.GetBoolean("CombineContiguousRegions", false);
string[] possibleMapConfigSections = new string[] { "Map", "Startup" };
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index f59518ba8c..b65d168a91 100755
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -298,45 +298,42 @@ namespace OpenSim.Region.Framework.Scenes
protected internal bool AddRestoredSceneObject(
SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates)
{
- if (!m_parentScene.CombineRegions)
+ // temporary checks to remove after varsize suport
+ float regionSizeX = m_parentScene.RegionInfo.RegionSizeX;
+ if (regionSizeX == 0)
+ regionSizeX = Constants.RegionSize;
+ float regionSizeY = m_parentScene.RegionInfo.RegionSizeY;
+ if (regionSizeY == 0)
+ regionSizeY = Constants.RegionSize;
+
+ // KF: Check for out-of-region, move inside and make static.
+ Vector3 npos = new Vector3(sceneObject.RootPart.GroupPosition.X,
+ sceneObject.RootPart.GroupPosition.Y,
+ sceneObject.RootPart.GroupPosition.Z);
+ bool clampZ = m_parentScene.ClampNegativeZ;
+
+ if (!(((sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) && (sceneObject.RootPart.Shape.State != 0))) && (npos.X < 0.0 || npos.Y < 0.0 || (npos.Z < 0.0 && clampZ) ||
+ npos.X > regionSizeX ||
+ npos.Y > regionSizeY))
{
- // temporary checks to remove after varsize suport
- float regionSizeX = m_parentScene.RegionInfo.RegionSizeX;
- if (regionSizeX == 0)
- regionSizeX = Constants.RegionSize;
- float regionSizeY = m_parentScene.RegionInfo.RegionSizeY;
- if (regionSizeY == 0)
- regionSizeY = Constants.RegionSize;
+ if (npos.X < 0.0) npos.X = 1.0f;
+ if (npos.Y < 0.0) npos.Y = 1.0f;
+ if (npos.Z < 0.0 && clampZ) npos.Z = 0.0f;
+ if (npos.X > regionSizeX) npos.X = regionSizeX - 1.0f;
+ if (npos.Y > regionSizeY) npos.Y = regionSizeY - 1.0f;
- // KF: Check for out-of-region, move inside and make static.
- Vector3 npos = new Vector3(sceneObject.RootPart.GroupPosition.X,
- sceneObject.RootPart.GroupPosition.Y,
- sceneObject.RootPart.GroupPosition.Z);
- bool clampZ = m_parentScene.ClampNegativeZ;
+ SceneObjectPart rootpart = sceneObject.RootPart;
+ rootpart.GroupPosition = npos;
- if (!(((sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) && (sceneObject.RootPart.Shape.State != 0))) && (npos.X < 0.0 || npos.Y < 0.0 || (npos.Z < 0.0 && clampZ) ||
- npos.X > regionSizeX ||
- npos.Y > regionSizeY))
+ foreach (SceneObjectPart part in sceneObject.Parts)
{
- if (npos.X < 0.0) npos.X = 1.0f;
- if (npos.Y < 0.0) npos.Y = 1.0f;
- if (npos.Z < 0.0 && clampZ) npos.Z = 0.0f;
- if (npos.X > regionSizeX) npos.X = regionSizeX - 1.0f;
- if (npos.Y > regionSizeY) npos.Y = regionSizeY - 1.0f;
-
- SceneObjectPart rootpart = sceneObject.RootPart;
- rootpart.GroupPosition = npos;
-
- foreach (SceneObjectPart part in sceneObject.Parts)
- {
- if (part == rootpart)
- continue;
- part.GroupPosition = npos;
- }
- rootpart.Velocity = Vector3.Zero;
- rootpart.AngularVelocity = Vector3.Zero;
- rootpart.Acceleration = Vector3.Zero;
+ if (part == rootpart)
+ continue;
+ part.GroupPosition = npos;
}
+ rootpart.Velocity = Vector3.Zero;
+ rootpart.AngularVelocity = Vector3.Zero;
+ rootpart.Acceleration = Vector3.Zero;
}
bool ret = AddSceneObject(sceneObject, attachToBackup, sendClientUpdates);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs b/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs
deleted file mode 100644
index e2092214b2..0000000000
--- a/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs
+++ /dev/null
@@ -1,340 +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.IO;
-using System.Text;
-using NUnit.Framework;
-using OpenMetaverse;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Region.Framework.Scenes.Tests
-{
- [TestFixture]
- public class BorderTests : OpenSimTestCase
- {
- [Test]
- public void TestCross()
- {
- TestHelpers.InMethod();
-
- List testborders = new List();
-
- Border NorthBorder = new Border();
- NorthBorder.BorderLine = new Vector3(0, 256, 256); //<---
- NorthBorder.CrossDirection = Cardinals.N;
- testborders.Add(NorthBorder);
-
- Border SouthBorder = new Border();
- SouthBorder.BorderLine = new Vector3(0, 256, 0); //--->
- SouthBorder.CrossDirection = Cardinals.S;
- testborders.Add(SouthBorder);
-
- Border EastBorder = new Border();
- EastBorder.BorderLine = new Vector3(0, 256, 256); //<---
- EastBorder.CrossDirection = Cardinals.E;
- testborders.Add(EastBorder);
-
- Border WestBorder = new Border();
- WestBorder.BorderLine = new Vector3(0, 256, 0); //--->
- WestBorder.CrossDirection = Cardinals.W;
- testborders.Add(WestBorder);
-
- Vector3 position = new Vector3(200,200,21);
-
- foreach (Border b in testborders)
- Assert.That(!b.TestCross(position));
-
- position = new Vector3(200,280,21);
- Assert.That(NorthBorder.TestCross(position));
-
- // Test automatic border crossing
- // by setting the border crossing aabb to be the whole region
- position = new Vector3(25,25,21); // safely within one 256m region
-
- // The Z value of the BorderLine is reversed, making all positions within the region
- // trigger bordercross
-
- SouthBorder.BorderLine = new Vector3(0,256,256); // automatic border cross in the region
- Assert.That(SouthBorder.TestCross(position));
-
- NorthBorder.BorderLine = new Vector3(0, 256, 0); // automatic border cross in the region
- Assert.That(NorthBorder.TestCross(position));
-
- EastBorder.BorderLine = new Vector3(0, 256, 0); // automatic border cross in the region
- Assert.That(EastBorder.TestCross(position));
-
- WestBorder.BorderLine = new Vector3(0, 256, 255); // automatic border cross in the region
- Assert.That(WestBorder.TestCross(position));
- }
-
- [Test]
- public void TestCrossSquare512()
- {
- TestHelpers.InMethod();
-
- List testborders = new List();
-
- Border NorthBorder = new Border();
- NorthBorder.BorderLine = new Vector3(0, 512, 512);
- NorthBorder.CrossDirection = Cardinals.N;
- testborders.Add(NorthBorder);
-
- Border SouthBorder = new Border();
- SouthBorder.BorderLine = new Vector3(0, 512, 0);
- SouthBorder.CrossDirection = Cardinals.S;
- testborders.Add(SouthBorder);
-
- Border EastBorder = new Border();
- EastBorder.BorderLine = new Vector3(0, 512, 512);
- EastBorder.CrossDirection = Cardinals.E;
- testborders.Add(EastBorder);
-
- Border WestBorder = new Border();
- WestBorder.BorderLine = new Vector3(0, 512, 0);
- WestBorder.CrossDirection = Cardinals.W;
- testborders.Add(WestBorder);
-
- Vector3 position = new Vector3(450,220,21);
-
- foreach (Border b in testborders)
- {
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger east border
- position = new Vector3(513,220,21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.E)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger west border
- position = new Vector3(-1, 220, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.W)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger north border
- position = new Vector3(220, 513, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.N)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger south border
- position = new Vector3(220, -1, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.S)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
- }
-
- [Test]
- public void TestCrossRectangle512x256()
- {
- TestHelpers.InMethod();
-
- List testborders = new List();
-
- Border NorthBorder = new Border();
- NorthBorder.BorderLine = new Vector3(0, 512, 256);
- NorthBorder.CrossDirection = Cardinals.N;
- testborders.Add(NorthBorder);
-
- Border SouthBorder = new Border();
- SouthBorder.BorderLine = new Vector3(0, 512, 0);
- SouthBorder.CrossDirection = Cardinals.S;
- testborders.Add(SouthBorder);
-
- Border EastBorder = new Border();
- EastBorder.BorderLine = new Vector3(0, 256, 512);
- EastBorder.CrossDirection = Cardinals.E;
- testborders.Add(EastBorder);
-
- Border WestBorder = new Border();
- WestBorder.BorderLine = new Vector3(0, 256, 0);
- WestBorder.CrossDirection = Cardinals.W;
- testborders.Add(WestBorder);
-
- Vector3 position = new Vector3(450, 220, 21);
-
- foreach (Border b in testborders)
- {
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger east border
- position = new Vector3(513, 220, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.E)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger west border
- position = new Vector3(-1, 220, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.W)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger north border
- position = new Vector3(220, 257, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.N)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
-
- //Trigger south border
- position = new Vector3(220, -1, 21);
- foreach (Border b in testborders)
- {
- if (b.CrossDirection == Cardinals.S)
- Assert.That(b.TestCross(position));
- else
- Assert.That(!b.TestCross(position));
-
- }
- }
-
- [Test]
- public void TestCrossOdd512x512w256hole()
- {
- TestHelpers.InMethod();
-
- List testborders = new List();
- // 512____
- // | |
- // 256__| |___
- // | |
- // |______|
- // 0 | 512
- // 256
-
- // Compound North border since the hole is at the top
- Border NorthBorder1 = new Border();
- NorthBorder1.BorderLine = new Vector3(0, 256, 512);
- NorthBorder1.CrossDirection = Cardinals.N;
- testborders.Add(NorthBorder1);
-
- Border NorthBorder2 = new Border();
- NorthBorder2.BorderLine = new Vector3(256, 512, 256);
- NorthBorder2.CrossDirection = Cardinals.N;
- testborders.Add(NorthBorder2);
-
- Border SouthBorder = new Border();
- SouthBorder.BorderLine = new Vector3(0, 512, 0);
- SouthBorder.CrossDirection = Cardinals.S;
- testborders.Add(SouthBorder);
-
- //Compound East border
- Border EastBorder1 = new Border();
- EastBorder1.BorderLine = new Vector3(0, 256, 512);
- EastBorder1.CrossDirection = Cardinals.E;
- testborders.Add(EastBorder1);
-
- Border EastBorder2 = new Border();
- EastBorder2.BorderLine = new Vector3(257, 512, 256);
- EastBorder2.CrossDirection = Cardinals.E;
- testborders.Add(EastBorder2);
-
-
-
- Border WestBorder = new Border();
- WestBorder.BorderLine = new Vector3(0, 512, 0);
- WestBorder.CrossDirection = Cardinals.W;
- testborders.Add(WestBorder);
-
- Vector3 position = new Vector3(450, 220, 21);
-
- foreach (Border b in testborders)
- {
- Assert.That(!b.TestCross(position));
-
- }
-
- position = new Vector3(220, 450, 21);
-
- foreach (Border b in testborders)
- {
- Assert.That(!b.TestCross(position));
-
- }
-
- bool result = false;
- int bordersTriggered = 0;
-
- position = new Vector3(450, 450, 21);
-
- foreach (Border b in testborders)
- {
- if (b.TestCross(position))
- {
- bordersTriggered++;
- result = true;
- }
- }
-
- Assert.That(result);
- Assert.That(bordersTriggered == 2);
-
- }
- }
-}