diff options
author | Robert Adams | 2012-09-07 15:46:14 -0700 |
---|---|---|
committer | Robert Adams | 2012-09-07 16:05:28 -0700 |
commit | 126eae71009001c5455e4896cf12317422bbac51 (patch) | |
tree | 7ceb0c01d5fb352707de447227a308bfe8715c39 | |
parent | BulletSim: Add some comments (gasp) and log messages. (diff) | |
download | opensim-SC_OLD-126eae71009001c5455e4896cf12317422bbac51.zip opensim-SC_OLD-126eae71009001c5455e4896cf12317422bbac51.tar.gz opensim-SC_OLD-126eae71009001c5455e4896cf12317422bbac51.tar.bz2 opensim-SC_OLD-126eae71009001c5455e4896cf12317422bbac51.tar.xz |
BulletSim: Add Bullet body and shape to BSPhysObject and rename
'Body' to 'BSBody' for disambiguation when reading code.
Complete the API2 interface so nearly all methods on bullet
classes are available to the managed code. The efficient
single call simulation step is kept in place while all
other creation/destruction/parameterization can be done
in the managed code.
6 files changed, 505 insertions, 62 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index dc2b595..fa22c78 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -73,7 +73,8 @@ public class BSCharacter : BSPhysObject | |||
73 | private bool _kinematic; | 73 | private bool _kinematic; |
74 | private float _buoyancy; | 74 | private float _buoyancy; |
75 | 75 | ||
76 | public override BulletBody Body { get; set; } | 76 | public override BulletBody BSBody { get; set; } |
77 | public override BulletShape BSShape { get; set; } | ||
77 | public override BSLinkset Linkset { get; set; } | 78 | public override BSLinkset Linkset { get; set; } |
78 | 79 | ||
79 | private int _subscribedEventsMs = 0; | 80 | private int _subscribedEventsMs = 0; |
@@ -129,9 +130,9 @@ public class BSCharacter : BSPhysObject | |||
129 | // Set the buoyancy for flying. This will be refactored when all the settings happen in C# | 130 | // Set the buoyancy for flying. This will be refactored when all the settings happen in C# |
130 | BulletSimAPI.SetObjectBuoyancy(Scene.WorldID, LocalID, _buoyancy); | 131 | BulletSimAPI.SetObjectBuoyancy(Scene.WorldID, LocalID, _buoyancy); |
131 | 132 | ||
132 | Body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(Scene.World.Ptr, LocalID)); | 133 | BSBody = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(Scene.World.Ptr, LocalID)); |
133 | // avatars get all collisions no matter what (makes walking on ground and such work) | 134 | // avatars get all collisions no matter what (makes walking on ground and such work) |
134 | BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 135 | BulletSimAPI.AddToCollisionFlags2(BSBody.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
135 | }); | 136 | }); |
136 | 137 | ||
137 | return; | 138 | return; |
@@ -441,7 +442,7 @@ public class BSCharacter : BSPhysObject | |||
441 | Scene.TaintedObject("BSCharacter.AddForce", delegate() | 442 | Scene.TaintedObject("BSCharacter.AddForce", delegate() |
442 | { | 443 | { |
443 | DetailLog("{0},BSCharacter.setAddForce,taint,addedForce={1}", LocalID, _force); | 444 | DetailLog("{0},BSCharacter.setAddForce,taint,addedForce={1}", LocalID, _force); |
444 | BulletSimAPI.AddObjectForce2(Body.Ptr, _force); | 445 | BulletSimAPI.SetObjectForce2(BSBody.Ptr, _force); |
445 | }); | 446 | }); |
446 | } | 447 | } |
447 | else | 448 | else |
@@ -466,7 +467,7 @@ public class BSCharacter : BSPhysObject | |||
466 | 467 | ||
467 | Scene.TaintedObject("BSCharacter.SubscribeEvents", delegate() | 468 | Scene.TaintedObject("BSCharacter.SubscribeEvents", delegate() |
468 | { | 469 | { |
469 | BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 470 | BulletSimAPI.AddToCollisionFlags2(BSBody.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
470 | }); | 471 | }); |
471 | } | 472 | } |
472 | } | 473 | } |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs index 3111258..5f6601d 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs | |||
@@ -233,7 +233,7 @@ public class BSLinkset | |||
233 | foreach (BSPhysObject child in m_children) | 233 | foreach (BSPhysObject child in m_children) |
234 | { | 234 | { |
235 | BSConstraint constrain; | 235 | BSConstraint constrain; |
236 | if (m_physicsScene.Constraints.TryGetConstraint(LinksetRoot.Body, child.Body, out constrain)) | 236 | if (m_physicsScene.Constraints.TryGetConstraint(LinksetRoot.BSBody, child.BSBody, out constrain)) |
237 | { | 237 | { |
238 | // DetailLog("{0},BSLinkset.RecomputeLinksetConstraintVariables,taint,child={1},mass={2},A={3},B={4}", | 238 | // DetailLog("{0},BSLinkset.RecomputeLinksetConstraintVariables,taint,child={1},mass={2},A={3},B={4}", |
239 | // LinksetRoot.LocalID, child.LocalID, linksetMass, constrain.Body1.ID, constrain.Body2.ID); | 239 | // LinksetRoot.LocalID, child.LocalID, linksetMass, constrain.Body1.ID, constrain.Body2.ID); |
@@ -327,7 +327,7 @@ public class BSLinkset | |||
327 | DetailLog("{0},PhysicallyLinkAChildToRoot,taint,root={1},child={2},rLoc={3},cLoc={4},midLoc={5}", | 327 | DetailLog("{0},PhysicallyLinkAChildToRoot,taint,root={1},child={2},rLoc={3},cLoc={4},midLoc={5}", |
328 | rootPrim.LocalID, rootPrim.LocalID, childPrim.LocalID, rootPrim.Position, childPrim.Position, midPoint); | 328 | rootPrim.LocalID, rootPrim.LocalID, childPrim.LocalID, rootPrim.Position, childPrim.Position, midPoint); |
329 | BS6DofConstraint constrain = new BS6DofConstraint( | 329 | BS6DofConstraint constrain = new BS6DofConstraint( |
330 | m_physicsScene.World, rootPrim.Body, childPrim.Body, | 330 | m_physicsScene.World, rootPrim.BSBody, childPrim.BSBody, |
331 | midPoint, | 331 | midPoint, |
332 | true, | 332 | true, |
333 | true | 333 | true |
@@ -388,10 +388,10 @@ public class BSLinkset | |||
388 | DetailLog("{0},PhysicallyUnlinkAChildFromRoot,taint,root={1},child={2}", rootPrim.LocalID, rootPrim.LocalID, childPrim.LocalID); | 388 | DetailLog("{0},PhysicallyUnlinkAChildFromRoot,taint,root={1},child={2}", rootPrim.LocalID, rootPrim.LocalID, childPrim.LocalID); |
389 | 389 | ||
390 | // Find the constraint for this link and get rid of it from the overall collection and from my list | 390 | // Find the constraint for this link and get rid of it from the overall collection and from my list |
391 | m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.Body, childPrim.Body); | 391 | m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.BSBody, childPrim.BSBody); |
392 | 392 | ||
393 | // Make the child refresh its location | 393 | // Make the child refresh its location |
394 | BulletSimAPI.PushUpdate2(childPrim.Body.Ptr); | 394 | BulletSimAPI.PushUpdate2(childPrim.BSBody.Ptr); |
395 | } | 395 | } |
396 | 396 | ||
397 | // Remove linkage between myself and any possible children I might have | 397 | // Remove linkage between myself and any possible children I might have |
@@ -400,7 +400,7 @@ public class BSLinkset | |||
400 | { | 400 | { |
401 | DetailLog("{0},PhysicallyUnlinkAllChildren,taint", rootPrim.LocalID); | 401 | DetailLog("{0},PhysicallyUnlinkAllChildren,taint", rootPrim.LocalID); |
402 | 402 | ||
403 | m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.Body); | 403 | m_physicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.BSBody); |
404 | } | 404 | } |
405 | 405 | ||
406 | // Invoke the detailed logger and output something if it's enabled. | 406 | // Invoke the detailed logger and output something if it's enabled. |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs index ef463ca..e411fcb 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | |||
@@ -48,7 +48,11 @@ public abstract class BSPhysObject : PhysicsActor | |||
48 | // Return the object mass without calculating it or side effects | 48 | // Return the object mass without calculating it or side effects |
49 | public abstract float MassRaw { get; } | 49 | public abstract float MassRaw { get; } |
50 | 50 | ||
51 | public abstract BulletBody Body { get; set; } | 51 | // Reference to the physical body (btCollisionObject) of this object |
52 | public abstract BulletBody BSBody { get; set; } | ||
53 | // Reference to the physical shape (btCollisionShape) of this object | ||
54 | public abstract BulletShape BSShape { get; set; } | ||
55 | |||
52 | public abstract void ZeroMotion(); | 56 | public abstract void ZeroMotion(); |
53 | 57 | ||
54 | public virtual void StepVehicle(float timeStep) { } | 58 | public virtual void StepVehicle(float timeStep) { } |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 01f231b..6d0af63 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -96,7 +96,8 @@ public sealed class BSPrim : BSPhysObject | |||
96 | long _collidingGroundStep; | 96 | long _collidingGroundStep; |
97 | CollisionFlags m_currentCollisionFlags = 0; | 97 | CollisionFlags m_currentCollisionFlags = 0; |
98 | 98 | ||
99 | public override BulletBody Body { get; set; } | 99 | public override BulletBody BSBody { get; set; } |
100 | public override BulletShape BSShape { get; set; } | ||
100 | 101 | ||
101 | private BSDynamics _vehicle; | 102 | private BSDynamics _vehicle; |
102 | 103 | ||
@@ -144,8 +145,9 @@ public sealed class BSPrim : BSPhysObject | |||
144 | // Get the pointer to the physical body for this object. | 145 | // Get the pointer to the physical body for this object. |
145 | // At the moment, we're still letting BulletSim manage the creation and destruction | 146 | // At the moment, we're still letting BulletSim manage the creation and destruction |
146 | // of the object. Someday we'll move that into the C# code. | 147 | // of the object. Someday we'll move that into the C# code. |
147 | Body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); | 148 | BSBody = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); |
148 | m_currentCollisionFlags = BulletSimAPI.GetCollisionFlags2(Body.Ptr); | 149 | BSShape = new BulletShape(BulletSimAPI.GetCollisionShape2(BSBody.Ptr)); |
150 | m_currentCollisionFlags = BulletSimAPI.GetCollisionFlags2(BSBody.Ptr); | ||
149 | }); | 151 | }); |
150 | } | 152 | } |
151 | 153 | ||
@@ -261,10 +263,10 @@ public sealed class BSPrim : BSPhysObject | |||
261 | _rotationalVelocity = OMV.Vector3.Zero; | 263 | _rotationalVelocity = OMV.Vector3.Zero; |
262 | 264 | ||
263 | // Zero some other properties directly into the physics engine | 265 | // Zero some other properties directly into the physics engine |
264 | BulletSimAPI.SetVelocity2(Body.Ptr, OMV.Vector3.Zero); | 266 | BulletSimAPI.SetLinearVelocity2(BSBody.Ptr, OMV.Vector3.Zero); |
265 | BulletSimAPI.SetAngularVelocity2(Body.Ptr, OMV.Vector3.Zero); | 267 | BulletSimAPI.SetAngularVelocity2(BSBody.Ptr, OMV.Vector3.Zero); |
266 | BulletSimAPI.SetInterpolation2(Body.Ptr, OMV.Vector3.Zero, OMV.Vector3.Zero); | 268 | BulletSimAPI.SetInterpolationVelocity2(BSBody.Ptr, OMV.Vector3.Zero, OMV.Vector3.Zero); |
267 | BulletSimAPI.ClearForces2(Body.Ptr); | 269 | BulletSimAPI.ClearForces2(BSBody.Ptr); |
268 | } | 270 | } |
269 | 271 | ||
270 | public override void LockAngularMotion(OMV.Vector3 axis) | 272 | public override void LockAngularMotion(OMV.Vector3 axis) |
@@ -327,7 +329,7 @@ public sealed class BSPrim : BSPhysObject | |||
327 | { | 329 | { |
328 | DetailLog("{0},BSPrim.setForce,taint,force={1}", LocalID, _force); | 330 | DetailLog("{0},BSPrim.setForce,taint,force={1}", LocalID, _force); |
329 | // BulletSimAPI.SetObjectForce(_scene.WorldID, _localID, _force); | 331 | // BulletSimAPI.SetObjectForce(_scene.WorldID, _localID, _force); |
330 | BulletSimAPI.SetObjectForce2(Body.Ptr, _force); | 332 | BulletSimAPI.SetObjectForce2(BSBody.Ptr, _force); |
331 | }); | 333 | }); |
332 | } | 334 | } |
333 | } | 335 | } |
@@ -472,10 +474,11 @@ public sealed class BSPrim : BSPhysObject | |||
472 | 474 | ||
473 | // Make gravity work if the object is physical and not selected | 475 | // Make gravity work if the object is physical and not selected |
474 | // No locking here because only called when it is safe | 476 | // No locking here because only called when it is safe |
475 | // There are three flags we're interested in: | 477 | // There are four flags we're interested in: |
476 | // IsStatic: Object does not move, otherwise the object has mass and moves | 478 | // IsStatic: Object does not move, otherwise the object has mass and moves |
477 | // isSolid: other objects bounce off of this object | 479 | // isSolid: other objects bounce off of this object |
478 | // collisionEvents: whether this object returns collision events | 480 | // isVolumeDetect: other objects pass through but can generate collisions |
481 | // collisionEvents: whether this object returns collision events | ||
479 | private void SetObjectDynamic() | 482 | private void SetObjectDynamic() |
480 | { | 483 | { |
481 | // If it's becoming dynamic, it will need hullness | 484 | // If it's becoming dynamic, it will need hullness |
@@ -485,14 +488,68 @@ public sealed class BSPrim : BSPhysObject | |||
485 | float mass = IsStatic ? 0f : _mass; | 488 | float mass = IsStatic ? 0f : _mass; |
486 | 489 | ||
487 | BulletSimAPI.SetObjectProperties(_scene.WorldID, LocalID, IsStatic, IsSolid, SubscribedEvents(), mass); | 490 | BulletSimAPI.SetObjectProperties(_scene.WorldID, LocalID, IsStatic, IsSolid, SubscribedEvents(), mass); |
488 | m_currentCollisionFlags = BulletSimAPI.GetCollisionFlags2(Body.Ptr); | 491 | /* |
492 | BulletSimAPI.RemoveObjectFromWorld2(Scene.World.Ptr, BSBody.Ptr); | ||
493 | |||
494 | // Set up the object physicalness (static or dynamic) | ||
495 | MakeDynamic(); | ||
496 | |||
497 | // Make solid or not and arrange for collisions, etc | ||
498 | MakeSolid(); | ||
489 | 499 | ||
490 | // recompute any linkset parameters | 500 | m_currentCollisionFlags = BulletSimAPI.GetCollisionFlags2(BSBody.Ptr); |
501 | |||
502 | BulletSimAPI.AddObjectToWorld2(Scene.World.Ptr, BSBody.Ptr); | ||
503 | */ | ||
504 | |||
505 | // Recompute any linkset parameters. | ||
506 | // When going from non-physical to physical, this re-enables the constraints that | ||
507 | // had been automatically disabled when the mass was set to zero. | ||
491 | Linkset.Refresh(this); | 508 | Linkset.Refresh(this); |
492 | 509 | ||
493 | DetailLog("{0},BSPrim.SetObjectDynamic,taint,static={1},solid={2},mass={3}, cf={4}", LocalID, IsStatic, IsSolid, mass, m_currentCollisionFlags); | 510 | DetailLog("{0},BSPrim.SetObjectDynamic,taint,static={1},solid={2},mass={3}, cf={4}", LocalID, IsStatic, IsSolid, mass, m_currentCollisionFlags); |
494 | } | 511 | } |
495 | 512 | ||
513 | // "Making dynamic" means changing to and from static. | ||
514 | // When static, gravity does not effect the object and it is fixed in space. | ||
515 | // When dynamic, the object can fall and be pushed by others. | ||
516 | // This is independent of its 'solidness' which controls what passes through | ||
517 | // this object and what interacts with it. | ||
518 | private void MakeDynamic() | ||
519 | { | ||
520 | if (IsStatic) | ||
521 | { | ||
522 | // Become a Bullet 'static' object type | ||
523 | BulletSimAPI.AddToCollisionFlags2(BSBody.Ptr, CollisionFlags.CF_STATIC_OBJECT); | ||
524 | // Stop all movement | ||
525 | BulletSimAPI.ClearAllForces2(BSBody.Ptr); | ||
526 | // Mass is zero which disables a bunch of physics stuff in Bullet | ||
527 | BulletSimAPI.SetMassProps2(BSBody.Ptr, 0f, OMV.Vector3.Zero); | ||
528 | // There is no inertia in a static object | ||
529 | BulletSimAPI.UpdateInertiaTensor2(BSBody.Ptr); | ||
530 | // The activation state is 'sleeping' so Bullet will not try to act on it | ||
531 | BulletSimAPI.ForceActivationState2(BSBody.Ptr, ActivationState.ISLAND_SLEEPING); | ||
532 | } | ||
533 | else | ||
534 | { | ||
535 | // Not a Bullet static object | ||
536 | BulletSimAPI.RemoveFromCollisionFlags2(BSBody.Ptr, CollisionFlags.CF_STATIC_OBJECT); | ||
537 | // A dynamic object has mass | ||
538 | BulletSimAPI.SetMassProps2(BSBody.Ptr, _mass, OMV.Vector3.Zero); | ||
539 | // The shape is interesting and has mass and a center of gravity | ||
540 | IntPtr collisionShapePtr = BulletSimAPI.GetCollisionShape2(BSBody.Ptr); | ||
541 | BulletSimAPI.CalculateLocalInertia2(collisionShapePtr, _mass, OMV.Vector3.Zero); | ||
542 | // Inertia is based on our new mass | ||
543 | BulletSimAPI.UpdateInertiaTensor2(BSBody.Ptr); | ||
544 | // Force activation of the object so Bullet will act on it. | ||
545 | BulletSimAPI.Activate2(BSBody.Ptr, true); | ||
546 | } | ||
547 | } | ||
548 | |||
549 | private void MakeSolid() | ||
550 | { | ||
551 | } | ||
552 | |||
496 | // prims don't fly | 553 | // prims don't fly |
497 | public override bool Flying { | 554 | public override bool Flying { |
498 | get { return _flying; } | 555 | get { return _flying; } |
@@ -615,7 +672,7 @@ public sealed class BSPrim : BSPhysObject | |||
615 | } | 672 | } |
616 | else | 673 | else |
617 | { | 674 | { |
618 | m_log.WarnFormat("{0}: Got a NaN force applied to a Character", LogHeader); | 675 | m_log.WarnFormat("{0}: Got a NaN force applied to a prim. LocalID={1}", LogHeader, LocalID); |
619 | return; | 676 | return; |
620 | } | 677 | } |
621 | _scene.TaintedObject("BSPrim.AddForce", delegate() | 678 | _scene.TaintedObject("BSPrim.AddForce", delegate() |
@@ -630,7 +687,8 @@ public sealed class BSPrim : BSPhysObject | |||
630 | m_accumulatedForces.Clear(); | 687 | m_accumulatedForces.Clear(); |
631 | } | 688 | } |
632 | DetailLog("{0},BSPrim.AddObjectForce,taint,force={1}", LocalID, _force); | 689 | DetailLog("{0},BSPrim.AddObjectForce,taint,force={1}", LocalID, _force); |
633 | BulletSimAPI.AddObjectForce2(Body.Ptr, fSum); | 690 | // For unknown reason, "ApplyCentralForce" is really additive. |
691 | BulletSimAPI.ApplyCentralForce2(BSBody.Ptr, fSum); | ||
634 | }); | 692 | }); |
635 | } | 693 | } |
636 | 694 | ||
@@ -650,7 +708,7 @@ public sealed class BSPrim : BSPhysObject | |||
650 | 708 | ||
651 | Scene.TaintedObject("BSPrim.SubscribeEvents", delegate() | 709 | Scene.TaintedObject("BSPrim.SubscribeEvents", delegate() |
652 | { | 710 | { |
653 | m_currentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 711 | m_currentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(BSBody.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
654 | }); | 712 | }); |
655 | } | 713 | } |
656 | } | 714 | } |
@@ -658,7 +716,7 @@ public sealed class BSPrim : BSPhysObject | |||
658 | _subscribedEventsMs = 0; | 716 | _subscribedEventsMs = 0; |
659 | Scene.TaintedObject("BSPrim.UnSubscribeEvents", delegate() | 717 | Scene.TaintedObject("BSPrim.UnSubscribeEvents", delegate() |
660 | { | 718 | { |
661 | m_currentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 719 | m_currentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(BSBody.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
662 | }); | 720 | }); |
663 | } | 721 | } |
664 | public override bool SubscribedEvents() { | 722 | public override bool SubscribedEvents() { |
@@ -1243,7 +1301,7 @@ public sealed class BSPrim : BSPhysObject | |||
1243 | bool ret = BulletSimAPI.CreateObject(_scene.WorldID, shape); | 1301 | bool ret = BulletSimAPI.CreateObject(_scene.WorldID, shape); |
1244 | 1302 | ||
1245 | // the CreateObject() may have recreated the rigid body. Make sure we have the latest. | 1303 | // the CreateObject() may have recreated the rigid body. Make sure we have the latest. |
1246 | Body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); | 1304 | BSBody = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); |
1247 | 1305 | ||
1248 | return ret; | 1306 | return ret; |
1249 | } | 1307 | } |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs index 4285073..47d7199 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs | |||
@@ -403,8 +403,8 @@ public class BSTerrainManager | |||
403 | { | 403 | { |
404 | float regionX = tX - offsetX; | 404 | float regionX = tX - offsetX; |
405 | float regionY = tY - offsetY; | 405 | float regionY = tY - offsetY; |
406 | if (regionX > mapInfo.sizeX) regionX = 0; | 406 | if (regionX >= mapInfo.sizeX || regionX < 0f) regionX = 0; |
407 | if (regionY > mapInfo.sizeY) regionY = 0; | 407 | if (regionY >= mapInfo.sizeY || regionY < 0f) regionY = 0; |
408 | int mapIndex = (int)regionY * (int)mapInfo.sizeY + (int)regionX; | 408 | int mapIndex = (int)regionY * (int)mapInfo.sizeY + (int)regionX; |
409 | ret = mapInfo.heightMap[mapIndex]; | 409 | ret = mapInfo.heightMap[mapIndex]; |
410 | m_terrainModified = false; | 410 | m_terrainModified = false; |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs index d28c14b..e579cf2 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs | |||
@@ -218,7 +218,20 @@ public struct ConfigurationParameters | |||
218 | public const float numericFalse = 0f; | 218 | public const float numericFalse = 0f; |
219 | } | 219 | } |
220 | 220 | ||
221 | // Values used by Bullet and BulletSim to control collisions | 221 | |
222 | // The states a bullet collision object can have | ||
223 | public enum ActivationState : uint | ||
224 | { | ||
225 | ACTIVE_TAG = 1, | ||
226 | ISLAND_SLEEPING, | ||
227 | WANTS_DEACTIVATION, | ||
228 | DISABLE_DEACTIVATION, | ||
229 | DISABLE_SIMULATION | ||
230 | } | ||
231 | |||
232 | // Values used by Bullet and BulletSim to control object properties. | ||
233 | // Bullet's "CollisionFlags" has more to do with operations on the | ||
234 | // object (if collisions happen, if gravity effects it, ...). | ||
222 | public enum CollisionFlags : uint | 235 | public enum CollisionFlags : uint |
223 | { | 236 | { |
224 | CF_STATIC_OBJECT = 1 << 0, | 237 | CF_STATIC_OBJECT = 1 << 0, |
@@ -233,8 +246,75 @@ public enum CollisionFlags : uint | |||
233 | BS_VOLUME_DETECT_OBJECT = 1 << 11, | 246 | BS_VOLUME_DETECT_OBJECT = 1 << 11, |
234 | BS_PHANTOM_OBJECT = 1 << 12, | 247 | BS_PHANTOM_OBJECT = 1 << 12, |
235 | BS_PHYSICAL_OBJECT = 1 << 13, | 248 | BS_PHYSICAL_OBJECT = 1 << 13, |
249 | BS_TERRAIN_OBJECT = 1 << 14, | ||
250 | BS_NONE = 0, | ||
251 | BS_ALL = 0xFFFFFFFF | ||
252 | }; | ||
253 | |||
254 | // Values for collisions groups and masks | ||
255 | public enum CollisionFilterGroups : uint | ||
256 | { | ||
257 | NoneFilter = 0, | ||
258 | DefaultFilter = 1 << 0, | ||
259 | StaticFilter = 1 << 1, | ||
260 | KinematicFilter = 1 << 2, | ||
261 | DebrisFilter = 1 << 3, | ||
262 | SensorTrigger = 1 << 4, | ||
263 | CharacterFilter = 1 << 5, | ||
264 | AllFilter = 0xFFFFFFFF, | ||
265 | // Filter groups defined by BulletSim | ||
266 | GroundPlaneFilter = 1 << 10, | ||
267 | TerrainFilter = 1 << 11, | ||
268 | RaycastFilter = 1 << 12, | ||
269 | SolidFilter = 1 << 13, | ||
236 | }; | 270 | }; |
237 | 271 | ||
272 | // For each type, we first clear and then set the collision flags | ||
273 | public enum ClearCollisionFlag : uint | ||
274 | { | ||
275 | Terrain = CollisionFlags.BS_ALL, | ||
276 | Phantom = CollisionFlags.BS_ALL, | ||
277 | VolumeDetect = CollisionFlags.BS_ALL, | ||
278 | PhysicalObject = CollisionFlags.BS_ALL, | ||
279 | StaticObject = CollisionFlags.BS_ALL | ||
280 | } | ||
281 | |||
282 | public enum SetCollisionFlag : uint | ||
283 | { | ||
284 | Terrain = CollisionFlags.CF_STATIC_OBJECT | ||
285 | | CollisionFlags.BS_TERRAIN_OBJECT, | ||
286 | Phantom = CollisionFlags.CF_STATIC_OBJECT | ||
287 | | CollisionFlags.BS_PHANTOM_OBJECT | ||
288 | | CollisionFlags.CF_NO_CONTACT_RESPONSE, | ||
289 | VolumeDetect = CollisionFlags.CF_STATIC_OBJECT | ||
290 | | CollisionFlags.BS_VOLUME_DETECT_OBJECT | ||
291 | | CollisionFlags.CF_NO_CONTACT_RESPONSE, | ||
292 | PhysicalObject = CollisionFlags.BS_PHYSICAL_OBJECT, | ||
293 | StaticObject = CollisionFlags.CF_STATIC_OBJECT, | ||
294 | } | ||
295 | |||
296 | // Collision filters used for different types of objects | ||
297 | public enum SetCollisionFilter : uint | ||
298 | { | ||
299 | Terrain = CollisionFilterGroups.AllFilter, | ||
300 | Phantom = CollisionFilterGroups.GroundPlaneFilter | ||
301 | | CollisionFilterGroups.TerrainFilter, | ||
302 | VolumeDetect = CollisionFilterGroups.AllFilter, | ||
303 | PhysicalObject = CollisionFilterGroups.AllFilter, | ||
304 | StaticObject = CollisionFilterGroups.AllFilter, | ||
305 | } | ||
306 | |||
307 | // Collision masks used for different types of objects | ||
308 | public enum SetCollisionMask : uint | ||
309 | { | ||
310 | Terrain = CollisionFilterGroups.AllFilter, | ||
311 | Phantom = CollisionFilterGroups.GroundPlaneFilter | ||
312 | | CollisionFilterGroups.TerrainFilter, | ||
313 | VolumeDetect = CollisionFilterGroups.AllFilter, | ||
314 | PhysicalObject = CollisionFilterGroups.AllFilter, | ||
315 | StaticObject = CollisionFilterGroups.AllFilter | ||
316 | } | ||
317 | |||
238 | // CFM controls the 'hardness' of the constraint. 0=fixed, 0..1=violatable. Default=0 | 318 | // CFM controls the 'hardness' of the constraint. 0=fixed, 0..1=violatable. Default=0 |
239 | // ERP controls amount of correction per tick. Usable range=0.1..0.8. Default=0.2. | 319 | // ERP controls amount of correction per tick. Usable range=0.1..0.8. Default=0.2. |
240 | public enum ConstraintParams : int | 320 | public enum ConstraintParams : int |
@@ -347,6 +427,7 @@ public static extern bool SetObjectVelocity(uint worldID, uint id, Vector3 veloc | |||
347 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 427 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
348 | public static extern bool SetObjectAngularVelocity(uint worldID, uint id, Vector3 angularVelocity); | 428 | public static extern bool SetObjectAngularVelocity(uint worldID, uint id, Vector3 angularVelocity); |
349 | 429 | ||
430 | // Set the current force acting on the object | ||
350 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 431 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
351 | public static extern bool SetObjectForce(uint worldID, uint id, Vector3 force); | 432 | public static extern bool SetObjectForce(uint worldID, uint id, Vector3 force); |
352 | 433 | ||
@@ -403,6 +484,7 @@ public static extern void SetDebugLogCallback(DebugLogCallback callback); | |||
403 | // The names have a "2" tacked on. This will be removed as the C# code gets rebuilt | 484 | // The names have a "2" tacked on. This will be removed as the C# code gets rebuilt |
404 | // and the old code is removed. | 485 | // and the old code is removed. |
405 | 486 | ||
487 | // Functions use while converting from API1 to API2. Can be removed when totally converted. | ||
406 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 488 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
407 | public static extern IntPtr GetSimHandle2(uint worldID); | 489 | public static extern IntPtr GetSimHandle2(uint worldID); |
408 | 490 | ||
@@ -413,6 +495,7 @@ public static extern IntPtr GetBodyHandleWorldID2(uint worldID, uint id); | |||
413 | public static extern IntPtr GetBodyHandle2(IntPtr world, uint id); | 495 | public static extern IntPtr GetBodyHandle2(IntPtr world, uint id); |
414 | 496 | ||
415 | // =============================================================================== | 497 | // =============================================================================== |
498 | // Initialization and simulation | ||
416 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 499 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
417 | public static extern IntPtr Initialize2(Vector3 maxPosition, IntPtr parms, | 500 | public static extern IntPtr Initialize2(Vector3 maxPosition, IntPtr parms, |
418 | int maxCollisions, IntPtr collisionArray, | 501 | int maxCollisions, IntPtr collisionArray, |
@@ -438,6 +521,7 @@ public static extern int PhysicsStep2(IntPtr world, float timeStep, int maxSubSt | |||
438 | public static extern bool PushUpdate2(IntPtr obj); | 521 | public static extern bool PushUpdate2(IntPtr obj); |
439 | 522 | ||
440 | // ===================================================================================== | 523 | // ===================================================================================== |
524 | // Mesh, hull, shape and body creation helper routines | ||
441 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 525 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
442 | public static extern IntPtr CreateMeshShape2(IntPtr world, | 526 | public static extern IntPtr CreateMeshShape2(IntPtr world, |
443 | int indicesCount, [MarshalAs(UnmanagedType.LPArray)] int[] indices, | 527 | int indicesCount, [MarshalAs(UnmanagedType.LPArray)] int[] indices, |
@@ -467,15 +551,19 @@ public static extern IntPtr CreateBodyFromShapeAndInfo2(IntPtr sim, IntPtr shape | |||
467 | public static extern IntPtr CreateBodyWithDefaultMotionState2(IntPtr shape, Vector3 pos, Quaternion rot); | 551 | public static extern IntPtr CreateBodyWithDefaultMotionState2(IntPtr shape, Vector3 pos, Quaternion rot); |
468 | 552 | ||
469 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 553 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
470 | public static extern bool SetBodyShape2(IntPtr sim, IntPtr obj, IntPtr shape); | ||
471 | |||
472 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
473 | public static extern IntPtr AllocateBodyInfo2(IntPtr obj); | 554 | public static extern IntPtr AllocateBodyInfo2(IntPtr obj); |
474 | 555 | ||
475 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 556 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
476 | public static extern void ReleaseBodyInfo2(IntPtr obj); | 557 | public static extern void ReleaseBodyInfo2(IntPtr obj); |
477 | 558 | ||
559 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
560 | public static extern void DestroyObject2(IntPtr sim, IntPtr obj); | ||
561 | |||
478 | // ===================================================================================== | 562 | // ===================================================================================== |
563 | // Terrain creation and helper routines | ||
564 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
565 | public static extern void DumpMapInfo(IntPtr sim, IntPtr manInfo); | ||
566 | |||
479 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 567 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
480 | public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords, | 568 | public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords, |
481 | [MarshalAs(UnmanagedType.LPArray)] float[] heightMap, float collisionMargin); | 569 | [MarshalAs(UnmanagedType.LPArray)] float[] heightMap, float collisionMargin); |
@@ -494,6 +582,7 @@ public static extern IntPtr CreateGroundPlaneShape2(uint id, float height, float | |||
494 | public static extern IntPtr CreateTerrainShape2(IntPtr mapInfo); | 582 | public static extern IntPtr CreateTerrainShape2(IntPtr mapInfo); |
495 | 583 | ||
496 | // ===================================================================================== | 584 | // ===================================================================================== |
585 | // Constraint creation and helper routines | ||
497 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 586 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
498 | public static extern IntPtr Create6DofConstraint2(IntPtr world, IntPtr obj1, IntPtr obj2, | 587 | public static extern IntPtr Create6DofConstraint2(IntPtr world, IntPtr obj1, IntPtr obj2, |
499 | Vector3 frame1loc, Quaternion frame1rot, | 588 | Vector3 frame1loc, Quaternion frame1rot, |
@@ -546,69 +635,145 @@ public static extern bool SetConstraintParam2(IntPtr constrain, ConstraintParams | |||
546 | public static extern bool DestroyConstraint2(IntPtr world, IntPtr constrain); | 635 | public static extern bool DestroyConstraint2(IntPtr world, IntPtr constrain); |
547 | 636 | ||
548 | // ===================================================================================== | 637 | // ===================================================================================== |
638 | // btCollisionWorld entries | ||
639 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
640 | public static extern void UpdateSingleAabb2(IntPtr world, IntPtr obj); | ||
641 | |||
642 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
643 | public static extern void UpdateAabbs2(IntPtr world); | ||
644 | |||
645 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
646 | public static extern bool GetForceUpdateAllAabbs2(IntPtr world); | ||
647 | |||
648 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
649 | public static extern void SetForceUpdateAllAabbs2(IntPtr world, bool force); | ||
650 | |||
651 | // ===================================================================================== | ||
652 | // btDynamicsWorld entries | ||
549 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 653 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
550 | public static extern bool AddObjectToWorld2(IntPtr world, IntPtr obj); | 654 | public static extern bool AddObjectToWorld2(IntPtr world, IntPtr obj); |
551 | 655 | ||
552 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 656 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
553 | public static extern bool RemoveObjectFromWorld2(IntPtr world, IntPtr obj); | 657 | public static extern bool RemoveObjectFromWorld2(IntPtr world, IntPtr obj); |
554 | 658 | ||
659 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
660 | public static extern bool AddConstraintToWorld2(IntPtr world, IntPtr constrain, bool disableCollisionsBetweenLinkedObjects); | ||
661 | |||
662 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
663 | public static extern bool RemoveConstraintFromWorld2(IntPtr world, IntPtr constrain); | ||
555 | // ===================================================================================== | 664 | // ===================================================================================== |
665 | // btCollisionObject entries | ||
666 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
667 | public static extern Vector3 GetAnisotripicFriction2(IntPtr constrain); | ||
668 | |||
669 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
670 | public static extern Vector3 SetAnisotripicFriction2(IntPtr constrain, Vector3 frict); | ||
671 | |||
672 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
673 | public static extern bool HasAnisotripicFriction2(IntPtr constrain); | ||
674 | |||
675 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
676 | public static extern void SetContactProcessingThreshold2(IntPtr obj, float val); | ||
677 | |||
678 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
679 | public static extern float GetContactProcessingThreshold2(IntPtr obj); | ||
680 | |||
681 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
682 | public static extern bool IsStaticObject2(IntPtr obj); | ||
683 | |||
684 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
685 | public static extern bool IsKinematicObject2(IntPtr obj); | ||
686 | |||
687 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
688 | public static extern bool IsStaticOrKinematicObject2(IntPtr obj); | ||
689 | |||
690 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
691 | public static extern bool HasContactResponse2(IntPtr obj); | ||
692 | |||
693 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
694 | public static extern void SetCollisionShape2(IntPtr sim, IntPtr obj, IntPtr shape); | ||
695 | |||
696 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
697 | public static extern IntPtr GetCollisionShape2(IntPtr obj); | ||
698 | |||
699 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
700 | public static extern int GetActivationState2(IntPtr obj); | ||
701 | |||
702 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
703 | public static extern void SetActivationState2(IntPtr obj, int state); | ||
704 | |||
705 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
706 | public static extern void SetDeactivationTime2(IntPtr obj, float dtime); | ||
707 | |||
708 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
709 | public static extern float GetDeactivationTime2(IntPtr obj); | ||
710 | |||
711 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
712 | public static extern void ForceActivationState2(IntPtr obj, ActivationState state); | ||
713 | |||
556 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 714 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
557 | public static extern void Activate2(IntPtr obj, bool forceActivation); | 715 | public static extern void Activate2(IntPtr obj, bool forceActivation); |
558 | 716 | ||
559 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 717 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
560 | public static extern Vector3 GetPosition2(IntPtr obj); | 718 | public static extern bool IsActive2(IntPtr obj); |
561 | 719 | ||
562 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 720 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
563 | public static extern Quaternion GetOrientation2(IntPtr obj); | 721 | public static extern void SetRestitution2(IntPtr obj, float val); |
564 | 722 | ||
565 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 723 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
566 | public static extern bool SetTranslation2(IntPtr obj, Vector3 position, Quaternion rotation); | 724 | public static extern float GetRestitution2(IntPtr obj); |
567 | 725 | ||
568 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 726 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
569 | public static extern bool SetVelocity2(IntPtr obj, Vector3 velocity); | 727 | public static extern void SetFriction2(IntPtr obj, float val); |
570 | 728 | ||
571 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 729 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
572 | public static extern bool SetAngularVelocity2(IntPtr obj, Vector3 angularVelocity); | 730 | public static extern float GetFriction2(IntPtr obj); |
573 | 731 | ||
732 | /* Haven't defined the type 'Transform' | ||
574 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 733 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
575 | public static extern bool SetObjectForce2(IntPtr obj, Vector3 force); | 734 | public static extern Transform GetWorldTransform2(IntPtr obj); |
576 | 735 | ||
577 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 736 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
578 | public static extern bool AddObjectForce2(IntPtr obj, Vector3 force); | 737 | public static extern void setWorldTransform2(IntPtr obj, Transform trans); |
738 | */ | ||
579 | 739 | ||
580 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 740 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
581 | public static extern bool SetCcdMotionThreshold2(IntPtr obj, float val); | 741 | public static extern Vector3 GetPosition2(IntPtr obj); |
582 | 742 | ||
583 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 743 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
584 | public static extern bool SetCcdSweepSphereRadius2(IntPtr obj, float val); | 744 | public static extern Quaternion GetOrientation2(IntPtr obj); |
585 | 745 | ||
586 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 746 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
587 | public static extern bool SetDamping2(IntPtr obj, float lin_damping, float ang_damping); | 747 | public static extern void SetTranslation2(IntPtr obj, Vector3 position, Quaternion rotation); |
588 | 748 | ||
589 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 749 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
590 | public static extern bool SetDeactivationTime2(IntPtr obj, float val); | 750 | public static extern IntPtr GetBroadphaseHandle2(IntPtr obj); |
591 | 751 | ||
592 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 752 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
593 | public static extern bool SetSleepingThresholds2(IntPtr obj, float lin_threshold, float ang_threshold); | 753 | public static extern void SetBroadphaseHandle2(IntPtr obj, IntPtr handle); |
594 | 754 | ||
755 | /* | ||
595 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 756 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
596 | public static extern bool SetContactProcessingThreshold2(IntPtr obj, float val); | 757 | public static extern Transform GetInterpolationWorldTransform2(IntPtr obj); |
597 | 758 | ||
598 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 759 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
599 | public static extern bool SetFriction2(IntPtr obj, float val); | 760 | public static extern void SetInterpolationWorldTransform2(IntPtr obj, Transform trans); |
761 | */ | ||
600 | 762 | ||
601 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 763 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
602 | public static extern bool SetHitFraction2(IntPtr obj, float val); | 764 | public static extern void SetInterpolationLinearVelocity2(IntPtr obj, Vector3 vel); |
603 | 765 | ||
604 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 766 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
605 | public static extern bool SetRestitution2(IntPtr obj, float val); | 767 | public static extern void SetInterpolationAngularVelocity2(IntPtr obj, Vector3 vel); |
606 | 768 | ||
607 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 769 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
608 | public static extern bool SetLinearVelocity2(IntPtr obj, Vector3 val); | 770 | public static extern void SetInterpolationVelocity2(IntPtr obj, Vector3 linearVel, Vector3 angularVel); |
609 | 771 | ||
610 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 772 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
611 | public static extern bool SetInterpolation2(IntPtr obj, Vector3 lin, Vector3 ang); | 773 | public static extern float GetHitFraction2(IntPtr obj); |
774 | |||
775 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
776 | public static extern void SetHitFraction2(IntPtr obj, float val); | ||
612 | 777 | ||
613 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 778 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
614 | public static extern CollisionFlags GetCollisionFlags2(IntPtr obj); | 779 | public static extern CollisionFlags GetCollisionFlags2(IntPtr obj); |
@@ -623,30 +788,245 @@ public static extern CollisionFlags AddToCollisionFlags2(IntPtr obj, CollisionFl | |||
623 | public static extern CollisionFlags RemoveFromCollisionFlags2(IntPtr obj, CollisionFlags flags); | 788 | public static extern CollisionFlags RemoveFromCollisionFlags2(IntPtr obj, CollisionFlags flags); |
624 | 789 | ||
625 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 790 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
626 | public static extern bool SetMassProps2(IntPtr obj, float mass, Vector3 inertia); | 791 | public static extern float GetCcdMotionThreshold2(IntPtr obj); |
792 | |||
793 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
794 | public static extern void SetCcdMotionThreshold2(IntPtr obj, float val); | ||
795 | |||
796 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
797 | public static extern float GetCcdSweepSphereRadius2(IntPtr obj); | ||
798 | |||
799 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
800 | public static extern void SetCcdSweepSphereRadius2(IntPtr obj, float val); | ||
801 | |||
802 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
803 | public static extern IntPtr GetUserPointer2(IntPtr obj); | ||
804 | |||
805 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
806 | public static extern void SetUserPointer2(IntPtr obj, IntPtr val); | ||
807 | |||
808 | // ===================================================================================== | ||
809 | // btRigidBody entries | ||
810 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
811 | public static extern void ApplyGravity2(IntPtr obj); | ||
812 | |||
813 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
814 | public static extern void SetGravity2(IntPtr obj, Vector3 val); | ||
815 | |||
816 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
817 | public static extern Vector3 GetGravity2(IntPtr obj); | ||
818 | |||
819 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
820 | public static extern void SetDamping2(IntPtr obj, float lin_damping, float ang_damping); | ||
821 | |||
822 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
823 | public static extern float GetLinearDamping2(IntPtr obj); | ||
824 | |||
825 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
826 | public static extern float GetAngularDamping2(IntPtr obj); | ||
827 | |||
828 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
829 | public static extern float GetLinearSleepingThreshold2(IntPtr obj); | ||
830 | |||
831 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
832 | public static extern float GetAngularSleepingThreshold2(IntPtr obj); | ||
833 | |||
834 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
835 | public static extern void ApplyDamping2(IntPtr obj, float timeStep); | ||
836 | |||
837 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
838 | public static extern void SetMassProps2(IntPtr obj, float mass, Vector3 inertia); | ||
627 | 839 | ||
628 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 840 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
629 | public static extern bool UpdateInertiaTensor2(IntPtr obj); | 841 | public static extern Vector3 GetLinearFactor2(IntPtr obj); |
630 | 842 | ||
631 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 843 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
632 | public static extern bool SetGravity2(IntPtr obj, Vector3 val); | 844 | public static extern void SetLinearFactor2(IntPtr obj, Vector3 factor); |
633 | 845 | ||
846 | /* | ||
634 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 847 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
635 | public static extern IntPtr ClearForces2(IntPtr obj); | 848 | public static extern void SetCenterOfMassTransform2(IntPtr obj, Transform trans); |
849 | */ | ||
636 | 850 | ||
637 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 851 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
638 | public static extern IntPtr ClearAllForces2(IntPtr obj); | 852 | public static extern void SetCenterOfMassByPosRot2(IntPtr obj, Vector3 pos, Quaternion rot); |
639 | 853 | ||
854 | // Add a force to the object as if its mass is one. | ||
640 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 855 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
641 | public static extern bool SetMargin2(IntPtr obj, float val); | 856 | public static extern void ApplyCentralForce2(IntPtr obj, Vector3 force); |
642 | 857 | ||
858 | // Set the force being applied to the object as if its mass is one. | ||
643 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 859 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
644 | public static extern bool UpdateSingleAabb2(IntPtr world, IntPtr obj); | 860 | public static extern void SetObjectForce2(IntPtr obj, Vector3 force); |
645 | 861 | ||
646 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 862 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
647 | public static extern bool DestroyObject2(IntPtr world, IntPtr obj); | 863 | public static extern Vector3 GetTotalForce2(IntPtr obj); |
648 | 864 | ||
649 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 865 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
866 | public static extern Vector3 GetTotalTorque2(IntPtr obj); | ||
867 | |||
868 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
869 | public static extern Vector3 GetInvInertiaDiagLocal2(IntPtr obj); | ||
870 | |||
871 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
872 | public static extern void SetInvInertiaDiagLocal2(IntPtr obj, Vector3 inert); | ||
873 | |||
874 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
875 | public static extern void SetSleepingThresholds2(IntPtr obj, float lin_threshold, float ang_threshold); | ||
876 | |||
877 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
878 | public static extern void ApplyTorque2(IntPtr obj, Vector3 torque); | ||
879 | |||
880 | // Apply force at the given point. Will add torque to the object. | ||
881 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
882 | public static extern void ApplyForce2(IntPtr obj, Vector3 force, Vector3 pos); | ||
883 | |||
884 | // Apply impulse to the object. Same as "ApplycentralForce" but force scaled by object's mass. | ||
885 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
886 | public static extern void ApplyCentralImpulse2(IntPtr obj, Vector3 imp); | ||
887 | |||
888 | // Apply impulse to the object's torque. Force is scaled by object's mass. | ||
889 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
890 | public static extern void ApplyTorqueImpulse2(IntPtr obj, Vector3 imp); | ||
891 | |||
892 | // Apply impulse at the point given. For is scaled by object's mass and effects both linear and angular forces. | ||
893 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
894 | public static extern void ApplyImpulse2(IntPtr obj, Vector3 imp, Vector3 pos); | ||
895 | |||
896 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
897 | public static extern void ClearForces2(IntPtr obj); | ||
898 | |||
899 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
900 | public static extern void ClearAllForces2(IntPtr obj); | ||
901 | |||
902 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
903 | public static extern void UpdateInertiaTensor2(IntPtr obj); | ||
904 | |||
905 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
906 | public static extern Vector3 GetCenterOfMassPosition2(IntPtr obj); | ||
907 | |||
908 | /* | ||
909 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
910 | public static extern Transform GetCenterOfMassTransform2(IntPtr obj); | ||
911 | */ | ||
912 | |||
913 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
914 | public static extern Vector3 GetLinearVelocity2(IntPtr obj); | ||
915 | |||
916 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
917 | public static extern Vector3 GetAngularVelocity2(IntPtr obj); | ||
918 | |||
919 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
920 | public static extern void SetLinearVelocity2(IntPtr obj, Vector3 val); | ||
921 | |||
922 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
923 | public static extern void SetAngularVelocity2(IntPtr obj, Vector3 angularVelocity); | ||
924 | |||
925 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
926 | public static extern Vector3 GetVelocityInLocalPoint2(IntPtr obj, Vector3 pos); | ||
927 | |||
928 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
929 | public static extern void Translate2(IntPtr obj, Vector3 trans); | ||
930 | |||
931 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
932 | public static extern void UpdateDeactivation2(IntPtr obj, float timeStep); | ||
933 | |||
934 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
935 | public static extern bool WantsSleeping2(IntPtr obj); | ||
936 | |||
937 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
938 | public static extern void SetAngularFactor2(IntPtr obj, float factor); | ||
939 | |||
940 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
941 | public static extern void SetAngularFactorV2(IntPtr obj, Vector3 factor); | ||
942 | |||
943 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
944 | public static extern Vector3 GetAngularFactor2(IntPtr obj); | ||
945 | |||
946 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
947 | public static extern bool IsInWorld2(IntPtr obj); | ||
948 | |||
949 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
950 | public static extern void AddConstraintRef2(IntPtr obj, IntPtr constrain); | ||
951 | |||
952 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
953 | public static extern void RemoveConstraintRef2(IntPtr obj, IntPtr constrain); | ||
954 | |||
955 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
956 | public static extern IntPtr GetConstraintRef2(IntPtr obj, int index); | ||
957 | |||
958 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
959 | public static extern int GetNumConstraintRefs2(IntPtr obj); | ||
960 | |||
961 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
962 | public static extern Vector3 GetDeltaLinearVelocity2(IntPtr obj); | ||
963 | |||
964 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
965 | public static extern Vector3 GetDeltaAngularVelocity2(IntPtr obj); | ||
966 | |||
967 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
968 | public static extern Vector3 GetPushVelocity2(IntPtr obj); | ||
969 | |||
970 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
971 | public static extern Vector3 GetTurnVelocity2(IntPtr obj); | ||
972 | |||
973 | // ===================================================================================== | ||
974 | // btCollisionShape entries | ||
975 | |||
976 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
977 | public static extern float GetAngularMotionDisc2(IntPtr shape); | ||
978 | |||
979 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
980 | public static extern float GetContactBreakingThreshold2(IntPtr shape, float defaultFactor); | ||
981 | |||
982 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
983 | public static extern bool IsPolyhedral2(IntPtr shape); | ||
984 | |||
985 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
986 | public static extern bool IsConvex2d2(IntPtr shape); | ||
987 | |||
988 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
989 | public static extern bool IsConvex2(IntPtr shape); | ||
990 | |||
991 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
992 | public static extern bool IsNonMoving2(IntPtr shape); | ||
993 | |||
994 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
995 | public static extern bool IsConcave2(IntPtr shape); | ||
996 | |||
997 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
998 | public static extern bool IsCompound2(IntPtr shape); | ||
999 | |||
1000 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1001 | public static extern bool IsSoftBody2(IntPtr shape); | ||
1002 | |||
1003 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1004 | public static extern bool IsInfinite2(IntPtr shape); | ||
1005 | |||
1006 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1007 | public static extern void SetLocalScaling2(IntPtr shape, Vector3 scale); | ||
1008 | |||
1009 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1010 | public static extern Vector3 GetLocalScaling2(IntPtr shape); | ||
1011 | |||
1012 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1013 | public static extern void CalculateLocalInertia2(IntPtr shape, float mass, Vector3 inertia); | ||
1014 | |||
1015 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1016 | public static extern int GetShapeType2(IntPtr shape); | ||
1017 | |||
1018 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1019 | public static extern void SetMargin2(IntPtr shape, float val); | ||
1020 | |||
1021 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1022 | public static extern float GetMargin2(IntPtr shape); | ||
1023 | |||
1024 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
1025 | public static extern void SetCollisionFilterMask(IntPtr shape, uint filter, uint mask); | ||
1026 | |||
1027 | // ===================================================================================== | ||
1028 | // Debugging | ||
1029 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
650 | public static extern void DumpPhysicsStatistics2(IntPtr sim); | 1030 | public static extern void DumpPhysicsStatistics2(IntPtr sim); |
651 | 1031 | ||
652 | } | 1032 | } |