* Make ODECharacter respect the scene's requested collision update time
* Set the Scene collision update time to 500 msprioritization
							parent
							
								
									5f94889044
								
							
						
					
					
						commit
						4ffe936ba8
					
				|  | @ -3409,7 +3409,7 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|             scene.AddPhysicsActorTaint(m_physicsActor); |             scene.AddPhysicsActorTaint(m_physicsActor); | ||||||
|             //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; |             //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; | ||||||
|             m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; |             m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; | ||||||
|             m_physicsActor.SubscribeEvents(1000); |             m_physicsActor.SubscribeEvents(500); | ||||||
|             m_physicsActor.LocalID = LocalId; |             m_physicsActor.LocalID = LocalId; | ||||||
|              |              | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -98,6 +98,7 @@ namespace OpenSim.Region.Physics.OdePlugin | ||||||
|         private bool m_alwaysRun = false; |         private bool m_alwaysRun = false; | ||||||
|         private bool m_hackSentFall = false; |         private bool m_hackSentFall = false; | ||||||
|         private bool m_hackSentFly = false; |         private bool m_hackSentFly = false; | ||||||
|  |         private int m_requestedUpdateFrequency = 0; | ||||||
|         private PhysicsVector m_taintPosition = new PhysicsVector(0, 0, 0); |         private PhysicsVector m_taintPosition = new PhysicsVector(0, 0, 0); | ||||||
|         public uint m_localID = 0; |         public uint m_localID = 0; | ||||||
|         public bool m_returnCollisions = false; |         public bool m_returnCollisions = false; | ||||||
|  | @ -1184,26 +1185,31 @@ namespace OpenSim.Region.Physics.OdePlugin | ||||||
| 
 | 
 | ||||||
|         public override void SubscribeEvents(int ms) |         public override void SubscribeEvents(int ms) | ||||||
|         { |         { | ||||||
|  |             m_requestedUpdateFrequency = ms; | ||||||
|             m_eventsubscription = ms; |             m_eventsubscription = ms; | ||||||
|             _parent_scene.addCollisionEventReporting(this); |             _parent_scene.addCollisionEventReporting(this); | ||||||
|         } |         } | ||||||
|         public override void UnSubscribeEvents() |         public override void UnSubscribeEvents() | ||||||
|         { |         { | ||||||
|             _parent_scene.remCollisionEventReporting(this); |             _parent_scene.remCollisionEventReporting(this); | ||||||
|  |             m_requestedUpdateFrequency = 0; | ||||||
|             m_eventsubscription = 0; |             m_eventsubscription = 0; | ||||||
|         } |         } | ||||||
|         public void AddCollisionEvent(uint CollidedWith, float depth) |         public void AddCollisionEvent(uint CollidedWith, float depth) | ||||||
|         { |         { | ||||||
|             if (m_eventsubscription > 0) |             if (m_eventsubscription > 0) | ||||||
|                 CollisionEventsThisFrame.addCollider(CollidedWith,depth); |             { | ||||||
|  |                 CollisionEventsThisFrame.addCollider(CollidedWith, depth); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void SendCollisions() |         public void SendCollisions() | ||||||
|         { |         { | ||||||
|             if (m_eventsubscription > 0) |             if (m_eventsubscription > m_requestedUpdateFrequency) | ||||||
|             { |             { | ||||||
|                 base.SendCollisionUpdate(CollisionEventsThisFrame); |                 base.SendCollisionUpdate(CollisionEventsThisFrame); | ||||||
|                 CollisionEventsThisFrame = new CollisionEventUpdate(); |                 CollisionEventsThisFrame = new CollisionEventUpdate(); | ||||||
|  |                 m_eventsubscription = 0; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         public override bool SubscribedEvents() |         public override bool SubscribedEvents() | ||||||
|  | @ -1309,5 +1315,10 @@ namespace OpenSim.Region.Physics.OdePlugin | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         internal void AddCollisionFrameTime(int p) | ||||||
|  |         { | ||||||
|  |             m_eventsubscription += p; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2928,6 +2928,7 @@ namespace OpenSim.Region.Physics.OdePlugin | ||||||
|                                         { |                                         { | ||||||
|                                             case ActorTypes.Agent: |                                             case ActorTypes.Agent: | ||||||
|                                                 OdeCharacter cobj = (OdeCharacter)obj; |                                                 OdeCharacter cobj = (OdeCharacter)obj; | ||||||
|  |                                                 cobj.AddCollisionFrameTime(100); | ||||||
|                                                 cobj.SendCollisions(); |                                                 cobj.SendCollisions(); | ||||||
|                                                 break; |                                                 break; | ||||||
|                                             case ActorTypes.Prim: |                                             case ActorTypes.Prim: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Teravus Ovares (Dan Olivares)
						Teravus Ovares (Dan Olivares)