aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
diff options
context:
space:
mode:
authorRobert Adams2013-06-30 13:39:58 -0700
committerRobert Adams2013-06-30 17:07:49 -0700
commit23516717e48095011c1c06d64785ef7d91754ff2 (patch)
tree706e3cb958e94d0989d2546ef07a463dc7858ff9 /OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
parentBulletSim: add inTaintTime parameter to collision cache clear function. (diff)
downloadopensim-SC_OLD-23516717e48095011c1c06d64785ef7d91754ff2.zip
opensim-SC_OLD-23516717e48095011c1c06d64785ef7d91754ff2.tar.gz
opensim-SC_OLD-23516717e48095011c1c06d64785ef7d91754ff2.tar.bz2
opensim-SC_OLD-23516717e48095011c1c06d64785ef7d91754ff2.tar.xz
BulletSim: a better version of llMoveToTarget that doesn't go crazy.
There is still some overshoot but mostly fixes Mantis 6693. Fix bug where moveToTarget was active for non-physical objects and while selected. Fix bug where move target was not getting changed if the script changed the target during a move.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs19
1 files changed, 18 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 95bdc7b..90f74df 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -450,6 +450,9 @@ public class BSPrim : BSPhysObject
450 Gravity = ComputeGravity(Buoyancy); 450 Gravity = ComputeGravity(Buoyancy);
451 PhysScene.PE.SetGravity(PhysBody, Gravity); 451 PhysScene.PE.SetGravity(PhysBody, Gravity);
452 452
453 OMV.Vector3 currentScale = PhysScene.PE.GetLocalScaling(PhysShape.physShapeInfo); // DEBUG DEBUG
454 DetailLog("{0},BSPrim.UpdateMassProperties,currentScale{1},shape={2}", LocalID, currentScale, PhysShape.physShapeInfo); // DEBUG DEBUG
455
453 Inertia = PhysScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass); 456 Inertia = PhysScene.PE.CalculateLocalInertia(PhysShape.physShapeInfo, physMass);
454 PhysScene.PE.SetMassProps(PhysBody, physMass, Inertia); 457 PhysScene.PE.SetMassProps(PhysBody, physMass, Inertia);
455 PhysScene.PE.UpdateInertiaTensor(PhysBody); 458 PhysScene.PE.UpdateInertiaTensor(PhysBody);
@@ -1040,6 +1043,20 @@ public class BSPrim : BSPhysObject
1040 } 1043 }
1041 } 1044 }
1042 1045
1046 public override OMV.Vector3 PIDTarget
1047 {
1048 set
1049 {
1050 base.PIDTarget = value;
1051 BSActor actor;
1052 if (PhysicalActors.TryGetActor(MoveToTargetActorName, out actor))
1053 {
1054 // if the actor exists, tell it to refresh its values.
1055 actor.Refresh();
1056 }
1057
1058 }
1059 }
1043 // Used for llSetHoverHeight and maybe vehicle height 1060 // Used for llSetHoverHeight and maybe vehicle height
1044 // Hover Height will override MoveTo target's Z 1061 // Hover Height will override MoveTo target's Z
1045 public override bool PIDHoverActive { 1062 public override bool PIDHoverActive {
@@ -1063,7 +1080,7 @@ public class BSPrim : BSPhysObject
1063 1080
1064 // Applying a force just adds this to the total force on the object. 1081 // Applying a force just adds this to the total force on the object.
1065 // This added force will only last the next simulation tick. 1082 // This added force will only last the next simulation tick.
1066 public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) { 1083 public override void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
1067 // for an object, doesn't matter if force is a pushforce or not 1084 // for an object, doesn't matter if force is a pushforce or not
1068 if (IsPhysicallyActive) 1085 if (IsPhysicallyActive)
1069 { 1086 {