From e7ad6ed3a3fda013cd393df6bb50236871092249 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Fri, 3 Aug 2012 14:44:07 -0700 Subject: BulletSim: pass collision subscription information to the C++ code so collisions on objects that don't care are not reported up. --- OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs') diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 22f5995..8e6685b 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs @@ -642,11 +642,23 @@ public sealed class BSPrim : PhysicsActor } public override void SubscribeEvents(int ms) { _subscribedEventsMs = ms; - // make sure first collision happens - _nextCollisionOkTime = Util.EnvironmentTickCount() - _subscribedEventsMs; + if (ms > 0) + { + // make sure first collision happens + _nextCollisionOkTime = Util.EnvironmentTickCount() - _subscribedEventsMs; + + Scene.TaintedObject(delegate() + { + BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); + }); + } } public override void UnSubscribeEvents() { _subscribedEventsMs = 0; + Scene.TaintedObject(delegate() + { + BulletSimAPI.RemoveFromCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); + }); } public override bool SubscribedEvents() { return (_subscribedEventsMs > 0); -- cgit v1.1