diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 488b044c2c..4130b9f9af 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1116,35 +1116,41 @@ namespace OpenSim.Framework return true; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static double UnixTimeSinceEpochSecs() { TimeSpan t = DateTime.UtcNow - UnixEpoch; return t.TotalSeconds; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int UnixTimeSinceEpoch() { TimeSpan t = DateTime.UtcNow - UnixEpoch; return (int)t.TotalSeconds; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static ulong UnixTimeSinceEpoch_uS() { TimeSpan t = DateTime.UtcNow - UnixEpoch; return (ulong)(t.TotalMilliseconds * 1000); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int ToUnixTime(DateTime stamp) { TimeSpan t = stamp.ToUniversalTime() - UnixEpoch; return (int)t.TotalSeconds; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static DateTime ToDateTime(ulong seconds) { return UnixEpoch.AddSeconds(seconds); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static DateTime ToDateTime(int seconds) { return UnixEpoch.AddSeconds(seconds); @@ -1155,7 +1161,7 @@ namespace OpenSim.Framework /// /// /// - + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string Md5Hash(string data) { return Md5Hash(data, Encoding.Default); @@ -1170,6 +1176,7 @@ namespace OpenSim.Framework return sb.ToString(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static byte[] ComputeMD5Hash(string data, Encoding encoding) { using (MD5 md5 = MD5.Create()) @@ -1237,11 +1244,13 @@ namespace OpenSim.Framework return new string(chars); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string SHA1Hash(string data, Encoding enc) { return SHA1Hash(enc.GetBytes(data)); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string SHA1Hash(string data) { return SHA1Hash(Encoding.Default.GetBytes(data)); @@ -1266,6 +1275,7 @@ namespace OpenSim.Framework return ret; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static UUID ComputeSHA1UUID(string src) { return ComputeSHA1UUID(Encoding.Default.GetBytes(src)); @@ -1332,6 +1342,7 @@ namespace OpenSim.Framework return false; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string FieldToString(byte[] bytes) { return FieldToString(bytes, String.Empty); @@ -1416,6 +1427,7 @@ namespace OpenSim.Framework /// /// URL Standard Format /// A resolved IP Address + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IPAddress GetHostFromURL(string url) { return GetHostFromDNS(url.Split(new char[] { '/', ':' })[3]); @@ -1544,6 +1556,7 @@ namespace OpenSim.Framework return getEndPoint(ia, port); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Uri GetURI(string protocol, string hostname, int port, string path) { return new UriBuilder(protocol, hostname, port, path).Uri; @@ -1553,6 +1566,7 @@ namespace OpenSim.Framework /// Gets a list of all local system IP addresses /// /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IPAddress[] GetLocalHosts() { return Dns.GetHostAddresses(Dns.GetHostName()); @@ -1641,6 +1655,7 @@ namespace OpenSim.Framework /// /// path /// safe path + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string SafePath(string path) { return Regex.Replace(path, regexInvalidPathChars, String.Empty); @@ -1651,6 +1666,7 @@ namespace OpenSim.Framework /// /// filename /// safe filename + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string SafeFileName(string filename) { return Regex.Replace(filename, regexInvalidFileChars, String.Empty); @@ -1669,21 +1685,25 @@ namespace OpenSim.Framework return temp; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string assetsDir() { return Path.Combine(configDir(), "assets"); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string inventoryDir() { return Path.Combine(configDir(), "inventory"); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string configDir() { return "."; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string dataDir() { return "."; @@ -1715,6 +1735,7 @@ namespace OpenSim.Framework return "./OpenSimStats.log"; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string logDir() { return Path.GetDirectoryName(logFile()); @@ -1987,22 +2008,6 @@ namespace OpenSim.Framework #endregion - public static float Clip(float x, float min, float max) - { - return Math.Min(Math.Max(x, min), max); - } - - public static int Clip(int x, int min, int max) - { - return Math.Min(Math.Max(x, min), max); - } - - public static Vector3 Clip(Vector3 vec, float min, float max) - { - return new Vector3(Clip(vec.X, min, max), Clip(vec.Y, min, max), - Clip(vec.Z, min, max)); - } - /// /// Convert an UUID to a raw uuid string. Right now this is a string without hyphens. /// diff --git a/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule2.cs b/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule2.cs index 0e497265c6..673b6ce408 100644 --- a/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule2.cs +++ b/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule2.cs @@ -234,10 +234,9 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules SceneObjectPart part = s.GetSceneObjectPart(objectID); if (part != null) { - ObjectRegionName = s.RegionInfo.RegionName; - uint localX = s.RegionInfo.WorldLocX; - uint localY = s.RegionInfo.WorldLocY; - ObjectRegionName = ObjectRegionName + " (" + localX + ", " + localY + ")"; + RegionInfo sri = s.RegionInfo; + ObjectRegionName = sri.RegionName; + ObjectRegionName = ObjectRegionName + " (" + sri.WorldLocX + ", " + sri.WorldLocY + ")"; return part; } } @@ -261,13 +260,11 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules } public static bool smptValidateServerCertificate(object sender, X509Certificate certificate, - X509Chain chain, SslPolicyErrors sslPolicyErrors) + X509Chain chain, SslPolicyErrors sslPolicyErrors) { - if ((sslPolicyErrors & m_SMTP_SslPolicyErrorsMask) == SslPolicyErrors.None) - return true; - - return false; + return (sslPolicyErrors & m_SMTP_SslPolicyErrorsMask) == SslPolicyErrors.None; } + /// /// SendMail function utilized by llEMail /// @@ -352,15 +349,14 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules { // inter object email, keep it in the family Email email = new Email(); - email.time = ((int)((DateTime.UtcNow - new DateTime(1970,1,1,0,0,0)).TotalSeconds)).ToString(); + email.time = Util.UnixTimeSinceEpoch().ToString(); email.subject = subject; email.sender = objectID.ToString() + "@" + m_InterObjectHostname; email.message = "Object-Name: " + LastObjectName + "\nRegion: " + LastObjectRegionName + "\nLocal-Position: " + LastObjectPosition + "\n\n" + body; - string guid = address.Substring(0, address.IndexOf("@")); - UUID toID = new UUID(guid); + UUID toID = new UUID(mailTo.Name); if (IsLocal(toID)) // TODO FIX check to see if it is local { diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs index a3d19cb0fb..3143a2e22a 100644 --- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs +++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs @@ -301,7 +301,7 @@ namespace OpenSim.Region.CoreModules.World.Sound if (!m_scene.TryGetSceneObjectPart(objectID, out part)) return; - volume = Util.Clip((float)volume, 0, 1); + volume = Utils.Clamp(volume, 0, 1); UUID parentID = part.ParentGroup.UUID; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4b087966d0..e9cecfe8e0 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -3807,9 +3807,9 @@ namespace OpenSim.Region.Framework.Scenes /// public void SetFaceColorAlpha(int face, Vector3 color, double ?alpha) { - Vector3 clippedColor = Util.Clip(color, 0.0f, 1.0f); + Vector3 clippedColor = Vector3.Clamp(color, 0.0f, 1.0f); float clippedAlpha = alpha.HasValue ? - Util.Clip((float)alpha.Value, 0.0f, 1.0f) : 0; + Utils.Clamp((float)alpha.Value, 0.0f, 1.0f) : 0; // The only way to get a deep copy/ If we don't do this, we can // never detect color changes further down. diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs b/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs index 8865a33f16..7ac739d936 100644 --- a/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs @@ -1756,8 +1756,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_LINEAR_X: this.LockedLinearAxis.X = LockedAxis; - this.LockedLinearAxisLow.X = Util.Clip(low, -linearMax, linearMax); - this.LockedLinearAxisHigh.X = Util.Clip(high, -linearMax, linearMax); + this.LockedLinearAxisLow.X = OMV.Utils.Clamp(low, -linearMax, linearMax); + this.LockedLinearAxisHigh.X = OMV.Utils.Clamp(high, -linearMax, linearMax); break; case ExtendedPhysics.PHYS_AXIS_LOCK_LINEAR_Y: this.LockedLinearAxis.Y = LockedAxis; @@ -1766,8 +1766,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_LINEAR_Y: this.LockedLinearAxis.Y = LockedAxis; - this.LockedLinearAxisLow.Y = Util.Clip(low, -linearMax, linearMax); - this.LockedLinearAxisHigh.Y = Util.Clip(high, -linearMax, linearMax); + this.LockedLinearAxisLow.Y = OMV.Utils.Clamp(low, -linearMax, linearMax); + this.LockedLinearAxisHigh.Y = OMV.Utils.Clamp(high, -linearMax, linearMax); break; case ExtendedPhysics.PHYS_AXIS_LOCK_LINEAR_Z: this.LockedLinearAxis.Z = LockedAxis; @@ -1776,8 +1776,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_LINEAR_Z: this.LockedLinearAxis.Z = LockedAxis; - this.LockedLinearAxisLow.Z = Util.Clip(low, -linearMax, linearMax); - this.LockedLinearAxisHigh.Z = Util.Clip(high, -linearMax, linearMax); + this.LockedLinearAxisLow.Z = OMV.Utils.Clamp(low, -linearMax, linearMax); + this.LockedLinearAxisHigh.Z = OMV.Utils.Clamp(high, -linearMax, linearMax); break; case ExtendedPhysics.PHYS_AXIS_LOCK_ANGULAR: this.LockedAngularAxis = new OMV.Vector3(LockedAxis, LockedAxis, LockedAxis); @@ -1791,8 +1791,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_ANGULAR_X: this.LockedAngularAxis.X = LockedAxis; - this.LockedAngularAxisLow.X = Util.Clip(low, -angularMax, angularMax); - this.LockedAngularAxisHigh.X = Util.Clip(high, -angularMax, angularMax); + this.LockedAngularAxisLow.X = OMV.Utils.Clamp(low, -angularMax, angularMax); + this.LockedAngularAxisHigh.X = OMV.Utils.Clamp(high, -angularMax, angularMax); break; case ExtendedPhysics.PHYS_AXIS_LOCK_ANGULAR_Y: this.LockedAngularAxis.Y = LockedAxis; @@ -1801,8 +1801,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_ANGULAR_Y: this.LockedAngularAxis.Y = LockedAxis; - this.LockedAngularAxisLow.Y = Util.Clip(low, -angularMax, angularMax); - this.LockedAngularAxisHigh.Y = Util.Clip(high, -angularMax, angularMax); + this.LockedAngularAxisLow.Y = OMV.Utils.Clamp(low, -angularMax, angularMax); + this.LockedAngularAxisHigh.Y = OMV.Utils.Clamp(high, -angularMax, angularMax); break; case ExtendedPhysics.PHYS_AXIS_LOCK_ANGULAR_Z: this.LockedAngularAxis.Z = LockedAxis; @@ -1811,8 +1811,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS break; case ExtendedPhysics.PHYS_AXIS_LIMIT_ANGULAR_Z: this.LockedAngularAxis.Z = LockedAxis; - this.LockedAngularAxisLow.Z = Util.Clip(low, -angularMax, angularMax); - this.LockedAngularAxisHigh.Z = Util.Clip(high, -angularMax, angularMax); + this.LockedAngularAxisLow.Z = OMV.Utils.Clamp(low, -angularMax, angularMax); + this.LockedAngularAxisHigh.Z = OMV.Utils.Clamp(high, -angularMax, angularMax); break; case ExtendedPhysics.PHYS_AXIS_UNLOCK_LINEAR: this.LockedLinearAxis = LockedAxisFree; diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs index 7c9f3b45cf..d7792f42e1 100644 --- a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs @@ -2667,9 +2667,9 @@ Console.WriteLine(" JointCreateFixed"); SafeNativeMethods.AllocateODEDataForThread(0); - _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); - _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); - _position.Z = Util.Clip(_position.Z + 0.2f, -100f, 50000f); + _position.X = Utils.Clamp(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); + _position.Y = Utils.Clamp(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); + _position.Z = Utils.Clamp(_position.Z + 0.2f, -100f, 50000f); m_lastposition = _position; _velocity.X = 0; diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs index 245fbd14df..59096037aa 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs @@ -1159,9 +1159,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde m_bodydisablecontrol = 0; - SafeNativeMethods.Vector3 dtmp = SafeNativeMethods.BodyGetPosition(Body); - Vector3 localpos = new Vector3(dtmp.X,dtmp.Y,dtmp.Z); - // the Amotor still lets avatar rotation to drift during colisions // so force it back to identity @@ -1172,10 +1169,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde qtmp.Z = m_orientation2D.Z; SafeNativeMethods.BodySetQuaternion(Body,ref qtmp); - if(m_pidControllerActive == false) - { - _zeroPosition = localpos; - } + SafeNativeMethods.Vector3 dtmp = SafeNativeMethods.BodyGetPosition(Body); + Vector3 localpos = new Vector3(dtmp.X, dtmp.Y, dtmp.Z); // check outbounds forcing to be in world bool fixbody = false; @@ -1220,6 +1215,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde localpos.Z = 128f; } + if (m_pidControllerActive == false) + { + _zeroPosition = localpos; + } + if (fixbody) { m_freemove = false; diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs index 787d83fda4..9ad304faee 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs @@ -972,9 +972,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde { if (m_outbounds) { - _position.X = Util.Clip(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); - _position.Y = Util.Clip(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); - _position.Z = Util.Clip(_position.Z + 0.2f, Constants.MinSimulationHeight, Constants.MaxSimulationHeight); + _position.X = Utils.Clamp(_position.X, 0.5f, _parent_scene.WorldExtents.X - 0.5f); + _position.Y = Utils.Clamp(_position.Y, 0.5f, _parent_scene.WorldExtents.Y - 0.5f); + _position.Z = Utils.Clamp(_position.Z + 0.2f, Constants.MinSimulationHeight, Constants.MaxSimulationHeight); m_lastposition = _position; _velocity.X = 0; @@ -3815,7 +3815,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde { m_outbounds = true; - lpos.Z = Util.Clip(lpos.Z, -100f, 100000f); + lpos.Z = Utils.Clamp(lpos.Z, -100f, 100000f); m_acceleration.X = 0; m_acceleration.Y = 0; m_acceleration.Z = 0; @@ -3845,22 +3845,22 @@ namespace OpenSim.Region.PhysicsModule.ubOde if (lpos.X < 0f) { - _position.X = Util.Clip(lpos.X, -2f, -0.1f); + _position.X = Utils.Clamp(lpos.X, -2f, -0.1f); m_outbounds = true; } else if (lpos.X > _parent_scene.WorldExtents.X) { - _position.X = Util.Clip(lpos.X, _parent_scene.WorldExtents.X + 0.1f, _parent_scene.WorldExtents.X + 2f); + _position.X = Utils.Clamp(lpos.X, _parent_scene.WorldExtents.X + 0.1f, _parent_scene.WorldExtents.X + 2f); m_outbounds = true; } if (lpos.Y < 0f) { - _position.Y = Util.Clip(lpos.Y, -2f, -0.1f); + _position.Y = Utils.Clamp(lpos.Y, -2f, -0.1f); m_outbounds = true; } else if (lpos.Y > _parent_scene.WorldExtents.Y) { - _position.Y = Util.Clip(lpos.Y, _parent_scene.WorldExtents.Y + 0.1f, _parent_scene.WorldExtents.Y + 2f); + _position.Y = Utils.Clamp(lpos.Y, _parent_scene.WorldExtents.Y + 0.1f, _parent_scene.WorldExtents.Y + 2f); m_outbounds = true; } diff --git a/bin/OpenMetaverse.Rendering.Meshmerizer.dll b/bin/OpenMetaverse.Rendering.Meshmerizer.dll index 0ac81ef60f..34ed2b782a 100755 Binary files a/bin/OpenMetaverse.Rendering.Meshmerizer.dll and b/bin/OpenMetaverse.Rendering.Meshmerizer.dll differ diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index dc6c557859..5c89d06bd0 100755 Binary files a/bin/OpenMetaverse.StructuredData.dll and b/bin/OpenMetaverse.StructuredData.dll differ diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index 593ba1eddb..3c7e2353f9 100755 Binary files a/bin/OpenMetaverse.dll and b/bin/OpenMetaverse.dll differ diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index 1ab7fd2302..6d34837315 100755 Binary files a/bin/OpenMetaverseTypes.dll and b/bin/OpenMetaverseTypes.dll differ