aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs41
1 files changed, 22 insertions, 19 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 975bf2d..b19ed0a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2970,37 +2970,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2970 // need the magnitude later 2970 // need the magnitude later
2971 // float velmag = (float)Util.GetMagnitude(llvel); 2971 // float velmag = (float)Util.GetMagnitude(llvel);
2972 2972
2973 SceneObjectGroup new_group = World.RezObject(m_host, item, pos, rot, vel, param); 2973 List<SceneObjectGroup> new_groups = World.RezObject(m_host, item, pos, rot, vel, param);
2974 2974
2975 // If either of these are null, then there was an unknown error. 2975 // If either of these are null, then there was an unknown error.
2976 if (new_group == null) 2976 if (new_groups == null)
2977 return; 2977 return;
2978 2978
2979 // objects rezzed with this method are die_at_edge by default. 2979 foreach (SceneObjectGroup group in new_groups)
2980 new_group.RootPart.SetDieAtEdge(true); 2980 {
2981 // objects rezzed with this method are die_at_edge by default.
2982 group.RootPart.SetDieAtEdge(true);
2981 2983
2982 new_group.ResumeScripts(); 2984 group.ResumeScripts();
2983 2985
2984 m_ScriptEngine.PostObjectEvent(m_host.LocalId, new EventParams( 2986 m_ScriptEngine.PostObjectEvent(m_host.LocalId, new EventParams(
2985 "object_rez", new Object[] { 2987 "object_rez", new Object[] {
2986 new LSL_String( 2988 new LSL_String(
2987 new_group.RootPart.UUID.ToString()) }, 2989 group.RootPart.UUID.ToString()) },
2988 new DetectParams[0])); 2990 new DetectParams[0]));
2989 2991
2990 float groupmass = new_group.GetMass(); 2992 float groupmass = group.GetMass();
2991 2993
2992 PhysicsActor pa = new_group.RootPart.PhysActor; 2994 PhysicsActor pa = group.RootPart.PhysActor;
2993 2995
2994 //Recoil. 2996 //Recoil.
2995 if (pa != null && pa.IsPhysical && (Vector3)vel != Vector3.Zero) 2997 if (pa != null && pa.IsPhysical && (Vector3)vel != Vector3.Zero)
2996 {
2997 Vector3 recoil = -vel * groupmass * m_recoilScaleFactor;
2998 if (recoil != Vector3.Zero)
2999 { 2998 {
3000 llApplyImpulse(recoil, 0); 2999 Vector3 recoil = -vel * groupmass * m_recoilScaleFactor;
3000 if (recoil != Vector3.Zero)
3001 {
3002 llApplyImpulse(recoil, 0);
3003 }
3001 } 3004 }
3005 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
3002 } 3006 }
3003 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
3004 }); 3007 });
3005 3008
3006 //ScriptSleep((int)((groupmass * velmag) / 10)); 3009 //ScriptSleep((int)((groupmass * velmag) / 10));