diff options
-rw-r--r-- | OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs | 21 |
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; |