aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs
diff options
context:
space:
mode:
authorUbitUmarov2012-02-15 20:33:31 +0000
committerUbitUmarov2012-02-15 20:33:31 +0000
commitf6c35cf26f759407268a46689d94e246a82b4286 (patch)
treee07bf46c4366705428d55d2ad79c3937390e66be /OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs
parentdon't freeze with a sitted avatar in a border without other sim. Still messy :( (diff)
downloadopensim-SC_OLD-f6c35cf26f759407268a46689d94e246a82b4286.zip
opensim-SC_OLD-f6c35cf26f759407268a46689d94e246a82b4286.tar.gz
opensim-SC_OLD-f6c35cf26f759407268a46689d94e246a82b4286.tar.bz2
opensim-SC_OLD-f6c35cf26f759407268a46689d94e246a82b4286.tar.xz
Now if chode prim.cs detects out of bounds it requests a update and blocks movement and colisions. Base code must do a PhysActor.CrossingFailure() to make it move again inside sim or delete it.
Diffstat (limited to 'OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs')
-rw-r--r--OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs20
1 files changed, 10 insertions, 10 deletions
diff --git a/OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs
index 353db44..cf7c1d7 100644
--- a/OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs
@@ -1536,7 +1536,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1536 List<OdePrim> removeprims = null; 1536 List<OdePrim> removeprims = null;
1537 foreach (OdePrim chr in _activeprims) 1537 foreach (OdePrim chr in _activeprims)
1538 { 1538 {
1539 if (chr.Body != IntPtr.Zero && d.BodyIsEnabled(chr.Body) && (!chr.m_disabled)) 1539 if (chr.Body != IntPtr.Zero && d.BodyIsEnabled(chr.Body) && (!chr.m_disabled) && !chr.m_outofBounds)
1540 { 1540 {
1541 try 1541 try
1542 { 1542 {
@@ -3410,13 +3410,13 @@ namespace OpenSim.Region.Physics.OdePlugin
3410 public void SetTerrain(float[] heightMap, Vector3 pOffset) 3410 public void SetTerrain(float[] heightMap, Vector3 pOffset)
3411 { 3411 {
3412 3412
3413 uint regionsize = (uint) Constants.RegionSize; // visible region size eg. 256(M) 3413 int regionsize = (int) Constants.RegionSize; // visible region size eg. 256(M)
3414 3414
3415 uint heightmapWidth = regionsize + 1; // ODE map size 257 x 257 (Meters) (1 extra 3415 int heightmapWidth = regionsize + 2; // ODE map size 257 x 257 (Meters) (1 extra
3416 uint heightmapHeight = regionsize + 1; 3416 int heightmapHeight = regionsize + 2;
3417 3417
3418 uint heightmapWidthSamples = (uint)regionsize + 2; // Sample file size, 258 x 258 samples 3418 int heightmapWidthSamples = (int)regionsize + 2; // Sample file size, 258 x 258 samples
3419 uint heightmapHeightSamples = (uint)regionsize + 2; 3419 int heightmapHeightSamples = (int)regionsize + 2;
3420 3420
3421 // Array of height samples for ODE 3421 // Array of height samples for ODE
3422 float[] _heightmap; 3422 float[] _heightmap;
@@ -3432,10 +3432,10 @@ namespace OpenSim.Region.Physics.OdePlugin
3432 float hfmax = -2000f; 3432 float hfmax = -2000f;
3433 float minele = 0.0f; // Dont allow -ve heights 3433 float minele = 0.0f; // Dont allow -ve heights
3434 3434
3435 uint x = 0; 3435 int x = 0;
3436 uint y = 0; 3436 int y = 0;
3437 uint xx = 0; 3437 int xx = 0;
3438 uint yy = 0; 3438 int yy = 0;
3439 3439
3440 // load the height samples array from the heightMap 3440 // load the height samples array from the heightMap
3441 for ( x = 0; x < heightmapWidthSamples; x++) // 0 to 257 3441 for ( x = 0; x < heightmapWidthSamples; x++) // 0 to 257