diff options
author | Robert Adams | 2012-08-31 13:32:22 -0700 |
---|---|---|
committer | Robert Adams | 2012-09-07 16:05:11 -0700 |
commit | 76dc29dc379036aa44f1ef78782f7ac94760a80f (patch) | |
tree | a9007f98060ae4ee6dbd9d10cebfc56578c2b437 | |
parent | renaming to markdown file (diff) | |
download | opensim-SC_OLD-76dc29dc379036aa44f1ef78782f7ac94760a80f.zip opensim-SC_OLD-76dc29dc379036aa44f1ef78782f7ac94760a80f.tar.gz opensim-SC_OLD-76dc29dc379036aa44f1ef78782f7ac94760a80f.tar.bz2 opensim-SC_OLD-76dc29dc379036aa44f1ef78782f7ac94760a80f.tar.xz |
BulletSim: Modify collision flag calls to return the current flags.
Track current collision flags in BSPrim.
Add BulletSimAPI calls for saving and restoring rigidBodies using
construction information structure.
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs | 16 |
2 files changed, 18 insertions, 7 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 6bfce5c..6fcd416 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -94,6 +94,7 @@ public sealed class BSPrim : BSPhysObject | |||
94 | private int _nextCollisionOkTime = 0; | 94 | private int _nextCollisionOkTime = 0; |
95 | long _collidingStep; | 95 | long _collidingStep; |
96 | long _collidingGroundStep; | 96 | long _collidingGroundStep; |
97 | CollisionFlags m_currentCollisionFlags = 0; | ||
97 | 98 | ||
98 | public override BulletBody Body { get; set; } | 99 | public override BulletBody Body { get; set; } |
99 | 100 | ||
@@ -143,6 +144,7 @@ public sealed class BSPrim : BSPhysObject | |||
143 | // At the moment, we're still letting BulletSim manage the creation and destruction | 144 | // At the moment, we're still letting BulletSim manage the creation and destruction |
144 | // of the object. Someday we'll move that into the C# code. | 145 | // of the object. Someday we'll move that into the C# code. |
145 | Body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); | 146 | Body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); |
147 | m_currentCollisionFlags = BulletSimAPI.GetCollisionFlags2(Body.Ptr); | ||
146 | }); | 148 | }); |
147 | } | 149 | } |
148 | 150 | ||
@@ -483,8 +485,7 @@ public sealed class BSPrim : BSPhysObject | |||
483 | // recompute any linkset parameters | 485 | // recompute any linkset parameters |
484 | Linkset.Refresh(this); | 486 | Linkset.Refresh(this); |
485 | 487 | ||
486 | CollisionFlags cf = BulletSimAPI.GetCollisionFlags2(Body.Ptr); | 488 | DetailLog("{0},BSPrim.SetObjectDynamic,taint,static={1},solid={2},mass={3}, cf={4}", LocalID, IsStatic, IsSolid, mass, m_currentCollisionFlags); |
487 | DetailLog("{0},BSPrim.SetObjectDynamic,taint,static={1},solid={2},mass={3}, cf={4}", LocalID, IsStatic, IsSolid, mass, cf); | ||
488 | } | 489 | } |
489 | 490 | ||
490 | // prims don't fly | 491 | // prims don't fly |
@@ -644,7 +645,7 @@ public sealed class BSPrim : BSPhysObject | |||
644 | 645 | ||
645 | Scene.TaintedObject("BSPrim.SubscribeEvents", delegate() | 646 | Scene.TaintedObject("BSPrim.SubscribeEvents", delegate() |
646 | { | 647 | { |
647 | BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 648 | m_currentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
648 | }); | 649 | }); |
649 | } | 650 | } |
650 | } | 651 | } |
@@ -652,7 +653,7 @@ public sealed class BSPrim : BSPhysObject | |||
652 | _subscribedEventsMs = 0; | 653 | _subscribedEventsMs = 0; |
653 | Scene.TaintedObject("BSPrim.UnSubscribeEvents", delegate() | 654 | Scene.TaintedObject("BSPrim.UnSubscribeEvents", delegate() |
654 | { | 655 | { |
655 | BulletSimAPI.RemoveFromCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 656 | m_currentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
656 | }); | 657 | }); |
657 | } | 658 | } |
658 | public override bool SubscribedEvents() { | 659 | public override bool SubscribedEvents() { |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs index a0bad3a..d28c14b 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs | |||
@@ -461,10 +461,20 @@ public static extern bool DeleteCollisionShape2(IntPtr world, IntPtr shape); | |||
461 | public static extern IntPtr CreateBodyFromShape2(IntPtr sim, IntPtr shape, Vector3 pos, Quaternion rot); | 461 | public static extern IntPtr CreateBodyFromShape2(IntPtr sim, IntPtr shape, Vector3 pos, Quaternion rot); |
462 | 462 | ||
463 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 463 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
464 | public static extern IntPtr CreateBodyFromShapeAndInfo2(IntPtr sim, IntPtr shape, IntPtr constructionInfo); | ||
465 | |||
466 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
464 | public static extern IntPtr CreateBodyWithDefaultMotionState2(IntPtr shape, Vector3 pos, Quaternion rot); | 467 | public static extern IntPtr CreateBodyWithDefaultMotionState2(IntPtr shape, Vector3 pos, Quaternion rot); |
465 | 468 | ||
466 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 469 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
467 | public static extern bool SetBodyShape2(IntPtr sim, IntPtr obj, IntPtr shape); | 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); | ||
474 | |||
475 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | ||
476 | public static extern void ReleaseBodyInfo2(IntPtr obj); | ||
477 | |||
468 | // ===================================================================================== | 478 | // ===================================================================================== |
469 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 479 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
470 | public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords, | 480 | public static extern IntPtr CreateHeightMapInfo2(IntPtr sim, uint id, Vector3 minCoords, Vector3 maxCoords, |
@@ -604,13 +614,13 @@ public static extern bool SetInterpolation2(IntPtr obj, Vector3 lin, Vector3 ang | |||
604 | public static extern CollisionFlags GetCollisionFlags2(IntPtr obj); | 614 | public static extern CollisionFlags GetCollisionFlags2(IntPtr obj); |
605 | 615 | ||
606 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 616 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
607 | public static extern IntPtr SetCollisionFlags2(IntPtr obj, CollisionFlags flags); | 617 | public static extern CollisionFlags SetCollisionFlags2(IntPtr obj, CollisionFlags flags); |
608 | 618 | ||
609 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 619 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
610 | public static extern IntPtr AddToCollisionFlags2(IntPtr obj, CollisionFlags flags); | 620 | public static extern CollisionFlags AddToCollisionFlags2(IntPtr obj, CollisionFlags flags); |
611 | 621 | ||
612 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 622 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
613 | public static extern IntPtr RemoveFromCollisionFlags2(IntPtr obj, CollisionFlags flags); | 623 | public static extern CollisionFlags RemoveFromCollisionFlags2(IntPtr obj, CollisionFlags flags); |
614 | 624 | ||
615 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] | 625 | [DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] |
616 | public static extern bool SetMassProps2(IntPtr obj, float mass, Vector3 inertia); | 626 | public static extern bool SetMassProps2(IntPtr obj, float mass, Vector3 inertia); |