diff options
author | UbitUmarov | 2012-02-15 20:33:31 +0000 |
---|---|---|
committer | UbitUmarov | 2012-02-15 20:33:31 +0000 |
commit | f6c35cf26f759407268a46689d94e246a82b4286 (patch) | |
tree | e07bf46c4366705428d55d2ad79c3937390e66be /OpenSim/Region/Physics/ChOdePlugin/OdePlugin.cs | |
parent | don't freeze with a sitted avatar in a border without other sim. Still messy :( (diff) | |
download | opensim-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.cs | 20 |
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 |