diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index fcb98a5..c9c4753 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 | ||
@@ -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) |
@@ -686,24 +688,16 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
686 | 688 | ||
687 | public static bool operator ==(list a, list b) | 689 | public static bool operator ==(list a, list b) |
688 | { | 690 | { |
689 | int la = -1; | 691 | int la = a.Length; |
690 | int lb = -1; | 692 | int lb = b.Length; |
691 | try { la = a.Length; } | ||
692 | catch (NullReferenceException) { } | ||
693 | try { lb = b.Length; } | ||
694 | catch (NullReferenceException) { } | ||
695 | 693 | ||
696 | return la == lb; | 694 | return la == lb; |
697 | } | 695 | } |
698 | 696 | ||
699 | public static bool operator !=(list a, list b) | 697 | public static bool operator !=(list a, list b) |
700 | { | 698 | { |
701 | int la = -1; | 699 | int la = a.Length; |
702 | int lb = -1; | 700 | int lb = b.Length; |
703 | try { la = a.Length; } | ||
704 | catch (NullReferenceException) { } | ||
705 | try {lb = b.Length;} | ||
706 | catch (NullReferenceException) { } | ||
707 | 701 | ||
708 | return la != lb; | 702 | return la != lb; |
709 | } | 703 | } |
@@ -937,7 +931,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
937 | ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r)); | 931 | ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r)); |
938 | } | 932 | } |
939 | 933 | ||
940 | if (ascending == 0) | 934 | if (ascending != 1) |
941 | { | 935 | { |
942 | ret = 0 - ret; | 936 | ret = 0 - ret; |
943 | } | 937 | } |
@@ -970,6 +964,9 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
970 | stride = 1; | 964 | stride = 1; |
971 | } | 965 | } |
972 | 966 | ||
967 | if ((Data.Length % stride) != 0) | ||
968 | return new list(ret); | ||
969 | |||
973 | // we can optimize here in the case where stride == 1 and the list | 970 | // we can optimize here in the case where stride == 1 and the list |
974 | // consists of homogeneous types | 971 | // consists of homogeneous types |
975 | 972 | ||
@@ -989,7 +986,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
989 | if (homogeneous) | 986 | if (homogeneous) |
990 | { | 987 | { |
991 | Array.Sort(ret, new HomogeneousComparer()); | 988 | Array.Sort(ret, new HomogeneousComparer()); |
992 | if (ascending == 0) | 989 | if (ascending != 1) |
993 | { | 990 | { |
994 | Array.Reverse(ret); | 991 | Array.Reverse(ret); |
995 | } | 992 | } |