diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 9ca5ca9..3e69ab9 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | |||
@@ -102,19 +102,19 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
102 | 102 | ||
103 | public override string ToString() | 103 | public override string ToString() |
104 | { | 104 | { |
105 | string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", x, y, z); | 105 | string s=String.Format("<{0:0.000000}, {1:0.000000}, {2:0.000000}>", x, y, z); |
106 | return s; | 106 | return s; |
107 | } | 107 | } |
108 | 108 | ||
109 | public static explicit operator LSLString(Vector3 vec) | 109 | public static explicit operator LSLString(Vector3 vec) |
110 | { | 110 | { |
111 | string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", vec.x, vec.y, vec.z); | 111 | string s=String.Format("<{0:0.000000}, {1:0.000000}, {2:0.000000}>", vec.x, vec.y, vec.z); |
112 | return new LSLString(s); | 112 | return new LSLString(s); |
113 | } | 113 | } |
114 | 114 | ||
115 | public static explicit operator string(Vector3 vec) | 115 | public static explicit operator string(Vector3 vec) |
116 | { | 116 | { |
117 | string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", vec.x, vec.y, vec.z); | 117 | string s=String.Format("<{0:0.000000}, {1:0.000000}, {2:0.000000}>", vec.x, vec.y, vec.z); |
118 | return s; | 118 | return s; |
119 | } | 119 | } |
120 | 120 | ||
@@ -389,19 +389,19 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
389 | 389 | ||
390 | public override string ToString() | 390 | public override string ToString() |
391 | { | 391 | { |
392 | string st=String.Format(Culture.FormatProvider, "<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", x, y, z, s); | 392 | string st=String.Format(Culture.FormatProvider, "<{0:0.000000}, {1:0.000000}, {2:0.000000}, {3:0.000000}>", x, y, z, s); |
393 | return st; | 393 | return st; |
394 | } | 394 | } |
395 | 395 | ||
396 | public static explicit operator string(Quaternion r) | 396 | public static explicit operator string(Quaternion r) |
397 | { | 397 | { |
398 | string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", r.x, r.y, r.z, r.s); | 398 | string s=String.Format("<{0:0.000000}, {1:0.000000}, {2:0.000000}, {3:0.000000}>", r.x, r.y, r.z, r.s); |
399 | return s; | 399 | return s; |
400 | } | 400 | } |
401 | 401 | ||
402 | public static explicit operator LSLString(Quaternion r) | 402 | public static explicit operator LSLString(Quaternion r) |
403 | { | 403 | { |
404 | string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", r.x, r.y, r.z, r.s); | 404 | string s=String.Format("<{0:0.000000}, {1:0.000000}, {2:0.000000}, {3:0.000000}>", r.x, r.y, r.z, r.s); |
405 | return new LSLString(s); | 405 | return new LSLString(s); |
406 | } | 406 | } |
407 | 407 | ||
@@ -512,7 +512,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
512 | else if (o is LSL_Types.LSLFloat) | 512 | else if (o is LSL_Types.LSLFloat) |
513 | size += 8; | 513 | size += 8; |
514 | else if (o is LSL_Types.LSLString) | 514 | else if (o is LSL_Types.LSLString) |
515 | size += ((LSL_Types.LSLString)o).m_string.Length; | 515 | size += ((LSL_Types.LSLString)o).m_string == null ? 0 : ((LSL_Types.LSLString)o).m_string.Length; |
516 | else if (o is LSL_Types.key) | 516 | else if (o is LSL_Types.key) |
517 | size += ((LSL_Types.key)o).value.Length; | 517 | size += ((LSL_Types.key)o).value.Length; |
518 | else if (o is LSL_Types.Vector3) | 518 | else if (o is LSL_Types.Vector3) |
@@ -521,6 +521,8 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
521 | size += 64; | 521 | size += 64; |
522 | else if (o is int) | 522 | else if (o is int) |
523 | size += 4; | 523 | size += 4; |
524 | else if (o is uint) | ||
525 | size += 4; | ||
524 | else if (o is string) | 526 | else if (o is string) |
525 | size += ((string)o).Length; | 527 | size += ((string)o).Length; |
526 | else if (o is float) | 528 | else if (o is float) |
@@ -711,24 +713,16 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
711 | 713 | ||
712 | public static bool operator ==(list a, list b) | 714 | public static bool operator ==(list a, list b) |
713 | { | 715 | { |
714 | int la = -1; | 716 | int la = a.Length; |
715 | int lb = -1; | 717 | int lb = b.Length; |
716 | try { la = a.Length; } | ||
717 | catch (NullReferenceException) { } | ||
718 | try { lb = b.Length; } | ||
719 | catch (NullReferenceException) { } | ||
720 | 718 | ||
721 | return la == lb; | 719 | return la == lb; |
722 | } | 720 | } |
723 | 721 | ||
724 | public static bool operator !=(list a, list b) | 722 | public static bool operator !=(list a, list b) |
725 | { | 723 | { |
726 | int la = -1; | 724 | int la = a.Length; |
727 | int lb = -1; | 725 | int lb = b.Length; |
728 | try { la = a.Length; } | ||
729 | catch (NullReferenceException) { } | ||
730 | try {lb = b.Length;} | ||
731 | catch (NullReferenceException) { } | ||
732 | 726 | ||
733 | return la != lb; | 727 | return la != lb; |
734 | } | 728 | } |
@@ -962,7 +956,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
962 | ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r)); | 956 | ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r)); |
963 | } | 957 | } |
964 | 958 | ||
965 | if (ascending == 0) | 959 | if (ascending != 1) |
966 | { | 960 | { |
967 | ret = 0 - ret; | 961 | ret = 0 - ret; |
968 | } | 962 | } |
@@ -995,6 +989,9 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
995 | stride = 1; | 989 | stride = 1; |
996 | } | 990 | } |
997 | 991 | ||
992 | if ((Data.Length % stride) != 0) | ||
993 | return new list(ret); | ||
994 | |||
998 | // we can optimize here in the case where stride == 1 and the list | 995 | // we can optimize here in the case where stride == 1 and the list |
999 | // consists of homogeneous types | 996 | // consists of homogeneous types |
1000 | 997 | ||
@@ -1014,7 +1011,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
1014 | if (homogeneous) | 1011 | if (homogeneous) |
1015 | { | 1012 | { |
1016 | Array.Sort(ret, new HomogeneousComparer()); | 1013 | Array.Sort(ret, new HomogeneousComparer()); |
1017 | if (ascending == 0) | 1014 | if (ascending != 1) |
1018 | { | 1015 | { |
1019 | Array.Reverse(ret); | 1016 | Array.Reverse(ret); |
1020 | } | 1017 | } |