aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
diff options
context:
space:
mode:
authorRobert Adams2013-02-12 15:45:44 -0800
committerRobert Adams2013-02-12 15:52:10 -0800
commit0194a3d890b95c8a29fcdf130c378e3a8a629c77 (patch)
treedf1d9993266ab8460809fb8c901e7f08d7b3bdba /OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
parentBulletSim: More work on center-of-mass. Remove linksetinfo and rely on simula... (diff)
downloadopensim-SC_OLD-0194a3d890b95c8a29fcdf130c378e3a8a629c77.zip
opensim-SC_OLD-0194a3d890b95c8a29fcdf130c378e3a8a629c77.tar.gz
opensim-SC_OLD-0194a3d890b95c8a29fcdf130c378e3a8a629c77.tar.bz2
opensim-SC_OLD-0194a3d890b95c8a29fcdf130c378e3a8a629c77.tar.xz
BulletSim: fix density since the simulator/viewer track density in a
funny unit that is 100 times real density (default 1000). Fix avatar drifting slowly when stationary flying. Fix for physical prims getting corrected for being under terrain when it was just its geometric center that was below terrain. Add PreUpdatePropertyAction allowing plugable modifiction of phys parameters returned from Bullet. Fix an exception setting GravityMultiplier on initialization. Update DLLs and SOs for good measure (no functional change).
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs')
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs19
1 files changed, 12 insertions, 7 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index 1f66b56..4ce58c7 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -399,7 +399,7 @@ public sealed class BSLinksetCompound : BSLinkset
399 // Constraint linksets are rebuilt every time. 399 // Constraint linksets are rebuilt every time.
400 // Note that this works for rebuilding just the root after a linkset is taken apart. 400 // Note that this works for rebuilding just the root after a linkset is taken apart.
401 // Called at taint time!! 401 // Called at taint time!!
402 private bool disableCOM = false; // DEBUG DEBUG: disable until we get this debugged 402 private bool disableCOM = true; // DEBUG DEBUG: disable until we get this debugged
403 private void RecomputeLinksetCompound() 403 private void RecomputeLinksetCompound()
404 { 404 {
405 try 405 try
@@ -430,10 +430,10 @@ public sealed class BSLinksetCompound : BSLinkset
430 LinksetRoot.ForcePosition = LinksetRoot.RawPosition; 430 LinksetRoot.ForcePosition = LinksetRoot.RawPosition;
431 431
432 // Update the local transform for the root child shape so it is offset from the <0,0,0> which is COM 432 // Update the local transform for the root child shape so it is offset from the <0,0,0> which is COM
433 PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, 0, 433 PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, 0 /* childIndex */,
434 -centerDisplacement, 434 -centerDisplacement,
435 LinksetRoot.RawOrientation, 435 OMV.Quaternion.Identity, // LinksetRoot.RawOrientation,
436 false /* shouldRecalculateLocalAabb */); 436 false /* shouldRecalculateLocalAabb (is done later after linkset built) */);
437 437
438 DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,COM,com={1},rootPos={2},centerDisp={3}", 438 DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,COM,com={1},rootPos={2},centerDisp={3}",
439 LinksetRoot.LocalID, centerOfMassW, LinksetRoot.RawPosition, centerDisplacement); 439 LinksetRoot.LocalID, centerOfMassW, LinksetRoot.RawPosition, centerDisplacement);
@@ -463,7 +463,6 @@ public sealed class BSLinksetCompound : BSLinkset
463 // Use call to CreateGeomNonSpecial(). 463 // Use call to CreateGeomNonSpecial().
464 BulletShape saveShape = cPrim.PhysShape; 464 BulletShape saveShape = cPrim.PhysShape;
465 cPrim.PhysShape.Clear(); // Don't let the create free the child's shape 465 cPrim.PhysShape.Clear(); // Don't let the create free the child's shape
466 // PhysicsScene.Shapes.CreateGeomNonSpecial(true, cPrim, null);
467 PhysicsScene.Shapes.CreateGeomMeshOrHull(cPrim, null); 466 PhysicsScene.Shapes.CreateGeomMeshOrHull(cPrim, null);
468 BulletShape newShape = cPrim.PhysShape; 467 BulletShape newShape = cPrim.PhysShape;
469 cPrim.PhysShape = saveShape; 468 cPrim.PhysShape = saveShape;
@@ -471,6 +470,8 @@ public sealed class BSLinksetCompound : BSLinkset
471 OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement; 470 OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
472 OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation; 471 OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
473 PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, newShape, offsetPos, offsetRot); 472 PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, newShape, offsetPos, offsetRot);
473 DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addNative,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
474 LinksetRoot.LocalID, memberIndex, LinksetRoot.PhysShape, newShape, offsetPos, offsetRot);
474 } 475 }
475 else 476 else
476 { 477 {
@@ -484,7 +485,10 @@ public sealed class BSLinksetCompound : BSLinkset
484 } 485 }
485 OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement; 486 OMV.Vector3 offsetPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation - centerDisplacement;
486 OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation; 487 OMV.Quaternion offsetRot = cPrim.RawOrientation * invRootOrientation;
487 PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot); 488 PhysicsScene.PE.AddChildShapeToCompoundShape(LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot);
489 DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addNonNative,indx={1},rShape={2},cShape={3},offPos={4},offRot={5}",
490 LinksetRoot.LocalID, memberIndex, LinksetRoot.PhysShape, cPrim.PhysShape, offsetPos, offsetRot);
491
488 } 492 }
489 memberIndex++; 493 memberIndex++;
490 } 494 }
@@ -503,6 +507,7 @@ public sealed class BSLinksetCompound : BSLinkset
503 Rebuilding = false; 507 Rebuilding = false;
504 } 508 }
505 509
510 // See that the Aabb surrounds the new shape
506 PhysicsScene.PE.RecalculateCompoundShapeLocalAabb(LinksetRoot.PhysShape); 511 PhysicsScene.PE.RecalculateCompoundShapeLocalAabb(LinksetRoot.PhysShape);
507 } 512 }
508} 513}