diff options
author | Melanie | 2012-07-11 03:56:50 +0100 |
---|---|---|
committer | Melanie | 2012-07-11 03:56:50 +0100 |
commit | 0bc8238a6c25bc42438caee0cf42deec00f26b8e (patch) | |
tree | a046cace418e2e7714818c60242698d0dd9cb4f4 /OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |
parent | Merge branch 'avination' into careminster (diff) | |
parent | If a part has a sit target and an avatar is already sitting, allow another av... (diff) | |
download | opensim-SC-0bc8238a6c25bc42438caee0cf42deec00f26b8e.zip opensim-SC-0bc8238a6c25bc42438caee0cf42deec00f26b8e.tar.gz opensim-SC-0bc8238a6c25bc42438caee0cf42deec00f26b8e.tar.bz2 opensim-SC-0bc8238a6c25bc42438caee0cf42deec00f26b8e.tar.xz |
Merge branch 'master' into careminster
Conflicts:
OpenSim/Framework/Watchdog.cs
OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
OpenSim/Region/Framework/Scenes/Scene.cs
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
OpenSim/Region/Framework/Scenes/ScenePresence.cs
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 248d1f2..130f1ca 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -90,7 +90,7 @@ public sealed class BSPrim : PhysicsActor | |||
90 | private BSPrim _parentPrim; | 90 | private BSPrim _parentPrim; |
91 | 91 | ||
92 | private int _subscribedEventsMs = 0; | 92 | private int _subscribedEventsMs = 0; |
93 | private int _lastCollisionTime = 0; | 93 | private int _nextCollisionOkTime = 0; |
94 | long _collidingStep; | 94 | long _collidingStep; |
95 | long _collidingGroundStep; | 95 | long _collidingGroundStep; |
96 | 96 | ||
@@ -597,7 +597,8 @@ public sealed class BSPrim : PhysicsActor | |||
597 | } | 597 | } |
598 | public override void SubscribeEvents(int ms) { | 598 | public override void SubscribeEvents(int ms) { |
599 | _subscribedEventsMs = ms; | 599 | _subscribedEventsMs = ms; |
600 | _lastCollisionTime = Util.EnvironmentTickCount() - _subscribedEventsMs; // make first collision happen | 600 | // make sure first collision happens |
601 | _nextCollisionOkTime = Util.EnvironmentTickCount() - _subscribedEventsMs; | ||
601 | } | 602 | } |
602 | public override void UnSubscribeEvents() { | 603 | public override void UnSubscribeEvents() { |
603 | _subscribedEventsMs = 0; | 604 | _subscribedEventsMs = 0; |
@@ -1338,23 +1339,27 @@ public sealed class BSPrim : PhysicsActor | |||
1338 | _collidingGroundStep = _scene.SimulationStep; | 1339 | _collidingGroundStep = _scene.SimulationStep; |
1339 | } | 1340 | } |
1340 | 1341 | ||
1341 | if (_subscribedEventsMs == 0) return; // nothing in the object is waiting for collision events | 1342 | // if someone is subscribed to collision events.... |
1342 | // throttle the collisions to the number of milliseconds specified in the subscription | 1343 | if (_subscribedEventsMs != 0) { |
1343 | int nowTime = _scene.SimulationNowTime; | 1344 | // throttle the collisions to the number of milliseconds specified in the subscription |
1344 | if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return; | 1345 | int nowTime = _scene.SimulationNowTime; |
1345 | _lastCollisionTime = nowTime; | 1346 | if (nowTime >= _nextCollisionOkTime) { |
1347 | _nextCollisionOkTime = nowTime + _subscribedEventsMs; | ||
1346 | 1348 | ||
1347 | if (collisionCollection == null) | 1349 | if (collisionCollection == null) |
1348 | collisionCollection = new CollisionEventUpdate(); | 1350 | collisionCollection = new CollisionEventUpdate(); |
1349 | collisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); | 1351 | collisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); |
1352 | } | ||
1353 | } | ||
1350 | } | 1354 | } |
1351 | 1355 | ||
1356 | // The scene is telling us it's time to pass our collected collisions into the simulator | ||
1352 | public void SendCollisions() | 1357 | public void SendCollisions() |
1353 | { | 1358 | { |
1354 | if (collisionCollection != null) | 1359 | if (collisionCollection != null && collisionCollection.Count > 0) |
1355 | { | 1360 | { |
1356 | base.SendCollisionUpdate(collisionCollection); | 1361 | base.SendCollisionUpdate(collisionCollection); |
1357 | collisionCollection = null; | 1362 | collisionCollection.Clear(); |
1358 | } | 1363 | } |
1359 | } | 1364 | } |
1360 | } | 1365 | } |