When sending object collision updates, don't null out and recreate the CollisionEventUpdate() if the number of collisions falls to zero. Reuse the existing one instead.
parent
5d37f0471e
commit
b9f106f484
|
@ -70,6 +70,11 @@ namespace OpenSim.Region.Physics.Manager
|
|||
{
|
||||
// Raising the event on the object, so don't need to provide location.. further up the tree knows that info.
|
||||
|
||||
/// <summary>
|
||||
/// Number of collision events in this update.
|
||||
/// </summary>
|
||||
public int Count { get { return m_objCollisionList.Count; } }
|
||||
|
||||
public int m_colliderType;
|
||||
public int m_GenericStartEnd;
|
||||
//public uint m_LocalID;
|
||||
|
|
|
@ -191,7 +191,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
private d.Mass pMass;
|
||||
|
||||
private int m_eventsubscription;
|
||||
private CollisionEventUpdate CollisionEventsThisFrame;
|
||||
private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate();
|
||||
|
||||
private IntPtr m_linkJoint = IntPtr.Zero;
|
||||
|
||||
|
@ -3020,23 +3020,13 @@ Console.WriteLine(" JointCreateFixed");
|
|||
|
||||
public void AddCollisionEvent(uint CollidedWith, ContactPoint contact)
|
||||
{
|
||||
if (CollisionEventsThisFrame == null)
|
||||
CollisionEventsThisFrame = new CollisionEventUpdate();
|
||||
|
||||
CollisionEventsThisFrame.addCollider(CollidedWith, contact);
|
||||
}
|
||||
|
||||
public void SendCollisions()
|
||||
{
|
||||
if (CollisionEventsThisFrame == null)
|
||||
return;
|
||||
|
||||
base.SendCollisionUpdate(CollisionEventsThisFrame);
|
||||
|
||||
if (CollisionEventsThisFrame.m_objCollisionList.Count == 0)
|
||||
CollisionEventsThisFrame = null;
|
||||
else
|
||||
CollisionEventsThisFrame = new CollisionEventUpdate();
|
||||
if (CollisionEventsThisFrame.Count > 0)
|
||||
base.SendCollisionUpdate(CollisionEventsThisFrame);
|
||||
}
|
||||
|
||||
public override bool SubscribedEvents()
|
||||
|
|
Loading…
Reference in New Issue