aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs13
1 files changed, 9 insertions, 4 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 22afdc9..b63523c 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -989,10 +989,10 @@ public sealed class BSPrim : BSPhysObject
989 } 989 }
990 set { 990 set {
991 _rotationalVelocity = value; 991 _rotationalVelocity = value;
992 Util.ClampV(_rotationalVelocity, BSParam.MaxAngularVelocity);
992 // m_log.DebugFormat("{0}: RotationalVelocity={1}", LogHeader, _rotationalVelocity); 993 // m_log.DebugFormat("{0}: RotationalVelocity={1}", LogHeader, _rotationalVelocity);
993 PhysicsScene.TaintedObject("BSPrim.setRotationalVelocity", delegate() 994 PhysicsScene.TaintedObject("BSPrim.setRotationalVelocity", delegate()
994 { 995 {
995 DetailLog("{0},BSPrim.SetRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
996 ForceRotationalVelocity = _rotationalVelocity; 996 ForceRotationalVelocity = _rotationalVelocity;
997 }); 997 });
998 } 998 }
@@ -1005,6 +1005,7 @@ public sealed class BSPrim : BSPhysObject
1005 _rotationalVelocity = value; 1005 _rotationalVelocity = value;
1006 if (PhysBody.HasPhysicalBody) 1006 if (PhysBody.HasPhysicalBody)
1007 { 1007 {
1008 DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
1008 PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity); 1009 PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
1009 ActivateIfPhysical(false); 1010 ActivateIfPhysical(false);
1010 } 1011 }
@@ -1193,10 +1194,14 @@ public sealed class BSPrim : BSPhysObject
1193 public override float APIDDamping { set { return; } } 1194 public override float APIDDamping { set { return; } }
1194 1195
1195 public override void AddForce(OMV.Vector3 force, bool pushforce) { 1196 public override void AddForce(OMV.Vector3 force, bool pushforce) {
1197 // Per documentation, max force is limited.
1198 OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
1199
1196 // Since this force is being applied in only one step, make this a force per second. 1200 // Since this force is being applied in only one step, make this a force per second.
1197 OMV.Vector3 addForce = force / PhysicsScene.LastTimeStep; 1201 addForce /= PhysicsScene.LastTimeStep;
1198 AddForce(addForce, pushforce, false); 1202 AddForce(addForce, pushforce, false /* inTaintTime */);
1199 } 1203 }
1204
1200 // Applying a force just adds this to the total force on the object. 1205 // Applying a force just adds this to the total force on the object.
1201 // This added force will only last the next simulation tick. 1206 // This added force will only last the next simulation tick.
1202 public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) { 1207 public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
@@ -1205,9 +1210,9 @@ public sealed class BSPrim : BSPhysObject
1205 { 1210 {
1206 if (force.IsFinite()) 1211 if (force.IsFinite())
1207 { 1212 {
1208 OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
1209 // DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce); 1213 // DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce);
1210 1214
1215 OMV.Vector3 addForce = force;
1211 PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate() 1216 PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
1212 { 1217 {
1213 // Bullet adds this central force to the total force for this tick 1218 // Bullet adds this central force to the total force for this tick