diff options
author | Robert Adams | 2013-11-10 19:52:31 -0800 |
---|---|---|
committer | Robert Adams | 2013-11-10 19:52:31 -0800 |
commit | c12e68e34d6f9340bbd17a2f183fe9859483cc6f (patch) | |
tree | 8fa99677885eb8dde5e352953dbbbb9fbbd2b2c6 | |
parent | Merge branch 'master' into varregion (diff) | |
download | opensim-SC_OLD-c12e68e34d6f9340bbd17a2f183fe9859483cc6f.zip opensim-SC_OLD-c12e68e34d6f9340bbd17a2f183fe9859483cc6f.tar.gz opensim-SC_OLD-c12e68e34d6f9340bbd17a2f183fe9859483cc6f.tar.bz2 opensim-SC_OLD-c12e68e34d6f9340bbd17a2f183fe9859483cc6f.tar.xz |
varregion: fix GetLandObject error return and initialization of square
land object bitmaps. This fixes creation of child presences and the
editing of parcels.
Also lots of commented out debugging messages.
-rw-r--r-- | OpenSim/Framework/TerrainData.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | 26 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 17 |
3 files changed, 37 insertions, 12 deletions
diff --git a/OpenSim/Framework/TerrainData.cs b/OpenSim/Framework/TerrainData.cs index 75446d1..1c52a69 100644 --- a/OpenSim/Framework/TerrainData.cs +++ b/OpenSim/Framework/TerrainData.cs | |||
@@ -112,7 +112,7 @@ namespace OpenSim.Framework | |||
112 | public class HeightmapTerrainData : TerrainData | 112 | public class HeightmapTerrainData : TerrainData |
113 | { | 113 | { |
114 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 114 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
115 | private static string LogHeader = "[TERRAIN DATA]"; | 115 | private static string LogHeader = "[HEIGHTMAP TERRAIN DATA]"; |
116 | 116 | ||
117 | // TerrainData.this[x, y] | 117 | // TerrainData.this[x, y] |
118 | public override float this[int x, int y] | 118 | public override float this[int x, int y] |
@@ -124,7 +124,6 @@ namespace OpenSim.Framework | |||
124 | { | 124 | { |
125 | m_heightmap[x, y] = newVal; | 125 | m_heightmap[x, y] = newVal; |
126 | m_taint[x / Constants.TerrainPatchSize, y / Constants.TerrainPatchSize] = true; | 126 | m_taint[x / Constants.TerrainPatchSize, y / Constants.TerrainPatchSize] = true; |
127 | // m_log.DebugFormat("{0} set[{1},{2}] to {3} ({4})", LogHeader, x, y, value, newVal); | ||
128 | } | 127 | } |
129 | } | 128 | } |
130 | } | 129 | } |
@@ -258,6 +257,7 @@ namespace OpenSim.Framework | |||
258 | 257 | ||
259 | } | 258 | } |
260 | } | 259 | } |
260 | // m_log.DebugFormat("{0} new by doubles. sizeX={1}, sizeY={2}, sizeZ={3}", LogHeader, SizeX, SizeY, SizeZ); | ||
261 | 261 | ||
262 | m_taint = new bool[SizeX / Constants.TerrainPatchSize, SizeY / Constants.TerrainPatchSize]; | 262 | m_taint = new bool[SizeX / Constants.TerrainPatchSize, SizeY / Constants.TerrainPatchSize]; |
263 | ClearTaint(); | 263 | ClearTaint(); |
@@ -272,6 +272,7 @@ namespace OpenSim.Framework | |||
272 | m_compressionFactor = 100.0f; | 272 | m_compressionFactor = 100.0f; |
273 | m_heightmap = new short[SizeX, SizeY]; | 273 | m_heightmap = new short[SizeX, SizeY]; |
274 | m_taint = new bool[SizeX / Constants.TerrainPatchSize, SizeY / Constants.TerrainPatchSize]; | 274 | m_taint = new bool[SizeX / Constants.TerrainPatchSize, SizeY / Constants.TerrainPatchSize]; |
275 | // m_log.DebugFormat("{0} new by dimensions. sizeX={1}, sizeY={2}, sizeZ={3}", LogHeader, SizeX, SizeY, SizeZ); | ||
275 | ClearTaint(); | 276 | ClearTaint(); |
276 | } | 277 | } |
277 | 278 | ||
@@ -282,6 +283,7 @@ namespace OpenSim.Framework | |||
282 | for (int xx = 0; xx < SizeX; xx++) | 283 | for (int xx = 0; xx < SizeX; xx++) |
283 | for (int yy = 0; yy < SizeY; yy++) | 284 | for (int yy = 0; yy < SizeY; yy++) |
284 | m_heightmap[xx, yy] = cmap[ind++]; | 285 | m_heightmap[xx, yy] = cmap[ind++]; |
286 | // m_log.DebugFormat("{0} new by compressed map. sizeX={1}, sizeY={2}, sizeZ={3}", LogHeader, SizeX, SizeY, SizeZ); | ||
285 | } | 287 | } |
286 | 288 | ||
287 | // Create a heighmap from a database blob | 289 | // Create a heighmap from a database blob |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 3f21f85..5b98d97 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -635,14 +635,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
635 | new_land.LandData.LocalID = newLandLocalID; | 635 | new_land.LandData.LocalID = newLandLocalID; |
636 | 636 | ||
637 | bool[,] landBitmap = new_land.GetLandBitmap(); | 637 | bool[,] landBitmap = new_land.GetLandBitmap(); |
638 | m_log.DebugFormat("{0} AddLandObject. new_land.bitmapSize=({1},{2}). bitmap[600/4,600/4]={3}, newLocalID={4}", | 638 | // m_log.DebugFormat("{0} AddLandObject. new_land.bitmapSize=({1},{2}). newLocalID={3}", |
639 | LogHeader, landBitmap.GetLength(0), landBitmap.GetLength(1), landBitmap[600/4, 600/4], newLandLocalID); | 639 | // LogHeader, landBitmap.GetLength(0), landBitmap.GetLength(1), newLandLocalID); |
640 | 640 | ||
641 | if (landBitmap.GetLength(0) != m_landIDList.GetLength(0) || landBitmap.GetLength(1) != m_landIDList.GetLength(1)) | 641 | if (landBitmap.GetLength(0) != m_landIDList.GetLength(0) || landBitmap.GetLength(1) != m_landIDList.GetLength(1)) |
642 | { | 642 | { |
643 | // Going to variable sized regions can cause mismatches | 643 | // Going to variable sized regions can cause mismatches |
644 | m_log.ErrorFormat("{0} AddLandObject. Added land bitmap different size than region ID map. bitmapSize=({1},{2}), landIDSize=({3},{4})", | 644 | m_log.ErrorFormat("{0} AddLandObject. Added land bitmap different size than region ID map. bitmapSize=({1},{2}), landIDSize=({3},{4})", |
645 | LogHeader, landBitmap.GetLength(0), m_landIDList.GetLength(1), landBitmap.GetLength(0), m_landIDList.GetLength(1) ); | 645 | LogHeader, landBitmap.GetLength(0), landBitmap.GetLength(1), m_landIDList.GetLength(0), m_landIDList.GetLength(1) ); |
646 | } | 646 | } |
647 | else | 647 | else |
648 | { | 648 | { |
@@ -769,7 +769,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
769 | /// <returns>Land object at the point supplied</returns> | 769 | /// <returns>Land object at the point supplied</returns> |
770 | public ILandObject GetLandObject(float x_float, float y_float) | 770 | public ILandObject GetLandObject(float x_float, float y_float) |
771 | { | 771 | { |
772 | return GetLandObject((int)x_float, (int)y_float); | 772 | return GetLandObject((int)x_float, (int)y_float, true /* returnNullIfLandObjectNotFound */); |
773 | /* | 773 | /* |
774 | int x; | 774 | int x; |
775 | int y; | 775 | int y; |
@@ -823,18 +823,28 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
823 | */ | 823 | */ |
824 | } | 824 | } |
825 | 825 | ||
826 | // Given a region position, return the parcel land object for that location | 826 | // Public entry. |
827 | // Throws exception if land object is not found | ||
827 | public ILandObject GetLandObject(int x, int y) | 828 | public ILandObject GetLandObject(int x, int y) |
828 | { | 829 | { |
830 | return GetLandObject(x, y, false /* returnNullIfLandObjectNotFound */); | ||
831 | } | ||
832 | |||
833 | // Given a region position, return the parcel land object for that location | ||
834 | private ILandObject GetLandObject(int x, int y, bool returnNullIfLandObjectNotFound) | ||
835 | { | ||
829 | ILandObject ret = null; | 836 | ILandObject ret = null; |
830 | 837 | ||
831 | if (x >= m_scene.RegionInfo.RegionSizeX || y >= m_scene.RegionInfo.RegionSizeY || x < 0 || y < 0) | 838 | if (x >= m_scene.RegionInfo.RegionSizeX || y >= m_scene.RegionInfo.RegionSizeY || x < 0 || y < 0) |
832 | { | 839 | { |
833 | // These exceptions here will cause a lot of complaints from the users specifically because | 840 | // These exceptions here will cause a lot of complaints from the users specifically because |
834 | // they happen every time at border crossings | 841 | // they happen every time at border crossings |
835 | throw new Exception( | 842 | if (returnNullIfLandObjectNotFound) |
836 | String.Format("{0} GetLandObject for non-existant position. Region={1}, pos=<{2},{3}", | 843 | return null; |
837 | LogHeader, m_scene.RegionInfo.RegionName, x, y) | 844 | else |
845 | throw new Exception( | ||
846 | String.Format("{0} GetLandObject for non-existant position. Region={1}, pos=<{2},{3}", | ||
847 | LogHeader, m_scene.RegionInfo.RegionName, x, y) | ||
838 | ); | 848 | ); |
839 | } | 849 | } |
840 | 850 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 0bde877..2a4d8d8 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -102,6 +102,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
102 | } | 102 | } |
103 | } | 103 | } |
104 | 104 | ||
105 | m_log.ErrorFormat("{0} StartPoint. No start point found. bitmapSize=<{1},{2}>", | ||
106 | LogHeader, LandBitmap.GetLength(0), LandBitmap.GetLength(1)); | ||
105 | return new Vector3(-1, -1, -1); | 107 | return new Vector3(-1, -1, -1); |
106 | } | 108 | } |
107 | } | 109 | } |
@@ -121,6 +123,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
121 | } | 123 | } |
122 | } | 124 | } |
123 | 125 | ||
126 | m_log.ErrorFormat("{0} EndPoint. No end point found. bitmapSize=<{1},{2}>", | ||
127 | LogHeader, LandBitmap.GetLength(0), LandBitmap.GetLength(1)); | ||
124 | return new Vector3(-1, -1, -1); | 128 | return new Vector3(-1, -1, -1); |
125 | } | 129 | } |
126 | } | 130 | } |
@@ -757,6 +761,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
757 | public void SetLandBitmap(bool[,] bitmap) | 761 | public void SetLandBitmap(bool[,] bitmap) |
758 | { | 762 | { |
759 | LandBitmap = bitmap; | 763 | LandBitmap = bitmap; |
764 | // m_log.DebugFormat("{0} SetLandBitmap. BitmapSize=<{1},{2}>", LogHeader, LandBitmap.GetLength(0), LandBitmap.GetLength(1)); | ||
760 | ForceUpdateLandInfo(); | 765 | ForceUpdateLandInfo(); |
761 | } | 766 | } |
762 | 767 | ||
@@ -776,10 +781,14 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
776 | 781 | ||
777 | public bool[,] GetSquareLandBitmap(int start_x, int start_y, int end_x, int end_y) | 782 | public bool[,] GetSquareLandBitmap(int start_x, int start_y, int end_x, int end_y) |
778 | { | 783 | { |
779 | bool[,] tempBitmap = new bool[(end_x-start_x)/landUnit,(end_y-start_y)/landUnit]; | 784 | // Empty bitmap for the whole region |
785 | bool[,] tempBitmap = new bool[m_scene.RegionInfo.RegionSizeX / landUnit, m_scene.RegionInfo.RegionSizeY / landUnit]; | ||
780 | tempBitmap.Initialize(); | 786 | tempBitmap.Initialize(); |
781 | 787 | ||
788 | // Fill the bitmap square area specified by state and end | ||
782 | tempBitmap = ModifyLandBitmapSquare(tempBitmap, start_x, start_y, end_x, end_y, true); | 789 | tempBitmap = ModifyLandBitmapSquare(tempBitmap, start_x, start_y, end_x, end_y, true); |
790 | // m_log.DebugFormat("{0} GetSquareLandBitmap. tempBitmapSize=<{1},{2}>", | ||
791 | // LogHeader, tempBitmap.GetLength(0), tempBitmap.GetLength(1)); | ||
783 | return tempBitmap; | 792 | return tempBitmap; |
784 | } | 793 | } |
785 | 794 | ||
@@ -808,6 +817,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
808 | } | 817 | } |
809 | } | 818 | } |
810 | } | 819 | } |
820 | // m_log.DebugFormat("{0} ModifyLandBitmapSquare. startXY=<{1},{2}>, endXY=<{3},{4}>, val={5}, landBitmapSize=<{6},{7}>", | ||
821 | // LogHeader, start_x, start_y, end_x, end_y, set_value, land_bitmap.GetLength(0), land_bitmap.GetLength(1)); | ||
811 | return land_bitmap; | 822 | return land_bitmap; |
812 | } | 823 | } |
813 | 824 | ||
@@ -868,6 +879,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
868 | } | 879 | } |
869 | } | 880 | } |
870 | } | 881 | } |
882 | // m_log.DebugFormat("{0} ConvertLandBitmapToBytes. BitmapSize=<{1},{2}>", | ||
883 | // LogHeader, LandBitmap.GetLength(0), LandBitmap.GetLength(1)); | ||
871 | return tempConvertArr; | 884 | return tempConvertArr; |
872 | } | 885 | } |
873 | 886 | ||
@@ -886,7 +899,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
886 | // and only set the lower area of the larger region. | 899 | // and only set the lower area of the larger region. |
887 | xLen = (int)(Constants.RegionSize / landUnit); | 900 | xLen = (int)(Constants.RegionSize / landUnit); |
888 | } | 901 | } |
889 | m_log.DebugFormat("{0} ConvertBytesToLandBitmap: bitmapLen={1}, xLen={2}", LogHeader, bitmapLen, xLen); | 902 | // m_log.DebugFormat("{0} ConvertBytesToLandBitmap: bitmapLen={1}, xLen={2}", LogHeader, bitmapLen, xLen); |
890 | 903 | ||
891 | int x = 0, y = 0; | 904 | int x = 0, y = 0; |
892 | for (int i = 0; i < bitmapLen; i++) | 905 | for (int i = 0; i < bitmapLen; i++) |