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); - - } - } -}