if osParcelSubdivide does match the entire original parcel, just do nothing

This commit is contained in:
UbitUmarov
2022-04-12 01:16:41 +01:00
parent eee0a1be36
commit d5dca5972d
2 changed files with 30 additions and 1 deletions

View File

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

View File

@@ -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;