From 109136c074fd4ce68f4c5615c05665a81fa7c7d9 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Thu, 28 Nov 2013 08:22:41 -0800 Subject: varregion: add ITerrainChannel.GetHeightAtXYZ() for eventual mesh terrain. Implementation of same in TerrainChannel.cs. Check for bounds in TerrainChannel[x,y] to prevent array access exceptions. --- OpenSim/Region/Framework/Scenes/TerrainChannel.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Framework/Scenes/TerrainChannel.cs') diff --git a/OpenSim/Region/Framework/Scenes/TerrainChannel.cs b/OpenSim/Region/Framework/Scenes/TerrainChannel.cs index a5b42ff..b4b1823 100644 --- a/OpenSim/Region/Framework/Scenes/TerrainChannel.cs +++ b/OpenSim/Region/Framework/Scenes/TerrainChannel.cs @@ -156,7 +156,11 @@ namespace OpenSim.Region.Framework.Scenes // ITerrainChannel.this[x,y] public double this[int x, int y] { - get { return (double)m_terrainData[x, y]; } + get { + if (x < 0 || x >= Width || y < 0 || y >= Height) + return 0; + return (double)m_terrainData[x, y]; + } set { if (Double.IsNaN(value) || Double.IsInfinity(value)) @@ -166,6 +170,14 @@ namespace OpenSim.Region.Framework.Scenes } } + // ITerrainChannel.GetHieghtAtXYZ(x, y, z) + public float GetHeightAtXYZ(float x, float y, float z) + { + if (x < 0 || x >= Width || y < 0 || y >= Height) + return 0; + return m_terrainData[(int)x, (int)y]; + } + // ITerrainChannel.Tainted() public bool Tainted(int x, int y) { -- cgit v1.1