aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs21
1 files changed, 14 insertions, 7 deletions
diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
index e441979..c9aa3a3 100644
--- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
+++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
@@ -1028,6 +1028,9 @@ namespace OpenSim.Region.CoreModules.World.Terrain
1028 { 1028 {
1029 foreach (PatchUpdates pups in m_perClientPatchUpdates.Values) 1029 foreach (PatchUpdates pups in m_perClientPatchUpdates.Values)
1030 { 1030 {
1031 if(pups.Presence.IsDeleted)
1032 continue;
1033
1031 // throught acording to land queue free to send bytes 1034 // throught acording to land queue free to send bytes
1032 if (!pups.Presence.ControllingClient.CanSendLayerData()) 1035 if (!pups.Presence.ControllingClient.CanSendLayerData())
1033 continue; 1036 continue;
@@ -1104,8 +1107,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
1104 patchs.Add(new PatchesToSend(x, y, 0)); 1107 patchs.Add(new PatchesToSend(x, y, 0));
1105 if (++npatchs >= 128) 1108 if (++npatchs >= 128)
1106 { 1109 {
1107 pups.sendAllcurrentX = x + 1; 1110 x++;
1108 pups.sendAllcurrentY = y;
1109 break; 1111 break;
1110 } 1112 }
1111 } 1113 }
@@ -1121,6 +1123,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain
1121 pups.sendAllcurrentX = 0; 1123 pups.sendAllcurrentX = 0;
1122 pups.sendAllcurrentY = 0; 1124 pups.sendAllcurrentY = 0;
1123 } 1125 }
1126 else
1127 {
1128 pups.sendAllcurrentX = x;
1129 pups.sendAllcurrentY = y;
1130 }
1124 1131
1125 npatchs = patchs.Count; 1132 npatchs = patchs.Count;
1126 if (npatchs > 0) 1133 if (npatchs > 0)
@@ -1181,14 +1188,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain
1181 int startX = testposX - DrawDistance; 1188 int startX = testposX - DrawDistance;
1182 if (startX < 0) 1189 if (startX < 0)
1183 startX = 0; 1190 startX = 0;
1184 else if (startX > limitX) 1191 else if (startX >= limitX)
1185 startX = limitX; 1192 startX = limitX - 1;
1186 1193
1187 int startY = testposY - DrawDistance; 1194 int startY = testposY - DrawDistance;
1188 if (startY < 0) 1195 if (startY < 0)
1189 startY = 0; 1196 startY = 0;
1190 else if (startY > limitY) 1197 else if (startY >= limitY)
1191 startY = limitY; 1198 startY = limitY - 1;
1192 1199
1193 int endX = testposX + DrawDistance; 1200 int endX = testposX + DrawDistance;
1194 if (endX < 0) 1201 if (endX < 0)
@@ -1221,7 +1228,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
1221 { 1228 {
1222 pups.SetByPatch(x, y, false); 1229 pups.SetByPatch(x, y, false);
1223 ret.Add(new PatchesToSend(x, y, (float)distsq)); 1230 ret.Add(new PatchesToSend(x, y, (float)distsq));
1224 if (npatchs++ > 512) 1231 if (npatchs++ > 1024)
1225 { 1232 {
1226 y = endY; 1233 y = endY;
1227 x = endX; 1234 x = endX;