aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs10
1 files changed, 8 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index 821f470..bac0427 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -139,6 +139,11 @@ public abstract class BSPhysObject : PhysicsActor
139 public abstract bool IsStatic { get; } 139 public abstract bool IsStatic { get; }
140 public abstract bool IsSelected { get; } 140 public abstract bool IsSelected { get; }
141 141
142 // It can be confusing for an actor to know if it should move or update an object
143 // depeneding on the setting of 'selected', 'physical, ...
144 // This flag is the true test -- if true, the object is being acted on in the physical world
145 public abstract bool IsPhysicallyActive { get; }
146
142 // Materialness 147 // Materialness
143 public MaterialAttributes.Material Material { get; private set; } 148 public MaterialAttributes.Material Material { get; private set; }
144 public override void SetMaterial(int material) 149 public override void SetMaterial(int material)
@@ -302,8 +307,9 @@ public abstract class BSPhysObject : PhysicsActor
302 public virtual bool SendCollisions() 307 public virtual bool SendCollisions()
303 { 308 {
304 bool ret = true; 309 bool ret = true;
310
305 // If the 'no collision' call, force it to happen right now so quick collision_end 311 // If the 'no collision' call, force it to happen right now so quick collision_end
306 bool force = (CollisionCollection.Count == 0); 312 bool force = (CollisionCollection.Count == 0 && CollisionsLastTick.Count != 0);
307 313
308 // throttle the collisions to the number of milliseconds specified in the subscription 314 // throttle the collisions to the number of milliseconds specified in the subscription
309 if (force || (PhysicsScene.SimulationNowTime >= NextCollisionOkTime)) 315 if (force || (PhysicsScene.SimulationNowTime >= NextCollisionOkTime))
@@ -318,7 +324,7 @@ public abstract class BSPhysObject : PhysicsActor
318 ret = false; 324 ret = false;
319 } 325 }
320 326
321 // DetailLog("{0},{1}.SendCollisionUpdate,call,numCollisions={2}", LocalID, TypeName, CollisionCollection.Count); 327 DetailLog("{0},{1}.SendCollisionUpdate,call,numCollisions={2}", LocalID, TypeName, CollisionCollection.Count);
322 base.SendCollisionUpdate(CollisionCollection); 328 base.SendCollisionUpdate(CollisionCollection);
323 329
324 // Remember the collisions from this tick for some collision specific processing. 330 // Remember the collisions from this tick for some collision specific processing.