diff options
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index de9b196..817cc22 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -227,7 +227,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
227 | 227 | ||
228 | public int bodyFramesAutoDisable = 20; | 228 | public int bodyFramesAutoDisable = 20; |
229 | 229 | ||
230 | private float[] _heightmap; | 230 | |
231 | 231 | ||
232 | private float[] _watermap; | 232 | private float[] _watermap; |
233 | private bool m_filterCollisions = true; | 233 | private bool m_filterCollisions = true; |
@@ -351,11 +351,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
351 | #endif | 351 | #endif |
352 | } | 352 | } |
353 | 353 | ||
354 | // zero out a heightmap array float array (single dimension [flattened])) | 354 | |
355 | if ((int)Constants.RegionSize == 256) | ||
356 | _heightmap = new float[514*514]; | ||
357 | else | ||
358 | _heightmap = new float[(((int)WorldExtents.Y + 2) * ((int)WorldExtents.X + 2))]; | ||
359 | _watermap = new float[258 * 258]; | 355 | _watermap = new float[258 * 258]; |
360 | 356 | ||
361 | // Zero out the prim spaces array (we split our space into smaller spaces so | 357 | // Zero out the prim spaces array (we split our space into smaller spaces so |
@@ -3334,6 +3330,15 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
3334 | // this._heightmap[i] = (double)heightMap[i]; | 3330 | // this._heightmap[i] = (double)heightMap[i]; |
3335 | // dbm (danx0r) -- creating a buffer zone of one extra sample all around | 3331 | // dbm (danx0r) -- creating a buffer zone of one extra sample all around |
3336 | //_origheightmap = heightMap; | 3332 | //_origheightmap = heightMap; |
3333 | |||
3334 | float[] _heightmap; | ||
3335 | |||
3336 | // zero out a heightmap array float array (single dimension [flattened])) | ||
3337 | //if ((int)Constants.RegionSize == 256) | ||
3338 | // _heightmap = new float[514 * 514]; | ||
3339 | //else | ||
3340 | |||
3341 | _heightmap = new float[(((int)Constants.RegionSize + 2) * ((int)Constants.RegionSize + 2))]; | ||
3337 | 3342 | ||
3338 | uint heightmapWidth = Constants.RegionSize + 1; | 3343 | uint heightmapWidth = Constants.RegionSize + 1; |
3339 | uint heightmapHeight = Constants.RegionSize + 1; | 3344 | uint heightmapHeight = Constants.RegionSize + 1; |
@@ -3342,19 +3347,19 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
3342 | 3347 | ||
3343 | uint heightmapHeightSamples; | 3348 | uint heightmapHeightSamples; |
3344 | 3349 | ||
3345 | if (((int)Constants.RegionSize) == 256) | 3350 | //if (((int)Constants.RegionSize) == 256) |
3346 | { | 3351 | //{ |
3347 | heightmapWidthSamples = 2 * (uint)Constants.RegionSize + 2; | 3352 | // heightmapWidthSamples = 2 * (uint)Constants.RegionSize + 2; |
3348 | heightmapHeightSamples = 2 * (uint)Constants.RegionSize + 2; | 3353 | // heightmapHeightSamples = 2 * (uint)Constants.RegionSize + 2; |
3349 | heightmapWidth++; | 3354 | // heightmapWidth++; |
3350 | heightmapHeight++; | 3355 | // heightmapHeight++; |
3351 | } | 3356 | //} |
3352 | else | 3357 | //else |
3353 | { | 3358 | //{ |
3354 | 3359 | ||
3355 | heightmapWidthSamples = (uint)Constants.RegionSize + 1; | 3360 | heightmapWidthSamples = (uint)Constants.RegionSize + 1; |
3356 | heightmapHeightSamples = (uint)Constants.RegionSize + 1; | 3361 | heightmapHeightSamples = (uint)Constants.RegionSize + 1; |
3357 | } | 3362 | //} |
3358 | 3363 | ||
3359 | const float scale = 1.0f; | 3364 | const float scale = 1.0f; |
3360 | const float offset = 0.0f; | 3365 | const float offset = 0.0f; |
@@ -3363,12 +3368,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
3363 | 3368 | ||
3364 | int regionsize = (int) Constants.RegionSize; | 3369 | int regionsize = (int) Constants.RegionSize; |
3365 | //Double resolution | 3370 | //Double resolution |
3366 | if (((int)Constants.RegionSize) == 256) | 3371 | //if (((int)Constants.RegionSize) == 256) |
3367 | heightMap = ResizeTerrain512Interpolation(heightMap); | 3372 | // heightMap = ResizeTerrain512Interpolation(heightMap); |
3368 | 3373 | ||
3369 | 3374 | ||
3370 | if (((int)Constants.RegionSize) == 256 && (int)Constants.RegionSize == 256) | 3375 | // if (((int)Constants.RegionSize) == 256 && (int)Constants.RegionSize == 256) |
3371 | regionsize = 512; | 3376 | // regionsize = 512; |
3372 | 3377 | ||
3373 | float hfmin = 2000; | 3378 | float hfmin = 2000; |
3374 | float hfmax = -2000; | 3379 | float hfmax = -2000; |
@@ -3431,14 +3436,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
3431 | 3436 | ||
3432 | d.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle); | 3437 | d.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle); |
3433 | d.GeomSetRotation(GroundGeom, ref R); | 3438 | d.GeomSetRotation(GroundGeom, ref R); |
3434 | d.GeomSetPosition(GroundGeom, pOffset.X + ((int)Constants.RegionSize * 0.5f), (pOffset.Y + (int)Constants.RegionSize * 0.5f), 0); | 3439 | d.GeomSetPosition(GroundGeom, pOffset.X + ((int)Constants.RegionSize * 0.5f), pOffset.Y + ((int)Constants.RegionSize * 0.5f), 0); |
3435 | IntPtr testGround = IntPtr.Zero; | 3440 | IntPtr testGround = IntPtr.Zero; |
3436 | if (RegionTerrain.TryGetValue(pOffset, out testGround)) | 3441 | if (RegionTerrain.TryGetValue(pOffset, out testGround)) |
3437 | { | 3442 | { |
3438 | RegionTerrain.Remove(pOffset); | 3443 | RegionTerrain.Remove(pOffset); |
3439 | } | 3444 | } |
3440 | RegionTerrain.Add(pOffset, GroundGeom, GroundGeom); | 3445 | RegionTerrain.Add(pOffset, GroundGeom, GroundGeom); |
3441 | TerrainHeightFieldHeights.Add(GroundGeom,heightMap); | 3446 | TerrainHeightFieldHeights.Add(GroundGeom,_heightmap); |
3442 | 3447 | ||
3443 | } | 3448 | } |
3444 | } | 3449 | } |