diff options
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index b37a1f8..dad7250 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -336,6 +336,7 @@ public sealed class BSPrim : BSPhysObject | |||
336 | } | 336 | } |
337 | } | 337 | } |
338 | } | 338 | } |
339 | /* Disable. Presume whoever is setting displacement is already adjusting position, etc. | ||
339 | // Override to have position displacement immediately update the physical position. | 340 | // Override to have position displacement immediately update the physical position. |
340 | // A feeble attempt to keep the sim and physical positions in sync | 341 | // A feeble attempt to keep the sim and physical positions in sync |
341 | // Must be called at taint time. | 342 | // Must be called at taint time. |
@@ -355,6 +356,7 @@ public sealed class BSPrim : BSPhysObject | |||
355 | }); | 356 | }); |
356 | } | 357 | } |
357 | } | 358 | } |
359 | */ | ||
358 | 360 | ||
359 | // Check that the current position is sane and, if not, modify the position to make it so. | 361 | // Check that the current position is sane and, if not, modify the position to make it so. |
360 | // Check for being below terrain and being out of bounds. | 362 | // Check for being below terrain and being out of bounds. |
@@ -371,11 +373,11 @@ public sealed class BSPrim : BSPhysObject | |||
371 | return ret; | 373 | return ret; |
372 | } | 374 | } |
373 | 375 | ||
374 | float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(_position); | 376 | float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition); |
375 | OMV.Vector3 upForce = OMV.Vector3.Zero; | 377 | OMV.Vector3 upForce = OMV.Vector3.Zero; |
376 | if (RawPosition.Z < terrainHeight) | 378 | if (RawPosition.Z < terrainHeight) |
377 | { | 379 | { |
378 | DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, _position, terrainHeight); | 380 | DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, RawPosition, terrainHeight); |
379 | float targetHeight = terrainHeight + (Size.Z / 2f); | 381 | float targetHeight = terrainHeight + (Size.Z / 2f); |
380 | // If the object is below ground it just has to be moved up because pushing will | 382 | // If the object is below ground it just has to be moved up because pushing will |
381 | // not get it through the terrain | 383 | // not get it through the terrain |
@@ -1637,7 +1639,11 @@ public sealed class BSPrim : BSPhysObject | |||
1637 | // entprop.RotationalVelocity = OMV.Vector3.Zero; | 1639 | // entprop.RotationalVelocity = OMV.Vector3.Zero; |
1638 | } | 1640 | } |
1639 | 1641 | ||
1642 | DetailLog("{0},BSPrim.UpdateProperties,entry,entprop={1}", LocalID, entprop); // DEBUG DEBUG | ||
1643 | |||
1640 | // Assign directly to the local variables so the normal set actions do not happen | 1644 | // Assign directly to the local variables so the normal set actions do not happen |
1645 | |||
1646 | // Undo any center-of-mass displacement that might have been done. | ||
1641 | entprop.Position -= PositionDisplacement; | 1647 | entprop.Position -= PositionDisplacement; |
1642 | _position = entprop.Position; | 1648 | _position = entprop.Position; |
1643 | _orientation = entprop.Rotation; | 1649 | _orientation = entprop.Rotation; |
@@ -1645,6 +1651,8 @@ public sealed class BSPrim : BSPhysObject | |||
1645 | _acceleration = entprop.Acceleration; | 1651 | _acceleration = entprop.Acceleration; |
1646 | _rotationalVelocity = entprop.RotationalVelocity; | 1652 | _rotationalVelocity = entprop.RotationalVelocity; |
1647 | 1653 | ||
1654 | DetailLog("{0},BSPrim.UpdateProperties,afterAssign,entprop={1}", LocalID, entprop); // DEBUG DEBUG | ||
1655 | |||
1648 | // The sanity check can change the velocity and/or position. | 1656 | // The sanity check can change the velocity and/or position. |
1649 | if (IsPhysical && PositionSanityCheck(true)) | 1657 | if (IsPhysical && PositionSanityCheck(true)) |
1650 | { | 1658 | { |
@@ -1653,8 +1661,7 @@ public sealed class BSPrim : BSPhysObject | |||
1653 | } | 1661 | } |
1654 | 1662 | ||
1655 | OMV.Vector3 direction = OMV.Vector3.UnitX * _orientation; // DEBUG DEBUG DEBUG | 1663 | OMV.Vector3 direction = OMV.Vector3.UnitX * _orientation; // DEBUG DEBUG DEBUG |
1656 | DetailLog("{0},BSPrim.UpdateProperties,call,pos={1},orient={2},dir={3},vel={4},rotVel={5}", | 1664 | DetailLog("{0},BSPrim.UpdateProperties,call,entProp={1},dir={2}", LocalID, entprop, direction); |
1657 | LocalID, _position, _orientation, direction, _velocity, _rotationalVelocity); | ||
1658 | 1665 | ||
1659 | // remember the current and last set values | 1666 | // remember the current and last set values |
1660 | LastEntityProperties = CurrentEntityProperties; | 1667 | LastEntityProperties = CurrentEntityProperties; |