From d5dca5972d6582698dc49524f314611c5e12aa87 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 12 Apr 2022 01:16:41 +0100 Subject: [PATCH] if osParcelSubdivide does match the entire original parcel, just do nothing --- .../World/Land/LandManagementModule.cs | 11 +++++++++- .../CoreModules/World/Land/LandObject.cs | 20 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 612557d2f5..1186edb8cc 100755 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -1230,6 +1230,7 @@ namespace OpenSim.Region.CoreModules.World.Land } //Loop through the points + int area = 0; try { for (int y = start_y; y < end_y; y++) @@ -1241,6 +1242,7 @@ namespace OpenSim.Region.CoreModules.World.Land return; if (tempLandObject != startLandObject) return; + area++; } } } @@ -1249,6 +1251,13 @@ namespace OpenSim.Region.CoreModules.World.Land return; } + LandData startLandData = startLandObject.LandData; + if (area >= startLandData.Area) + { + // split is a replace, keep as is + return; + } + //Lets create a new land object with bitmap activated at that point (keeping the old land objects info) ILandObject newLand = startLandObject.Copy(); LandData newLandData = newLand.LandData; @@ -1269,7 +1278,7 @@ namespace OpenSim.Region.CoreModules.World.Land lock (m_landList) { m_landList[startLandObjectIndex].SetLandBitmap(newLand.ModifyLandBitmapSquare(startLandObject.GetLandBitmap(), start_x, start_y, end_x, end_y, false)); - m_landList[startLandObjectIndex].ForceUpdateLandInfo(); + //m_landList[startLandObjectIndex].ForceUpdateLandInfo(); } UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData); diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index afccac28bc..ceca14c49c 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -1153,6 +1153,26 @@ namespace OpenSim.Region.CoreModules.World.Land } } + if(tempArea == 0) + { + m_centerPoint = Vector2.Zero; + m_endPoint = Vector2.Zero; + m_AABBmin = Vector2.Zero; + m_AABBmax = Vector2.Zero; + + LandData.AABBMin = Vector3.Zero; + LandData.AABBMax = Vector3.Zero; + LandData.Area = 0; + + if (m_scene != null) + { + RegionInfo ri = m_scene.RegionInfo; + //create a fake ID + LandData.FakeID = Util.BuildFakeParcelID(ri.RegionHandle, 0, 0); + } + return; + } + int halfunit = landUnit/2; m_centerPoint.X = avgx * landUnit + halfunit;