* 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); | ||||
|             //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; | ||||
|             m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; | ||||
|             m_physicsActor.SubscribeEvents(1000); | ||||
|             m_physicsActor.SubscribeEvents(500); | ||||
|             m_physicsActor.LocalID = LocalId; | ||||
|              | ||||
|         } | ||||
|  |  | |||
|  | @ -98,6 +98,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
|         private bool m_alwaysRun = false; | ||||
|         private bool m_hackSentFall = false; | ||||
|         private bool m_hackSentFly = false; | ||||
|         private int m_requestedUpdateFrequency = 0; | ||||
|         private PhysicsVector m_taintPosition = new PhysicsVector(0, 0, 0); | ||||
|         public uint m_localID = 0; | ||||
|         public bool m_returnCollisions = false; | ||||
|  | @ -1184,26 +1185,31 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
| 
 | ||||
|         public override void SubscribeEvents(int ms) | ||||
|         { | ||||
|             m_requestedUpdateFrequency = ms; | ||||
|             m_eventsubscription = ms; | ||||
|             _parent_scene.addCollisionEventReporting(this); | ||||
|         } | ||||
|         public override void UnSubscribeEvents() | ||||
|         { | ||||
|             _parent_scene.remCollisionEventReporting(this); | ||||
|             m_requestedUpdateFrequency = 0; | ||||
|             m_eventsubscription = 0; | ||||
|         } | ||||
|         public void AddCollisionEvent(uint CollidedWith, float depth) | ||||
|         { | ||||
|             if (m_eventsubscription > 0) | ||||
|                 CollisionEventsThisFrame.addCollider(CollidedWith,depth); | ||||
|             { | ||||
|                 CollisionEventsThisFrame.addCollider(CollidedWith, depth); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void SendCollisions() | ||||
|         { | ||||
|             if (m_eventsubscription > 0) | ||||
|             if (m_eventsubscription > m_requestedUpdateFrequency) | ||||
|             { | ||||
|                 base.SendCollisionUpdate(CollisionEventsThisFrame); | ||||
|                 CollisionEventsThisFrame = new CollisionEventUpdate(); | ||||
|                 m_eventsubscription = 0; | ||||
|             } | ||||
|         } | ||||
|         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: | ||||
|                                                 OdeCharacter cobj = (OdeCharacter)obj; | ||||
|                                                 cobj.AddCollisionFrameTime(100); | ||||
|                                                 cobj.SendCollisions(); | ||||
|                                                 break; | ||||
|                                             case ActorTypes.Prim: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Teravus Ovares (Dan Olivares)
						Teravus Ovares (Dan Olivares)