BulletSim: fix crash caused by the creation of a linkset child that is under the terrain. Users can sure find some interesting corner conditions.

0.7.5-pf-bulletsim
Robert Adams 2012-12-11 14:27:09 -08:00
parent d4e0e98c00
commit a082ce9da7
1 changed files with 4 additions and 4 deletions

View File

@ -332,12 +332,12 @@ public sealed class BSPrim : BSPhysObject
float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(_position);
OMV.Vector3 upForce = OMV.Vector3.Zero;
if (Position.Z < terrainHeight)
if (RawPosition.Z < terrainHeight)
{
DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, _position, terrainHeight);
float targetHeight = terrainHeight + (Size.Z / 2f);
// Upforce proportional to the distance away from the terrain. Correct the error in 1 sec.
upForce.Z = (terrainHeight - Position.Z) * 1f;
upForce.Z = (terrainHeight - RawPosition.Z) * 1f;
ret = true;
}
@ -345,10 +345,10 @@ public sealed class BSPrim : BSPhysObject
{
float waterHeight = PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(_position);
// TODO: a floating motor so object will bob in the water
if (Math.Abs(Position.Z - waterHeight) > 0.1f)
if (Math.Abs(RawPosition.Z - waterHeight) > 0.1f)
{
// Upforce proportional to the distance away from the water. Correct the error in 1 sec.
upForce.Z = (waterHeight - Position.Z) * 1f;
upForce.Z = (waterHeight - RawPosition.Z) * 1f;
ret = true;
}
}