diff options
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 2eb50ef..dbb61fd 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -562,7 +562,15 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
562 | LSL_Types.Vector3 axis = LSL_Types.Vector3.Norm(crossProduct); | 562 | LSL_Types.Vector3 axis = LSL_Types.Vector3.Norm(crossProduct); |
563 | double s = Math.Sin(angle / 2); | 563 | double s = Math.Sin(angle / 2); |
564 | 564 | ||
565 | return new LSL_Types.Quaternion(axis.x * s, axis.y * s, axis.z * s, (float)Math.Cos(angle / 2)); | 565 | double x = axis.x * s; |
566 | double y = axis.y * s; | ||
567 | double z = axis.z * s; | ||
568 | double w = Math.Cos(angle / 2); | ||
569 | |||
570 | if(Double.IsNaN(x) || Double.IsNaN(y) || Double.IsNaN(z) || Double.IsNaN(w)) | ||
571 | return new LSL_Types.Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | ||
572 | |||
573 | return new LSL_Types.Quaternion((float)x, (float)y, (float)z, (float)w); | ||
566 | } | 574 | } |
567 | 575 | ||
568 | public void llWhisper(int channelID, string text) | 576 | public void llWhisper(int channelID, string text) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 758cf4b..bff63f1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -581,7 +581,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
581 | LSL_Types.Vector3 axis = LSL_Types.Vector3.Norm(crossProduct); | 581 | LSL_Types.Vector3 axis = LSL_Types.Vector3.Norm(crossProduct); |
582 | double s = Math.Sin(angle / 2); | 582 | double s = Math.Sin(angle / 2); |
583 | 583 | ||
584 | return new LSL_Types.Quaternion(axis.x * s, axis.y * s, axis.z * s, (float)Math.Cos(angle / 2)); | 584 | double x = axis.x * s; |
585 | double y = axis.y * s; | ||
586 | double z = axis.z * s; | ||
587 | double w = Math.Cos(angle / 2); | ||
588 | |||
589 | if(Double.IsNaN(x) || Double.IsNaN(y) || Double.IsNaN(z) || Double.IsNaN(w)) | ||
590 | return new LSL_Types.Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | ||
591 | |||
592 | return new LSL_Types.Quaternion((float)x, (float)y, (float)z, (float)w); | ||
585 | } | 593 | } |
586 | 594 | ||
587 | public void llWhisper(int channelID, string text) | 595 | public void llWhisper(int channelID, string text) |