From 6b13730bc7451a407c6370d289545542c66a74ea Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Fri, 26 Sep 2008 12:56:17 +0000 Subject: * Wind updates. Still random.. but in 4 directions instead of two! * It seems kind of silly to be building a 256x256 array just to use two 16 float blocks.. but for now the layerdata routine requires it so we'll go along with that. * We only fill a 32x16 area of the 256x256 float array with data. * We use patches 0,0 and 0,1 for the first and second patch to determine the direction and magnitude of the wind. --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 50 ++++++++++++---------- 1 file changed, 27 insertions(+), 23 deletions(-) (limited to 'OpenSim/Region/ClientStack') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index e21bf7c..39bda70 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1235,7 +1235,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// heightmap public virtual void SendWindData(float[] map) { - ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)map); + //ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)map); } /// @@ -1244,12 +1244,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// private void DoSendWindData(object o) { - float[] map = (float[])o; + //float[] map = (float[])o; - try - { - for (int y = 0; y < 16; y++) - { + //try + //{ + //for (int y = 0; y < 16; y++) + //{ // For some terrains, sending more than one terrain patch at once results in a libsecondlife exception // see http://opensimulator.org/mantis/view.php?id=1662 //for (int x = 0; x < 16; x += 4) @@ -1257,17 +1257,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // SendLayerPacket(map, y, x); // Thread.Sleep(150); //} - for (int x = 0; x < 16; x++) - { - SendWindData(x, y, map); - Thread.Sleep(35); - } - } - } - catch (Exception e) - { - m_log.Warn("[CLIENT]: ClientView.API.cs: SendLayerData() - Failed with exception " + e.ToString()); - } + // for (int x = 0; x < 16; x++) + //{ + //SendWindData(x, y, map); + //Thread.Sleep(35); + //} + //} + //} + //catch (Exception e) + //{ + // m_log.Warn("[CLIENT]: ClientView.API.cs: SendLayerData() - Failed with exception " + e.ToString()); + // } } /// @@ -1294,16 +1294,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Patch coordinate (x) 0..15 /// Patch coordinate (y) 0..15 /// heightmap - public void SendWindData(int px, int py, float[] map) + public void SendWindData(int p1x, int p1y, int p2x, int p2y, float[] map) { try { - int[] patches = new int[1]; - int patchx, patchy; - patchx = px; - patchy = py; + int[] patches = new int[2]; + int patch1x, patch1y, patch2x, patch2y; + patch1x = p1x; + patch1y = p1y; + patch2x = p2x; + patch2y = p2y; - patches[0] = patchx + 0 + patchy * 16; + + patches[0] = patch1x + 0 + patch1y * 16; + patches[1] = patch2x + 0 + patch2y * 16; LayerDataPacket layerpack = TerrainCompressor.CreateWindPacket(map, patches); layerpack.Header.Zerocoded = true; -- cgit v1.1