Resolve Mantis 6480 (http://opensimulator.org/mantis/view.php?id=6480)
by reversing the sign on the recoil computation and adding a [XEngine]RecoilScaleFactor parameter which defaults to zero. Testing in SL seems to show that there is not a recoil action there. Or, at least, it is very small. If someone knows how small, the default for the scale factor should be changed.0.7.5-pf-bulletsim
							parent
							
								
									26f364cc5d
								
							
						
					
					
						commit
						4914d6c0ea
					
				|  | @ -96,6 +96,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|         protected float m_ScriptDelayFactor = 1.0f; |         protected float m_ScriptDelayFactor = 1.0f; | ||||||
|         protected float m_ScriptDistanceFactor = 1.0f; |         protected float m_ScriptDistanceFactor = 1.0f; | ||||||
|         protected float m_MinTimerInterval = 0.5f; |         protected float m_MinTimerInterval = 0.5f; | ||||||
|  |         protected float m_recoilScaleFactor = 0.0f; | ||||||
| 
 | 
 | ||||||
|         protected DateTime m_timer = DateTime.Now; |         protected DateTime m_timer = DateTime.Now; | ||||||
|         protected bool m_waitingForScriptAnswer = false; |         protected bool m_waitingForScriptAnswer = false; | ||||||
|  | @ -146,6 +147,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
|                 // there's an smtp config, so load in the snooze time. |                 // there's an smtp config, so load in the snooze time. | ||||||
|                 EMAIL_PAUSE_TIME = SMTPConfig.GetInt("email_pause_time", EMAIL_PAUSE_TIME); |                 EMAIL_PAUSE_TIME = SMTPConfig.GetInt("email_pause_time", EMAIL_PAUSE_TIME); | ||||||
|             } |             } | ||||||
|  |             // Rezzing an object with a velocity can create recoil. This feature seems to have been | ||||||
|  |             //    removed from recent versions of SL. The code computes recoil (vel*mass) and scales | ||||||
|  |             //    it by this factor. May be zero to turn off recoil all together. | ||||||
|  |             m_recoilScaleFactor = m_ScriptEngine.Config.GetFloat("RecoilScaleFactor", m_recoilScaleFactor); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public override Object InitializeLifetimeService() |         public override Object InitializeLifetimeService() | ||||||
|  | @ -2829,10 +2834,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | ||||||
| 
 | 
 | ||||||
|                 PhysicsActor pa = new_group.RootPart.PhysActor; |                 PhysicsActor pa = new_group.RootPart.PhysActor; | ||||||
| 
 | 
 | ||||||
|  |                 //Recoil. | ||||||
|                 if (pa != null && pa.IsPhysical && (Vector3)vel != Vector3.Zero) |                 if (pa != null && pa.IsPhysical && (Vector3)vel != Vector3.Zero) | ||||||
|                 { |                 { | ||||||
|                     //Recoil. |                     Vector3 recoil = -vel * groupmass * m_recoilScaleFactor; | ||||||
|                     llApplyImpulse(vel * groupmass, 0); |                     if (recoil != Vector3.Zero) | ||||||
|  |                     { | ||||||
|  |                         llApplyImpulse(recoil, 0); | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|                 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay) |                 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay) | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Robert Adams
						Robert Adams