diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Util.cs | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 58344f3..17fc58c 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -54,7 +54,7 @@ namespace OpenSim.Framework | |||
54 | /// </summary> | 54 | /// </summary> |
55 | public class Util | 55 | public class Util |
56 | { | 56 | { |
57 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 57 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
58 | 58 | ||
59 | private static uint nextXferID = 5000; | 59 | private static uint nextXferID = 5000; |
60 | private static Random randomClass = new Random(); | 60 | private static Random randomClass = new Random(); |
@@ -70,6 +70,39 @@ namespace OpenSim.Framework | |||
70 | public static readonly Regex UUIDPattern | 70 | public static readonly Regex UUIDPattern |
71 | = new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); | 71 | = new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); |
72 | 72 | ||
73 | /// <summary> | ||
74 | /// Linear interpolates B<->C using percent A | ||
75 | /// </summary> | ||
76 | /// <param name="a"></param> | ||
77 | /// <param name="b"></param> | ||
78 | /// <param name="c"></param> | ||
79 | /// <returns></returns> | ||
80 | public static double lerp(double a, double b, double c) | ||
81 | { | ||
82 | return (b*a) + (c*(1 - a)); | ||
83 | } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Bilinear Interpolate, see Lerp but for 2D using 'percents' X & Y. | ||
87 | /// Layout: | ||
88 | /// A B | ||
89 | /// C D | ||
90 | /// A<->C = Y | ||
91 | /// C<->D = X | ||
92 | /// </summary> | ||
93 | /// <param name="x"></param> | ||
94 | /// <param name="y"></param> | ||
95 | /// <param name="a"></param> | ||
96 | /// <param name="b"></param> | ||
97 | /// <param name="c"></param> | ||
98 | /// <param name="d"></param> | ||
99 | /// <returns></returns> | ||
100 | public static double lerp2D(double x, double y, double a, double b, double c, double d) | ||
101 | { | ||
102 | return lerp(y, lerp(x, a, b), lerp(x, c, d)); | ||
103 | } | ||
104 | |||
105 | |||
73 | /// <value> | 106 | /// <value> |
74 | /// Well known UUID for the blank texture used in the Linden SL viewer version 1.20 (and hopefully onwards) | 107 | /// Well known UUID for the blank texture used in the Linden SL viewer version 1.20 (and hopefully onwards) |
75 | /// </value> | 108 | /// </value> |
@@ -103,7 +136,7 @@ namespace OpenSim.Framework | |||
103 | float dx = a.X - b.X; | 136 | float dx = a.X - b.X; |
104 | float dy = a.Y - b.Y; | 137 | float dy = a.Y - b.Y; |
105 | float dz = a.Z - b.Z; | 138 | float dz = a.Z - b.Z; |
106 | return (dx*dx + dy*dy + dz*dz) < (amount*amount); | 139 | return (dx*dx + dy*dy + dz*dz) < (amount*amount); |
107 | } | 140 | } |
108 | 141 | ||
109 | /// <summary> | 142 | /// <summary> |
@@ -942,7 +975,7 @@ namespace OpenSim.Framework | |||
942 | else | 975 | else |
943 | { | 976 | { |
944 | os = ReadEtcIssue(); | 977 | os = ReadEtcIssue(); |
945 | } | 978 | } |
946 | 979 | ||
947 | if (os.Length > 45) | 980 | if (os.Length > 45) |
948 | { | 981 | { |
@@ -1170,6 +1203,32 @@ namespace OpenSim.Framework | |||
1170 | return found.ToArray(); | 1203 | return found.ToArray(); |
1171 | } | 1204 | } |
1172 | 1205 | ||
1206 | public static string ServerURI(string uri) | ||
1207 | { | ||
1208 | if (uri == string.Empty) | ||
1209 | return string.Empty; | ||
1210 | |||
1211 | // Get rid of eventual slashes at the end | ||
1212 | uri = uri.TrimEnd('/'); | ||
1213 | |||
1214 | IPAddress ipaddr1 = null; | ||
1215 | string port1 = ""; | ||
1216 | try | ||
1217 | { | ||
1218 | ipaddr1 = Util.GetHostFromURL(uri); | ||
1219 | } | ||
1220 | catch { } | ||
1221 | |||
1222 | try | ||
1223 | { | ||
1224 | port1 = uri.Split(new char[] { ':' })[2]; | ||
1225 | } | ||
1226 | catch { } | ||
1227 | |||
1228 | // We tried our best to convert the domain names to IP addresses | ||
1229 | return (ipaddr1 != null) ? "http://" + ipaddr1.ToString() + ":" + port1 : uri; | ||
1230 | } | ||
1231 | |||
1173 | #region FireAndForget Threading Pattern | 1232 | #region FireAndForget Threading Pattern |
1174 | 1233 | ||
1175 | public static void FireAndForget(System.Threading.WaitCallback callback) | 1234 | public static void FireAndForget(System.Threading.WaitCallback callback) |