aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs93
1 files changed, 92 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 983e1a9..3a90cff 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -1219,8 +1219,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1219 1219
1220 LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(map, patches); 1220 LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(map, patches);
1221 layerpack.Header.Zerocoded = true; 1221 layerpack.Header.Zerocoded = true;
1222 1222
1223 OutPacket(layerpack, ThrottleOutPacketType.Land); 1223 OutPacket(layerpack, ThrottleOutPacketType.Land);
1224
1224 } 1225 }
1225 catch (Exception e) 1226 catch (Exception e)
1226 { 1227 {
@@ -1229,6 +1230,96 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1229 } 1230 }
1230 1231
1231 /// <summary> 1232 /// <summary>
1233 /// Send the region heightmap to the client
1234 /// </summary>
1235 /// <param name="map">heightmap</param>
1236 public virtual void SendWindData(float[] map)
1237 {
1238 ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)map);
1239 }
1240
1241 /// <summary>
1242 /// Send terrain layer information to the client.
1243 /// </summary>
1244 /// <param name="o"></param>
1245 private void DoSendWindData(object o)
1246 {
1247 float[] map = (float[])o;
1248
1249 try
1250 {
1251 for (int y = 0; y < 16; y++)
1252 {
1253 // For some terrains, sending more than one terrain patch at once results in a libsecondlife exception
1254 // see http://opensimulator.org/mantis/view.php?id=1662
1255 //for (int x = 0; x < 16; x += 4)
1256 //{
1257 // SendLayerPacket(map, y, x);
1258 // Thread.Sleep(150);
1259 //}
1260 for (int x = 0; x < 16; x++)
1261 {
1262 SendWindData(x, y, map);
1263 Thread.Sleep(35);
1264 }
1265 }
1266 }
1267 catch (Exception e)
1268 {
1269 m_log.Warn("[CLIENT]: ClientView.API.cs: SendLayerData() - Failed with exception " + e.ToString());
1270 }
1271 }
1272
1273 /// <summary>
1274 /// Sends a set of four patches (x, x+1, ..., x+3) to the client
1275 /// </summary>
1276 /// <param name="map">heightmap</param>
1277 /// <param name="px">X coordinate for patches 0..12</param>
1278 /// <param name="py">Y coordinate for patches 0..15</param>
1279 // private void SendLayerPacket(float[] map, int y, int x)
1280 // {
1281 // int[] patches = new int[4];
1282 // patches[0] = x + 0 + y * 16;
1283 // patches[1] = x + 1 + y * 16;
1284 // patches[2] = x + 2 + y * 16;
1285 // patches[3] = x + 3 + y * 16;
1286
1287 // Packet layerpack = LLClientView.TerrainManager.CreateLandPacket(map, patches);
1288 // OutPacket(layerpack, ThrottleOutPacketType.Land);
1289 // }
1290
1291 /// <summary>
1292 /// Sends a specified patch to a client
1293 /// </summary>
1294 /// <param name="px">Patch coordinate (x) 0..15</param>
1295 /// <param name="py">Patch coordinate (y) 0..15</param>
1296 /// <param name="map">heightmap</param>
1297 public void SendWindData(int px, int py, float[] map)
1298 {
1299 try
1300 {
1301 int[] patches = new int[1];
1302 int patchx, patchy;
1303 patchx = px;
1304 patchy = py;
1305
1306 patches[0] = patchx + 0 + patchy * 16;
1307
1308 LayerDataPacket layerpack = TerrainCompressor.CreateWindPacket(map, patches);
1309 layerpack.Header.Zerocoded = true;
1310
1311 OutPacket(layerpack, ThrottleOutPacketType.Wind);
1312
1313 }
1314 catch (Exception e)
1315 {
1316 m_log.Warn("[client]: ClientView.API.cs: SendLayerData() - Failed with exception " + e.ToString());
1317 }
1318 }
1319
1320
1321
1322 /// <summary>
1232 /// Tell the client that the given neighbour region is ready to receive a child agent. 1323 /// Tell the client that the given neighbour region is ready to receive a child agent.
1233 /// </summary> 1324 /// </summary>
1234 /// <param name="neighbourHandle"></param> 1325 /// <param name="neighbourHandle"></param>