diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 1ea52c5..91e03ac 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | |||
@@ -262,7 +262,12 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
262 | public static Vector3 Norm(Vector3 vector) | 262 | public static Vector3 Norm(Vector3 vector) |
263 | { | 263 | { |
264 | double mag = Mag(vector); | 264 | double mag = Mag(vector); |
265 | return new Vector3(vector.x / mag, vector.y / mag, vector.z / mag); | 265 | if (mag > 0.0) |
266 | { | ||
267 | double invMag = 1.0 / mag; | ||
268 | return vector * invMag; | ||
269 | } | ||
270 | return new Vector3(0, 0, 0); | ||
266 | } | 271 | } |
267 | 272 | ||
268 | #endregion | 273 | #endregion |
@@ -663,13 +668,13 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
663 | Object[] ret; | 668 | Object[] ret; |
664 | 669 | ||
665 | if (start < 0) | 670 | if (start < 0) |
666 | start=m_data.Length-start; | 671 | start=m_data.Length+start; |
667 | 672 | ||
668 | if (start < 0) | 673 | if (start < 0) |
669 | start=0; | 674 | start=0; |
670 | 675 | ||
671 | if (end < 0) | 676 | if (end < 0) |
672 | end=m_data.Length-end; | 677 | end=m_data.Length+end; |
673 | if (end < 0) | 678 | if (end < 0) |
674 | end=0; | 679 | end=0; |
675 | 680 | ||