varregion: send the proper terrain patch layer code for large terrain.
Code cleanups.varregion
parent
79b031bd0c
commit
9bf363e9be
|
@ -116,7 +116,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
xPieces[0] = patchX; // patch X dimension
|
xPieces[0] = patchX; // patch X dimension
|
||||||
yPieces[0] = patchY;
|
yPieces[0] = patchY;
|
||||||
|
|
||||||
return CreateLandPacket(terrData, xPieces, yPieces, (int)TerrainPatch.LayerType.Land);
|
byte landPacketType = (byte)TerrainPatch.LayerType.Land;
|
||||||
|
if (terrData.SizeX > Constants.RegionSize || terrData.SizeY > Constants.RegionSize)
|
||||||
|
{
|
||||||
|
// libOMV does not have a packet type defined for the extended parcel format.
|
||||||
|
// We just happen to know the extended parcel format code is one more than the usual code.
|
||||||
|
landPacketType++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CreateLandPacket(terrData, xPieces, yPieces, landPacketType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -258,19 +266,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
float zmax = -99999999.0f;
|
float zmax = -99999999.0f;
|
||||||
float zmin = 99999999.0f;
|
float zmin = 99999999.0f;
|
||||||
|
|
||||||
for (int j = patchY*16; j < (patchY + 1)*16; j++)
|
for (int j = patchY*Constants.TerrainPatchSize; j < (patchY + 1)*Constants.TerrainPatchSize; j++)
|
||||||
{
|
{
|
||||||
for (int i = patchX*16; i < (patchX + 1)*16; i++)
|
for (int i = patchX*Constants.TerrainPatchSize; i < (patchX + 1)*Constants.TerrainPatchSize; i++)
|
||||||
{
|
{
|
||||||
// short val = heightmap[j*pRegionSizeX + i];
|
|
||||||
float val = terrData[i, j];
|
float val = terrData[i, j];
|
||||||
if (val > zmax) zmax = val;
|
if (val > zmax) zmax = val;
|
||||||
if (val < zmin) zmin = val;
|
if (val < zmin) zmin = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since the the min and max values are the shorts, rescale to be real values.
|
|
||||||
// TODO: all this logic should go into the class wrapping the short values.
|
|
||||||
header.DCOffset = zmin;
|
header.DCOffset = zmin;
|
||||||
header.Range = (int)(zmax - zmin + 1.0f);
|
header.Range = (int)(zmax - zmin + 1.0f);
|
||||||
|
|
||||||
|
@ -816,26 +821,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
int k = 0;
|
int k = 0;
|
||||||
|
|
||||||
int jPatchLimit = patchY;
|
int yPatchLimit = patchY >= (terrData.SizeY / Constants.TerrainPatchSize) ?
|
||||||
if (patchY >= (terrData.SizeY / Constants.TerrainPatchSize))
|
(terrData.SizeY - Constants.TerrainPatchSize) / Constants.TerrainPatchSize : patchY;
|
||||||
{
|
yPatchLimit = (yPatchLimit + 1) * Constants.TerrainPatchSize;
|
||||||
jPatchLimit = (int)(terrData.SizeY - Constants.TerrainPatchSize) / Constants.TerrainPatchSize;
|
|
||||||
}
|
|
||||||
jPatchLimit = (jPatchLimit + 1) * Constants.TerrainPatchSize;
|
|
||||||
|
|
||||||
int iPatchLimit = patchX;
|
int xPatchLimit = patchX >= (terrData.SizeX / Constants.TerrainPatchSize) ?
|
||||||
if (patchX >= (terrData.SizeX / Constants.TerrainPatchSize))
|
(terrData.SizeX - Constants.TerrainPatchSize) / Constants.TerrainPatchSize : patchX;
|
||||||
{
|
xPatchLimit = (xPatchLimit + 1) * Constants.TerrainPatchSize;
|
||||||
iPatchLimit = (int)(terrData.SizeX - Constants.TerrainPatchSize) / Constants.TerrainPatchSize;
|
|
||||||
}
|
|
||||||
iPatchLimit = (iPatchLimit + 1) * Constants.TerrainPatchSize;
|
|
||||||
|
|
||||||
for (int j = patchY * Constants.TerrainPatchSize; j < jPatchLimit; j++)
|
for (int yy = patchY * Constants.TerrainPatchSize; yy < yPatchLimit; yy++)
|
||||||
{
|
{
|
||||||
for (int i = patchX * Constants.TerrainPatchSize; i < iPatchLimit; i++)
|
for (int xx = patchX * Constants.TerrainPatchSize; xx < xPatchLimit; xx++)
|
||||||
{
|
{
|
||||||
// block[k++] = (heightmap[j*pRegionSizeX + i])*premult - sub;
|
block[k++] = terrData[xx, yy] * premult - sub;
|
||||||
block[k++] = terrData[i, j] * premult - sub;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue