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 /OpenSim | |
parent | renaming to markdown file (diff) | |
download | opensim-SC-76dc29dc379036aa44f1ef78782f7ac94760a80f.zip opensim-SC-76dc29dc379036aa44f1ef78782f7ac94760a80f.tar.gz opensim-SC-76dc29dc379036aa44f1ef78782f7ac94760a80f.tar.bz2 opensim-SC-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.
Diffstat (limited to 'OpenSim')
-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); |