From fb54ca39d11f0241f19a9d091ada6505fcbcf44b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 7 Aug 2020 22:10:53 +0100 Subject: [PATCH] cosmetics ( i hope) --- .../DoubleDictionaryThreadAbortSafe.cs | 12 - .../Avatar/Chat/Tests/ChatModuleTests.cs | 4 +- .../EntityTransfer/HGEntityTransferModule.cs | 30 +-- .../InventoryAccess/HGAssetMapper.cs | 2 +- .../HttpRequest/ScriptsHttpRequests.cs | 31 ++- .../Simulation/LocalSimulationConnector.cs | 4 +- .../World/Estate/EstateTerrainXferHandler.cs | 20 +- .../CoreModules/World/Land/LandObject.cs | 2 +- .../Region/Framework/Scenes/EventManager.cs | 14 +- .../Framework/Scenes/Scene.Permissions.cs | 4 +- OpenSim/Region/Framework/Scenes/Scene.cs | 130 +++++------ OpenSim/Region/Framework/Scenes/SceneGraph.cs | 112 ++++----- .../Framework/Scenes/SceneObjectGroup.cs | 94 ++++---- .../Framework/Scenes/SceneObjectPart.cs | 117 +++++----- .../Region/Framework/Scenes/ScenePresence.cs | 213 ++++++++---------- 15 files changed, 353 insertions(+), 436 deletions(-) diff --git a/OpenSim/Framework/DoubleDictionaryThreadAbortSafe.cs b/OpenSim/Framework/DoubleDictionaryThreadAbortSafe.cs index ec26b43e98..baade4f850 100644 --- a/OpenSim/Framework/DoubleDictionaryThreadAbortSafe.cs +++ b/OpenSim/Framework/DoubleDictionaryThreadAbortSafe.cs @@ -80,18 +80,6 @@ namespace OpenSim.Framework rwLock.EnterWriteLock(); gotLock = true; } -/* - if (Dictionary1.ContainsKey(key1)) - { - if (!Dictionary2.ContainsKey(key2)) - throw new ArgumentException("key1 exists in the dictionary but not key2"); - } - else if (Dictionary2.ContainsKey(key2)) - { - if (!Dictionary1.ContainsKey(key1)) - throw new ArgumentException("key2 exists in the dictionary but not key1"); - } -*/ Dictionary1[key1] = value; Dictionary2[key2] = value; m_array = null; diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs index e63629e680..eb4a50977f 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs @@ -241,8 +241,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests sceneSouth.Update(4); sp1.DrawDistance += 64; sp2.DrawDistance += 64; - sceneNorth.Update(2); - sceneSouth.Update(2); + sceneNorth.Update(4); + sceneSouth.Update(4); // Check child positions are correct. Assert.AreEqual( diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index af59cd2fe7..8bbb70e851 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs @@ -290,8 +290,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer else connector = new UserAgentServiceConnector(userAgentDriver); - GridRegion source = new GridRegion(Scene.RegionInfo); - source.RawServerURI = m_GatekeeperURI; + GridRegion source = new GridRegion(Scene.RegionInfo) + { + RawServerURI = m_GatekeeperURI + }; bool success = connector.LoginAgentToGrid(source, agentCircuit, reg, finalDestination, false, out reason); logout = success; // flag for later logout from this grid; this is an HG TP @@ -578,8 +580,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer string homeURI = Scene.GetAgentHomeURI(remoteClient.AgentId); - string message; - GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(lm.RegionID), remoteClient.AgentId, homeURI, out message); + GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(lm.RegionID), remoteClient.AgentId, homeURI, out string message); if (finalDestination != null) { @@ -793,19 +794,18 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer private GridRegion MakeGateKeeperRegion(string wantedURI) { - Uri uri; - if(!Uri.TryCreate(wantedURI, UriKind.Absolute, out uri)) + if(!Uri.TryCreate(wantedURI, UriKind.Absolute, out Uri uri)) return null; - GridRegion region = new GridRegion(); - - region.ExternalHostName = uri.Host; - region.HttpPort = (uint)uri.Port; - region.ServerURI = wantedURI; //uri.AbsoluteUri for some reason default ports are needed - region.RegionName = string.Empty; - region.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), (int)0); - region.RegionFlags = OpenSim.Framework.RegionFlags.Hyperlink; - return region; + return new GridRegion() + { + ExternalHostName = uri.Host, + HttpPort = (uint)uri.Port, + ServerURI = wantedURI, //uri.AbsoluteUri for some reason default ports are needed + RegionName = string.Empty, + InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), (int)0), + RegionFlags = OpenSim.Framework.RegionFlags.Hyperlink + }; } } } diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs index 9d35d999fd..b4f93e5518 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs @@ -323,7 +323,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // debugging we may want to simply report the failure if we can tell this is due to a failure // with a particular asset and not a destination network failure where all asset posts will fail (and // generate large amounts of log spam). - throw e; + throw; } } StringBuilder sb = null; diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index f844248e12..ae8cafb01a 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -95,9 +95,9 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest { // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private object m_httpListLock = new object(); + private readonly object m_httpListLock = new object(); private int m_httpTimeout = 30000; - private string m_name = "HttpScriptRequests"; + private readonly string m_name = "HttpScriptRequests"; private OutboundUrlFilter m_outboundUrlFilter; private string m_proxyurl = ""; @@ -135,11 +135,10 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest public bool CheckThrottle(uint localID, UUID ownerID) { - ThrottleData th; double now = Util.GetTimeStamp(); bool ret; - if (m_RequestsThrottle.TryGetValue(localID, out th)) + if (m_RequestsThrottle.TryGetValue(localID, out ThrottleData th)) { double delta = now - th.lastTime; th.lastTime = now; @@ -353,8 +352,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest public IServiceRequest GetNextCompletedRequest() { - HttpRequestClass req; - if(m_CompletedRequests.TryDequeue(out req)) + if(m_CompletedRequests.TryDequeue(out HttpRequestClass req)) return req; return null; @@ -364,8 +362,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest { lock (m_httpListLock) { - HttpRequestClass tmpReq; - if (m_pendingRequests.TryGetValue(reqId, out tmpReq)) + if (m_pendingRequests.TryGetValue(reqId, out HttpRequestClass tmpReq)) { tmpReq.Stop(); m_pendingRequests.Remove(reqId); @@ -410,13 +407,15 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest // First instance sets this up for all sims if (ThreadPool == null) { - STPStartInfo startInfo = new STPStartInfo(); - startInfo.IdleTimeout = 2000; - startInfo.MaxWorkerThreads = maxThreads; - startInfo.MinWorkerThreads = 0; - startInfo.ThreadPriority = ThreadPriority.BelowNormal; - startInfo.StartSuspended = true; - startInfo.ThreadPoolName = "ScriptsHttpReq"; + STPStartInfo startInfo = new STPStartInfo() + { + IdleTimeout = 2000, + MaxWorkerThreads = maxThreads, + MinWorkerThreads = 0, + ThreadPriority = ThreadPriority.Normal, + StartSuspended = true, + ThreadPoolName = "ScriptsHttpReq" + }; ThreadPool = new SmartThreadPool(startInfo); ThreadPool.Start(); @@ -540,7 +539,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest // We may want to ignore SSL if (sender is HttpWebRequest) { - HttpWebRequest Request = (HttpWebRequest)sender; + HttpWebRequest Request = sender as HttpWebRequest; ServicePoint sp = Request.ServicePoint; // We don't case about encryption, get out of here diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index 57aba05b7d..9124e97842 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs @@ -194,10 +194,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation return false; } - if (m_scenes.ContainsKey(destination.RegionID)) + if (m_scenes.TryGetValue(destination.RegionID, out Scene destScene)) { // m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Found region {0} to send SendCreateChildAgent", destination.RegionName); - return m_scenes[destination.RegionID].NewUserConnection(aCircuit, teleportFlags, source, out reason); + return destScene.NewUserConnection(aCircuit, teleportFlags, source, out reason); } reason = "Did not find region " + destination.RegionName; diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs b/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs index 2d74eaf929..788cdc49ca 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs @@ -39,7 +39,6 @@ namespace OpenSim.Region.CoreModules.World.Estate private AssetBase m_asset; public delegate void TerrainUploadComplete(string name, byte[] filedata, IClientAPI remoteClient); - public event TerrainUploadComplete TerrainUploadDone; //private string m_description = String.Empty; @@ -48,15 +47,16 @@ namespace OpenSim.Region.CoreModules.World.Estate private sbyte type = 0; public ulong mXferID; - private TerrainUploadComplete handlerTerrainUploadDone; public EstateTerrainXferHandler(IClientAPI pRemoteClient, string pClientFilename) { - m_asset = new AssetBase(UUID.Zero, pClientFilename, type, pRemoteClient.AgentId.ToString()); - m_asset.Data = new byte[0]; - m_asset.Description = "empty"; - m_asset.Local = true; - m_asset.Temporary = true; + m_asset = new AssetBase(UUID.Zero, pClientFilename, type, pRemoteClient.AgentId.ToString()) + { + Data = new byte[0], + Description = "empty", + Local = true, + Temporary = true + }; } public ulong XferID @@ -108,11 +108,7 @@ namespace OpenSim.Region.CoreModules.World.Estate public void SendCompleteMessage(IClientAPI remoteClient) { - handlerTerrainUploadDone = TerrainUploadDone; - if (handlerTerrainUploadDone != null) - { - handlerTerrainUploadDone(m_asset.Name, m_asset.Data, remoteClient); - } + TerrainUploadDone?.Invoke(m_asset.Name, m_asset.Data, remoteClient); } } } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 2144c8f17b..6ab0c24d87 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -1756,7 +1756,7 @@ namespace OpenSim.Region.CoreModules.World.Land foreach (SceneObjectGroup obj in primsOverMe) { if(m_scene.Permissions.CanSellObject(previousOwner,obj, (byte)SaleType.Original)) - m_BuySellModule.BuyObject(sp.ControllingClient, UUID.Zero, obj.LocalId, 1, 0); + m_BuySellModule.BuyObject(sp.ControllingClient, UUID.Zero, obj.LocalId, (byte)SaleType.Original, 0); } } } diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 920005aad1..dcd6b29f55 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -577,7 +577,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// /// Triggered by - /// in + /// in /// via , /// via /// @@ -591,7 +591,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// /// Triggered by - /// in + /// in /// via , /// via /// @@ -605,7 +605,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// /// Triggered by - /// in + /// in /// via , /// via /// @@ -619,7 +619,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// /// Triggered by - /// in + /// in /// via , /// via /// @@ -3344,11 +3344,7 @@ namespace OpenSim.Region.Framework.Scenes public void TriggerThrottleUpdate(ScenePresence scenePresence) { - ThrottleUpdate handler = OnThrottleUpdate; - if (handler != null) - { - handler(scenePresence); - } + OnThrottleUpdate?.Invoke(scenePresence); } // public void TriggerGatherUuids(SceneObjectPart sop, IDictionary assetUuids) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 60fb095e24..ee4cb520e9 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs @@ -220,9 +220,7 @@ namespace OpenSim.Region.Framework.Scenes public void SetBypassPermissions(bool value) { - SetBypassPermissionsHandler handler = OnSetBypassPermissions; - if (handler != null) - handler(value); + OnSetBypassPermissions?.Invoke(value); } public bool BypassPermissions() diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9a119a846f..b5d72f9e45 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -115,12 +115,9 @@ namespace OpenSim.Region.Framework.Scenes { m_physicsEnabled = value; - if (PhysicsScene != null) + if (PhysicsScene != null && PhysicsScene is IPhysicsParameters) { - IPhysicsParameters physScene = PhysicsScene as IPhysicsParameters; - - if (physScene != null) - physScene.SetPhysicsParameter( + ((IPhysicsParameters)PhysicsScene).SetPhysicsParameter( "Active", m_physicsEnabled.ToString(), PhysParameterEntry.APPLY_TO_NONE); } } @@ -158,7 +155,7 @@ namespace OpenSim.Region.Framework.Scenes { if (ent is SceneObjectGroup) { - SceneObjectGroup sog = (SceneObjectGroup)ent; + SceneObjectGroup sog = ent as SceneObjectGroup; sog.CreateScriptInstances(0, false, DefaultScriptEngine, 0); sog.ResumeScripts(); } @@ -848,8 +845,10 @@ namespace OpenSim.Region.Framework.Scenes m_lastIncoming = 0; m_lastOutgoing = 0; - m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this); - m_asyncSceneObjectDeleter.Enabled = true; + m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this) + { + Enabled = true + }; m_asyncInventorySender = new AsyncInventorySender(this); @@ -1048,13 +1047,10 @@ namespace OpenSim.Region.Framework.Scenes } else { - string tile - = Util.GetConfigVarFromSections( + string tile = Util.GetConfigVarFromSections( config, "MaptileStaticUUID", possibleMapConfigSections, UUID.Zero.ToString()); - UUID tileID; - - if (tile != UUID.Zero.ToString() && UUID.TryParse(tile, out tileID)) + if (tile != UUID.Zero.ToString() && UUID.TryParse(tile, out UUID tileID)) { RegionInfo.RegionSettings.TerrainImageID = tileID; } @@ -1300,8 +1296,7 @@ namespace OpenSim.Region.Framework.Scenes { ForEachRootScenePresence(delegate(ScenePresence agent) { - List old = new List(); - old.Add(otherRegion.RegionHandle); + List old = new List() {otherRegion.RegionHandle}; agent.DropOldNeighbours(old); if (EntityTransferModule != null && agent.PresenceType != PresenceType.Npc) EntityTransferModule.EnableChildAgent(agent, otherRegion); @@ -1670,9 +1665,7 @@ namespace OpenSim.Region.Framework.Scenes WorkManager.RunInThreadPool( delegate { - List coarseLocations; - List avatarUUIDs; - SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60); + SceneGraph.GetCoarseLocations(out List coarseLocations, out List avatarUUIDs, 60); // Send coarse locations to clients ForEachScenePresence(delegate(ScenePresence presence) { @@ -1941,7 +1934,7 @@ namespace OpenSim.Region.Framework.Scenes if (grp == null) m_groupsWithTargets.Remove(entry); else - grp.checkAtTargets(); + grp.CheckAtTargets(); } } } @@ -2030,21 +2023,23 @@ namespace OpenSim.Region.Framework.Scenes foreach (KeyValuePair ret in m_returns) { - GridInstantMessage msg = new GridInstantMessage(); - msg.fromAgentID = Guid.Empty; // From server - msg.toAgentID = ret.Key.Guid; - msg.imSessionID = Guid.NewGuid(); - msg.timestamp = unixtime; - msg.fromAgentName = "Server"; - msg.dialog = 19; // Object msg - msg.fromGroup = false; - msg.offline = 1; - msg.ParentEstateID = estateid; - msg.Position = Vector3.Zero; - msg.RegionID = regionguid; + GridInstantMessage msg = new GridInstantMessage() + { + fromAgentID = Guid.Empty, // From server + toAgentID = ret.Key.Guid, + imSessionID = Guid.NewGuid(), + timestamp = unixtime, + fromAgentName = "Server", + dialog = 19, // Object msg + fromGroup = false, + offline = 1, + ParentEstateID = estateid, + Position = Vector3.Zero, + RegionID = regionguid, + // We must fill in a null-terminated 'empty' string here since bytes[0] will crash viewer 3. + binaryBucket = new Byte[1] {0} + }; - // We must fill in a null-terminated 'empty' string here since bytes[0] will crash viewer 3. - msg.binaryBucket = new Byte[1] {0}; if (ret.Value.count > 1) msg.message = string.Format("Your {0} objects were returned from {1} in region {2} due to {3}", ret.Value.count, ret.Value.location.ToString(), RegionInfo.RegionName, ret.Value.reason); else @@ -2096,11 +2091,13 @@ namespace OpenSim.Region.Framework.Scenes } else { - ReturnInfo info = new ReturnInfo(); - info.count = 1; - info.objectName = objectName; - info.location = location; - info.reason = reason; + ReturnInfo info = new ReturnInfo() + { + count = 1, + objectName = objectName, + location = location, + reason = reason + }; m_returns[agentID] = info; } } @@ -2526,8 +2523,7 @@ namespace OpenSim.Region.Framework.Scenes } else { - IClientAPI client = null; - if (TryGetClient(ownerID, out client)) + if (TryGetClient(ownerID, out IClientAPI client)) client.SendAlertMessage("You cannot create objects here."); } } @@ -2720,16 +2716,16 @@ namespace OpenSim.Region.Framework.Scenes { if (e is SceneObjectGroup) { - SceneObjectGroup sog = (SceneObjectGroup)e; + SceneObjectGroup sog = e as SceneObjectGroup; if (sog != null && !sog.IsAttachment) { if (!exceptNoCopy || ((sog.EffectiveOwnerPerms & (uint)PermissionMask.Copy) != 0)) { - DeleteSceneObject((SceneObjectGroup)e, false); + DeleteSceneObject(sog, false); } else { - toReturn.Add((SceneObjectGroup)e); + toReturn.Add(sog); } } } @@ -3247,8 +3243,7 @@ namespace OpenSim.Region.Framework.Scenes if (aCircuit == null) return false; - bool vialogin = false; - if (VerifyClient(aCircuit, ep, out vialogin)) + if (VerifyClient(aCircuit, ep, out bool vialogin)) return true; // if it doesn't pass, we remove the agentcircuitdata altogether @@ -5416,7 +5411,7 @@ Label_GroupsDone: { if (obj is SceneObjectGroup) { - SceneObjectGroup grp = (SceneObjectGroup)obj; + SceneObjectGroup grp = obj as SceneObjectGroup; if (!grp.IsDeleted) { @@ -5689,10 +5684,11 @@ Environment.Exit(1); v0.Normalize(); v1.Normalize(); - Vector3 vsn = new Vector3(); - vsn.X = (v0.Y * v1.Z) - (v0.Z * v1.Y); - vsn.Y = (v0.Z * v1.X) - (v0.X * v1.Z); - vsn.Z = (v0.X * v1.Y) - (v0.Y * v1.X); + Vector3 vsn = new Vector3( + (v0.Y * v1.Z) - (v0.Z * v1.Y), + (v0.Z * v1.X) - (v0.X * v1.Z), + (v0.X * v1.Y) - (v0.Y * v1.X) + ); vsn.Normalize(); float xdiff = x - (float)((int)x); @@ -5937,11 +5933,10 @@ Environment.Exit(1); foreach (SceneObjectGroup g in objects) { - float ominX, ominY, ominZ, omaxX, omaxY, omaxZ; - Vector3 vec = g.AbsolutePosition; - g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); + g.GetAxisAlignedBoundingBoxRaw(out float ominX, out float omaxX, out float ominY, + out float omaxY, out float ominZ, out float omaxZ); // m_log.DebugFormat( // "[SCENE]: For {0} found AxisAlignedBoundingBoxRaw {1}, {2}", @@ -6127,10 +6122,12 @@ Environment.Exit(1); // Fake AgentCircuitData to keep IAuthorizationModule smiling if (aCircuit == null) { - aCircuit = new AgentCircuitData(); - aCircuit.AgentID = agentID; - aCircuit.firstname = String.Empty; - aCircuit.lastname = String.Empty; + aCircuit = new AgentCircuitData() + { + AgentID = agentID, + firstname = String.Empty, + lastname = String.Empty + }; } try @@ -6280,11 +6277,9 @@ Environment.Exit(1); CheckHeartbeat(); IEtcdModule etcd = RequestModuleInterface(); - int flags; - string message; if (etcd != null) { - int health = GetHealth(out flags, out message); + int health = GetHealth(out int flags, out string message); if (health != m_lastHealth) { m_lastHealth = health; @@ -6350,15 +6345,10 @@ Environment.Exit(1); public string GetExtraSetting(string name) { - if (m_extraSettings == null) - return String.Empty; + if (m_extraSettings != null && m_extraSettings.TryGetValue(name, out string val)) + return val; - string val; - - if (!m_extraSettings.TryGetValue(name, out val)) - return String.Empty; - - return val; + return String.Empty; } public void StoreExtraSetting(string name, string val) @@ -6366,9 +6356,7 @@ Environment.Exit(1); if (m_extraSettings == null) return; - string oldVal; - - if (m_extraSettings.TryGetValue(name, out oldVal)) + if (m_extraSettings.TryGetValue(name, out string oldVal)) { if (oldVal == val) return; diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 625b4dc063..f70f5e2213 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -96,8 +96,8 @@ namespace OpenSim.Region.Framework.Scenes /// These operations rely on the parts composition of the object. If allowed to run concurrently then race /// conditions can occur. /// - private Object m_updateLock = new Object(); - private Object m_linkLock = new Object(); + private readonly Object m_updateLock = new Object(); + private readonly Object m_linkLock = new Object(); private System.Threading.ReaderWriterLockSlim m_scenePresencesLock; private System.Threading.ReaderWriterLockSlim m_scenePartsLock; @@ -526,8 +526,7 @@ namespace OpenSim.Region.Framework.Scenes // "[SCENE GRAPH]: Deleting scene object with uuid {0}, resultOfObjectLinked = {1}", // uuid, resultOfObjectLinked); - EntityBase entity; - if (!Entities.TryGetValue(uuid, out entity) || (!(entity is SceneObjectGroup))) + if (!Entities.TryGetValue(uuid, out EntityBase entity) || (!(entity is SceneObjectGroup))) return false; SceneObjectGroup grp = (SceneObjectGroup)entity; @@ -608,26 +607,17 @@ namespace OpenSim.Region.Framework.Scenes public void FireAttachToBackup(SceneObjectGroup obj) { - if (OnAttachToBackup != null) - { - OnAttachToBackup(obj); - } + OnAttachToBackup?.Invoke(obj); } public void FireDetachFromBackup(SceneObjectGroup obj) { - if (OnDetachFromBackup != null) - { - OnDetachFromBackup(obj); - } + OnDetachFromBackup?.Invoke(obj); } public void FireChangeBackup(SceneObjectGroup obj) { - if (OnChangeBackup != null) - { - OnChangeBackup(obj); - } + OnChangeBackup?.Invoke(obj); } /// @@ -728,8 +718,7 @@ namespace OpenSim.Region.Framework.Scenes ++m_numChildAgents; uint localid = presence.LocalId; - ScenePresence oldref; - if (m_scenePresenceMap.TryGetValue(id, out oldref)) + if (m_scenePresenceMap.TryGetValue(id, out ScenePresence oldref)) { uint oldLocalID = oldref.LocalId; if (localid != oldLocalID) @@ -769,8 +758,7 @@ namespace OpenSim.Region.Framework.Scenes entered = true; } // Remove the presence reference from the dictionary - ScenePresence oldref; - if(m_scenePresenceMap.TryGetValue(agentID, out oldref)) + if(m_scenePresenceMap.TryGetValue(agentID, out ScenePresence oldref)) { m_scenePresenceMap.Remove(agentID); // Find the index in the list where the old ref was stored and remove the reference @@ -903,8 +891,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePresencesLock.EnterReadLock(); entered = true; } - ScenePresence presence; - if (m_scenePresenceMap.TryGetValue(agentId, out presence)) + if (m_scenePresenceMap.TryGetValue(agentId, out ScenePresence presence)) return presence.ControllingClient; return null; } @@ -970,8 +957,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePresencesLock.EnterReadLock(); entered = true; } - ScenePresence presence; - m_scenePresenceMap.TryGetValue(agentID, out presence); + m_scenePresenceMap.TryGetValue(agentID, out ScenePresence presence); return presence; } catch @@ -1019,8 +1005,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePresencesLock.EnterReadLock(); entered = true; } - ScenePresence sp; - if (m_scenePresenceLocalIDMap.TryGetValue(localID, out sp)) + if (m_scenePresenceLocalIDMap.TryGetValue(localID, out ScenePresence sp)) return sp; } finally @@ -1087,8 +1072,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePartsLock.EnterReadLock(); entered = true; } - SceneObjectPart sop; - if(m_scenePartsByLocalID.TryGetValue(localID, out sop)) + if(m_scenePartsByLocalID.TryGetValue(localID, out SceneObjectPart sop)) return sop.ParentGroup; return null; } @@ -1115,8 +1099,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePartsLock.EnterReadLock(); entered = true; } - SceneObjectPart sop; - if (m_scenePartsByID.TryGetValue(fullID, out sop)) + if (m_scenePartsByID.TryGetValue(fullID, out SceneObjectPart sop)) return sop.ParentGroup; return null; } @@ -1137,7 +1120,7 @@ namespace OpenSim.Region.Framework.Scenes { if (ent is SceneObjectGroup) { - SceneObjectGroup reportingG = (SceneObjectGroup)ent; + SceneObjectGroup reportingG = ent as SceneObjectGroup; EntityIntersection inter = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters); if (inter.HitTF && inter.distance < closestDistance) { @@ -1163,7 +1146,7 @@ namespace OpenSim.Region.Framework.Scenes for (int i = 0; i < entities.Length; ++i) { if(entities[i] is SceneObjectGroup) - ret.Add((SceneObjectGroup)entities[i]); + ret.Add(entities[i] as SceneObjectGroup); } return ret; } @@ -1175,9 +1158,8 @@ namespace OpenSim.Region.Framework.Scenes /// null if no such group was found protected internal SceneObjectGroup GetSceneObjectGroup(UUID fullID) { - EntityBase entity; - if (Entities.TryGetValue(fullID, out entity) && (entity is SceneObjectGroup)) - return (SceneObjectGroup)entity; + if (Entities.TryGetValue(fullID, out EntityBase entity) && (entity is SceneObjectGroup)) + return entity as SceneObjectGroup; return null; } @@ -1187,9 +1169,8 @@ namespace OpenSim.Region.Framework.Scenes /// null if no such group was found protected internal SceneObjectGroup GetSceneObjectGroup(uint localID) { - EntityBase entity; - if (Entities.TryGetValue(localID, out entity) && (entity is SceneObjectGroup)) - return (SceneObjectGroup)entity; + if (Entities.TryGetValue(localID, out EntityBase entity) && (entity is SceneObjectGroup)) + return entity as SceneObjectGroup; return null; } @@ -1228,8 +1209,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePartsLock.EnterReadLock(); entered = true; } - SceneObjectPart sop; - if (m_scenePartsByLocalID.TryGetValue(localID, out sop)) + if (m_scenePartsByLocalID.TryGetValue(localID, out SceneObjectPart sop)) { if (sop.ParentGroup == null || sop.ParentGroup.IsDeleted) return null; @@ -1259,8 +1239,7 @@ namespace OpenSim.Region.Framework.Scenes m_scenePartsLock.EnterReadLock(); entered = true; } - SceneObjectPart sop; - if (m_scenePartsByID.TryGetValue(fullID, out sop)) + if (m_scenePartsByID.TryGetValue(fullID, out SceneObjectPart sop)) { if (sop.ParentGroup == null || sop.ParentGroup.IsDeleted) return null; @@ -1336,11 +1315,7 @@ namespace OpenSim.Region.Framework.Scenes protected internal void physicsBasedCrash() { - handlerPhysicsCrash = UnRecoverableError; - if (handlerPhysicsCrash != null) - { - handlerPhysicsCrash(); - } + UnRecoverableError?.Invoke(); } /// @@ -1846,27 +1821,28 @@ namespace OpenSim.Region.Framework.Scenes { if (m_parentScene.Permissions.CanEditObject(group.UUID, agentID)) { - ObjectShapePacket.ObjectDataBlock shapeData = new ObjectShapePacket.ObjectDataBlock(); - shapeData.ObjectLocalID = shapeBlock.ObjectLocalID; - shapeData.PathBegin = shapeBlock.PathBegin; - shapeData.PathCurve = shapeBlock.PathCurve; - shapeData.PathEnd = shapeBlock.PathEnd; - shapeData.PathRadiusOffset = shapeBlock.PathRadiusOffset; - shapeData.PathRevolutions = shapeBlock.PathRevolutions; - shapeData.PathScaleX = shapeBlock.PathScaleX; - shapeData.PathScaleY = shapeBlock.PathScaleY; - shapeData.PathShearX = shapeBlock.PathShearX; - shapeData.PathShearY = shapeBlock.PathShearY; - shapeData.PathSkew = shapeBlock.PathSkew; - shapeData.PathTaperX = shapeBlock.PathTaperX; - shapeData.PathTaperY = shapeBlock.PathTaperY; - shapeData.PathTwist = shapeBlock.PathTwist; - shapeData.PathTwistBegin = shapeBlock.PathTwistBegin; - shapeData.ProfileBegin = shapeBlock.ProfileBegin; - shapeData.ProfileCurve = shapeBlock.ProfileCurve; - shapeData.ProfileEnd = shapeBlock.ProfileEnd; - shapeData.ProfileHollow = shapeBlock.ProfileHollow; - + ObjectShapePacket.ObjectDataBlock shapeData = new ObjectShapePacket.ObjectDataBlock() + { + ObjectLocalID = shapeBlock.ObjectLocalID, + PathBegin = shapeBlock.PathBegin, + PathCurve = shapeBlock.PathCurve, + PathEnd = shapeBlock.PathEnd, + PathRadiusOffset = shapeBlock.PathRadiusOffset, + PathRevolutions = shapeBlock.PathRevolutions, + PathScaleX = shapeBlock.PathScaleX, + PathScaleY = shapeBlock.PathScaleY, + PathShearX = shapeBlock.PathShearX, + PathShearY = shapeBlock.PathShearY, + PathSkew = shapeBlock.PathSkew, + PathTaperX = shapeBlock.PathTaperX, + PathTaperY = shapeBlock.PathTaperY, + PathTwist = shapeBlock.PathTwist, + PathTwistBegin = shapeBlock.PathTwistBegin, + ProfileBegin = shapeBlock.ProfileBegin, + ProfileCurve = shapeBlock.ProfileCurve, + ProfileEnd = shapeBlock.ProfileEnd, + ProfileHollow = shapeBlock.ProfileHollow + }; group.UpdateShape(shapeData, primLocalID); } } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 271d3ae36e..5d0401fa6f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -663,8 +663,7 @@ namespace OpenSim.Region.Framework.Scenes // We remove the object here try { - List localIDs = new List(); - localIDs.Add(root.LocalId); + List localIDs = new List(){root.LocalId}; sogScene.AddReturn(sog.OwnerID, sog.Name, sog.AbsolutePosition, "Returned at region cross"); sogScene.DeRezObjects(null, localIDs, UUID.Zero, DeRezAction.Return, UUID.Zero, false); @@ -1092,14 +1091,15 @@ namespace OpenSim.Region.Framework.Scenes return -1; } - TeleportObjectData tdata = new TeleportObjectData(); - tdata.flags = flags; - tdata.vel = vel; - tdata.avel = avel; - tdata.acc = acc; - tdata.ori = ori; - tdata.sourceID = sourceID; - + TeleportObjectData tdata = new TeleportObjectData() + { + flags = flags, + vel = vel, + avel = avel, + acc = acc, + ori = ori, + sourceID = sourceID + }; SOGCrossDelegate d = CrossAsync; d.BeginInvoke(this, targetPosition, tdata, CrossAsyncCompleted, d); @@ -1365,7 +1365,6 @@ namespace OpenSim.Region.Framework.Scenes { Dispose(false); } - private bool disposed = false; public void Dispose() { @@ -1379,6 +1378,7 @@ namespace OpenSim.Region.Framework.Scenes if (!disposed) { IsDeleted = true; + disposed = true; SceneObjectPart[] parts = m_parts.GetArray(); for(int i= 0; i < parts.Length; ++i) @@ -1386,19 +1386,15 @@ namespace OpenSim.Region.Framework.Scenes m_parts.Clear(); m_sittingAvatars.Clear(); - // m_rootPart = null; + // m_rootPart = null; m_targets.Clear(); m_rotTargets.Clear(); m_targetsByScript.Clear(); m_partsNameToLinkMap.Clear(); - - disposed = true; } } - - public void LoadScriptState(XmlDocument doc) { XmlNodeList nodes = doc.GetElementsByTagName("SavedScriptState"); @@ -1709,14 +1705,7 @@ namespace OpenSim.Region.Framework.Scenes /// public Vector3 GetAxisAlignedBoundingBox(out float offsetHeight) { - float minX; - float maxX; - float minY; - float maxY; - float minZ; - float maxZ; - - GetAxisAlignedBoundingBoxRaw(out minX, out maxX, out minY, out maxY, out minZ, out maxZ); + GetAxisAlignedBoundingBoxRaw(out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ); Vector3 boundingBox = new Vector3(maxX - minX, maxY - minY, maxZ - minZ); offsetHeight = 0; @@ -3089,9 +3078,9 @@ namespace OpenSim.Region.Framework.Scenes /// null if a part with the primID was not found public SceneObjectPart GetPart(UUID primID) { - SceneObjectPart childPart; - m_parts.TryGetValue(primID, out childPart); - return childPart; + if(m_parts.TryGetValue(primID, out SceneObjectPart childPart)) + return childPart; + return null; } /// @@ -3102,7 +3091,7 @@ namespace OpenSim.Region.Framework.Scenes public SceneObjectPart GetPart(uint localID) { SceneObjectPart sop = m_scene.GetSceneObjectPart(localID); - if(sop.ParentGroup.Equals(this)) + if(sop.ParentGroup.LocalId == LocalId) return sop; return null; } @@ -3794,9 +3783,7 @@ namespace OpenSim.Region.Framework.Scenes // compute difference between previous old rotation and new incoming rotation Quaternion minimalRotationFromQ1ToQ2 = newOrientation * Quaternion.Inverse(old); - float rotationAngle; - Vector3 spinforce; - minimalRotationFromQ1ToQ2.GetAxisAngle(out spinforce, out rotationAngle); + minimalRotationFromQ1ToQ2.GetAxisAngle(out Vector3 spinforce, out float rotationAngle); if(Math.Abs(rotationAngle)< 0.001) return; @@ -4044,8 +4031,7 @@ namespace OpenSim.Region.Framework.Scenes HasGroupChanged = true; // Send the group's properties to all clients once all parts are updated - IClientAPI client; - if (Scene.TryGetClient(AgentID, out client)) + if (Scene.TryGetClient(AgentID, out IClientAPI client)) SendPropertiesToClient(client); } @@ -4833,12 +4819,14 @@ namespace OpenSim.Region.Framework.Scenes public int registerRotTargetWaypoint(UUID scriptID, Quaternion target, float tolerance) { - scriptRotTarget waypoint = new scriptRotTarget(); - waypoint.targetRot = target; - waypoint.tolerance = tolerance; - waypoint.scriptID = scriptID; int handle = m_scene.AllocateIntId(); - waypoint.handle = handle; + scriptRotTarget waypoint = new scriptRotTarget() + { + targetRot = target, + tolerance = tolerance, + scriptID = scriptID, + handle = handle + }; lock (m_targets) { @@ -4883,12 +4871,14 @@ namespace OpenSim.Region.Framework.Scenes public int registerTargetWaypoint(UUID scriptID, Vector3 target, float tolerance) { - scriptPosTarget waypoint = new scriptPosTarget(); - waypoint.targetPos = target; - waypoint.tolerance = tolerance * tolerance; - waypoint.scriptID = scriptID; int handle = m_scene.AllocateIntId(); - waypoint.handle = handle; + scriptPosTarget waypoint = new scriptPosTarget() + { + targetPos = target, + tolerance = tolerance * tolerance, + scriptID = scriptID, + handle = handle + }; lock (m_targets) { @@ -4952,7 +4942,7 @@ namespace OpenSim.Region.Framework.Scenes } } - public void checkAtTargets() + public void CheckAtTargets() { int targetsCount = m_targets.Count; if (targetsCount > 0 && (m_scriptListens_atTarget || m_scriptListens_notAtTarget)) @@ -5139,20 +5129,22 @@ namespace OpenSim.Region.Framework.Scenes public void SetInertiaData(float TotalMass, Vector3 CenterOfMass, Vector3 Inertia, Vector4 aux ) { - PhysicsInertiaData inertia = new PhysicsInertiaData(); - inertia.TotalMass = TotalMass; - inertia.CenterOfMass = CenterOfMass; - inertia.Inertia = Inertia; - inertia.InertiaRotation = aux; + PhysicsInertiaData inertiaData = new PhysicsInertiaData() + { + TotalMass = TotalMass, + CenterOfMass = CenterOfMass, + Inertia = Inertia, + InertiaRotation = aux + }; if(TotalMass < 0) RootPart.PhysicsInertia = null; else - RootPart.PhysicsInertia = new PhysicsInertiaData(inertia); + RootPart.PhysicsInertia = inertiaData; PhysicsActor pa = RootPart.PhysActor; if(pa !=null) - pa.SetInertiaData(inertia); + pa.SetInertiaData(inertiaData); } /// diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 6dd396c0a0..0507131d2f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -315,7 +315,7 @@ namespace OpenSim.Region.Framework.Scenes private string m_text = String.Empty; private string m_touchName = String.Empty; private UndoRedoState m_UndoRedo = null; - private object m_UndoLock = new object(); + private readonly object m_UndoLock = new object(); private bool m_passTouches = false; private bool m_passCollisions = false; @@ -1178,7 +1178,7 @@ namespace OpenSim.Region.Framework.Scenes } } - private object UpdateFlagLock = new object(); + private readonly object UpdateFlagLock = new object(); /// /// Used for media on a prim. @@ -2494,7 +2494,7 @@ namespace OpenSim.Region.Framework.Scenes public uint AggregatedInnerOwnerPerms {get; private set; } public uint AggregatedInnerGroupPerms {get; private set; } public uint AggregatedInnerEveryonePerms {get; private set; } - private object InnerPermsLock = new object(); + private readonly object InnerPermsLock = new object(); public void AggregateInnerPerms() { @@ -2676,59 +2676,55 @@ namespace OpenSim.Region.Framework.Scenes private DetectedObject CreateDetObject(SceneObjectPart obj) { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = obj.UUID; - detobj.nameStr = obj.Name; - detobj.ownerUUID = obj.OwnerID; - detobj.posVector = obj.AbsolutePosition; - detobj.rotQuat = obj.GetWorldRotation(); - detobj.velVector = obj.Velocity; - detobj.colliderType = 0; - detobj.groupUUID = obj.GroupID; - // allow detector link number to be seen, unlike spec - //if (VolumeDetectActive) - // detobj.linkNumber = 0; - //else - detobj.linkNumber = LinkNum; - return detobj; + return new DetectedObject() + { + keyUUID = obj.UUID, + nameStr = obj.Name, + ownerUUID = obj.OwnerID, + posVector = obj.AbsolutePosition, + rotQuat = obj.GetWorldRotation(), + velVector = obj.Velocity, + colliderType = 0, + groupUUID = obj.GroupID, + linkNumber = LinkNum + }; } private DetectedObject CreateDetObject(ScenePresence av) { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = av.UUID; - detobj.nameStr = av.ControllingClient.Name; - detobj.ownerUUID = av.UUID; - detobj.posVector = av.AbsolutePosition; - detobj.rotQuat = av.Rotation; - detobj.velVector = av.Velocity; - detobj.colliderType = av.IsNPC ? 0x20 : 0x1; // OpenSim\Region\ScriptEngine\Shared\Helpers.cs + DetectedObject detobj = new DetectedObject() + { + keyUUID = av.UUID, + nameStr = av.ControllingClient.Name, + ownerUUID = av.UUID, + posVector = av.AbsolutePosition, + rotQuat = av.Rotation, + velVector = av.Velocity, + colliderType = av.IsNPC ? 0x20 : 0x1, // OpenSim\Region\ScriptEngine\Shared\Helpers.cs + groupUUID = av.ControllingClient.ActiveGroupId, + linkNumber = LinkNum + }; if(av.IsSatOnObject) detobj.colliderType |= 0x4; //passive else if(detobj.velVector != Vector3.Zero) detobj.colliderType |= 0x2; //active - detobj.groupUUID = av.ControllingClient.ActiveGroupId; - //if (VolumeDetectActive) - // detobj.linkNumber = 0; - //else - detobj.linkNumber = LinkNum; - return detobj; } private DetectedObject CreateDetObjectForGround() { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = UUID.Zero; - detobj.nameStr = ""; - detobj.ownerUUID = UUID.Zero; - detobj.posVector = ParentGroup.RootPart.AbsolutePosition; - detobj.rotQuat = Quaternion.Identity; - detobj.velVector = Vector3.Zero; - detobj.colliderType = 0; - detobj.groupUUID = UUID.Zero; - detobj.linkNumber = LinkNum; - return detobj; + return new DetectedObject() + { + keyUUID = UUID.Zero, + nameStr = "", + ownerUUID = UUID.Zero, + posVector = ParentGroup.RootPart.AbsolutePosition, + rotQuat = Quaternion.Identity, + velVector = Vector3.Zero, + colliderType = 0, + groupUUID = UUID.Zero, + linkNumber = LinkNum + }; } private ColliderArgs CreateColliderArgs(SceneObjectPart dest, List colliders) @@ -2801,9 +2797,8 @@ namespace OpenSim.Region.Framework.Scenes bool sendToRoot = true; ColliderArgs LandCollidingMessage = new ColliderArgs(); - List colliding = new List(); + List colliding = new List(){CreateDetObjectForGround()}; - colliding.Add(CreateDetObjectForGround()); LandCollidingMessage.Colliders = colliding; if (Inventory.ContainsScripts()) @@ -2873,10 +2868,12 @@ namespace OpenSim.Region.Framework.Scenes curcontact = collissionswith[id]; if (Math.Abs(curcontact.RelativeSpeed) > 0.2) { - soundinfo = new CollisionForSoundInfo(); - soundinfo.colliderID = id; - soundinfo.position = curcontact.Position; - soundinfo.relativeVel = curcontact.RelativeSpeed; + soundinfo = new CollisionForSoundInfo() + { + colliderID = id, + position = curcontact.Position, + relativeVel = curcontact.RelativeSpeed + }; soundinfolist.Add(soundinfo); } } @@ -2891,10 +2888,12 @@ namespace OpenSim.Region.Framework.Scenes curcontact = collissionswith[id]; if (Math.Abs(curcontact.RelativeSpeed) > 0.2) { - soundinfo = new CollisionForSoundInfo(); - soundinfo.colliderID = id; - soundinfo.position = curcontact.Position; - soundinfo.relativeVel = curcontact.RelativeSpeed; + soundinfo = new CollisionForSoundInfo() + { + colliderID = id, + position = curcontact.Position, + relativeVel = curcontact.RelativeSpeed + }; soundinfolist.Add(soundinfo); } } @@ -4353,9 +4352,11 @@ namespace OpenSim.Region.Framework.Scenes //distance[i] = (normals[i].X * AmBa.X + normals[i].Y * AmBa.Y + normals[i].Z * AmBa.Z) * -1; } - EntityIntersection result = new EntityIntersection(); + EntityIntersection result = new EntityIntersection() + { + distance = 1024 + }; - result.distance = 1024; float c = 0; float a = 0; float d = 0; @@ -5485,9 +5486,7 @@ namespace OpenSim.Region.Framework.Scenes Quaternion dR = currRot / APIDTarget; // find axis and angle of rotation to rotate to desired orientation - Vector3 axis = Vector3.UnitX; - float angle; - dR.GetAxisAngle(out axis, out angle); + dR.GetAxisAngle(out Vector3 axis, out float angle); axis = axis * currRot; // clamp strength to avoid overshoot @@ -5669,7 +5668,7 @@ namespace OpenSim.Region.Framework.Scenes } } - private object animsLock = new object(); + private readonly object animsLock = new object(); public Dictionary Animations = null; public Dictionary AnimationsNames = null; diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 1473ec453c..36ac5962a5 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -164,7 +164,7 @@ namespace OpenSim.Region.Framework.Scenes /// TODO: The child -> agent transition should be folded into LifecycleState and the CompleteMovement /// regulation done there. /// - private object m_completeMovementLock = new object(); + private readonly object m_completeMovementLock = new object(); // private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); private static readonly Array DIR_CONTROL_FLAGS = Enum.GetValues(typeof(Dir_ControlFlags)); @@ -197,7 +197,7 @@ namespace OpenSim.Region.Framework.Scenes private UUID m_currentParcelUUID = UUID.Zero; private bool m_previusParcelHide = false; private bool m_currentParcelHide = false; - private object parcelLock = new Object(); + private readonly object parcelLock = new Object(); public double ParcelDwellTickMS; public UUID currentParcelUUID @@ -374,7 +374,7 @@ namespace OpenSim.Region.Framework.Scenes private float m_lastRegionsDrawDistance; private Vector3 m_lastChildAgentUpdatePosition; private Vector3 m_lastChildAgentCheckPosition; - // private Vector3 m_lastChildAgentUpdateCamPosition; + // private Vector3 m_lastChildAgentUpdateCamPosition; private Vector3 m_lastCameraRayCastCam; private Vector3 m_lastCameraRayCastPos; @@ -433,7 +433,7 @@ namespace OpenSim.Region.Framework.Scenes private bool CameraConstraintActive; - private object m_collisionEventLock = new Object(); + private readonly object m_collisionEventLock = new Object(); private int m_movementAnimationUpdateCounter = 0; @@ -510,7 +510,7 @@ namespace OpenSim.Region.Framework.Scenes /// the very latest value and not using some cached version. Cannot make m_originRegionID itself volatite as /// it is a value type. /// - private object m_originRegionIDAccessLock = new object(); + private readonly object m_originRegionIDAccessLock = new object(); private AutoResetEvent m_updateAgentReceivedAfterTransferEvent = new AutoResetEvent(false); @@ -535,7 +535,7 @@ namespace OpenSim.Region.Framework.Scenes SL = 2 } - private LandingPointBehavior m_LandingPointBehavior = LandingPointBehavior.OS; + private readonly LandingPointBehavior m_LandingPointBehavior = LandingPointBehavior.OS; #region Properties @@ -1017,8 +1017,7 @@ namespace OpenSim.Region.Framework.Scenes m_log.Info("================ KnownRegions "+Scene.RegionInfo.RegionName+" ================"); foreach (KeyValuePair kvp in KnownRegions) { - uint x, y; - Util.RegionHandleToRegionLoc(kvp.Key, out x, out y); + Util.RegionHandleToRegionLoc(kvp.Key, out uint x, out uint y); m_log.Info(" >> "+x+", "+y+": "+kvp.Value); } } @@ -1831,8 +1830,7 @@ namespace OpenSim.Region.Framework.Scenes newvel.Y = 0; } - string reason; - if (!m_scene.TestLandRestrictions(UUID, out reason, ref newpos.X, ref newpos.Y)) + if (!m_scene.TestLandRestrictions(UUID, out string reason, ref newpos.X, ref newpos.Y)) return ; if (IsSatOnObject) @@ -2004,6 +2002,12 @@ namespace OpenSim.Region.Framework.Scenes { public int sizeX; public int sizeY; + + public spRegionSizeInfo(int x, int y) + { + sizeX = x; + sizeY = y; + } } private Dictionary m_knownChildRegionsSizeInfo = new Dictionary(); @@ -2013,12 +2017,8 @@ namespace OpenSim.Region.Framework.Scenes lock (m_knownChildRegions) { ulong regionHandle = region.RegionHandle; - m_knownChildRegions.Add(regionHandle,capsPath); - - spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); - sizeInfo.sizeX = region.RegionSizeX; - sizeInfo.sizeY = region.RegionSizeY; - m_knownChildRegionsSizeInfo[regionHandle] = sizeInfo; + m_knownChildRegions[regionHandle] = capsPath; + m_knownChildRegionsSizeInfo[regionHandle] = new spRegionSizeInfo(region.RegionSizeX, region.RegionSizeY); ; } } @@ -2026,18 +2026,7 @@ namespace OpenSim.Region.Framework.Scenes { lock (m_knownChildRegions) { - spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); - sizeInfo.sizeX = region.RegionSizeX; - sizeInfo.sizeY = region.RegionSizeY; - ulong regionHandle = region.RegionHandle; - - if (!m_knownChildRegionsSizeInfo.ContainsKey(regionHandle)) - { - m_knownChildRegionsSizeInfo.Add(regionHandle, sizeInfo); - - } - else - m_knownChildRegionsSizeInfo[regionHandle] = sizeInfo; + m_knownChildRegionsSizeInfo[region.RegionHandle] = new spRegionSizeInfo(region.RegionSizeX, region.RegionSizeY); } } @@ -2046,14 +2035,9 @@ namespace OpenSim.Region.Framework.Scenes lock (m_knownChildRegions) { m_knownChildRegionsSizeInfo.Clear(); - foreach (GridRegion region in regionsList) { - spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); - sizeInfo.sizeX = region.RegionSizeX; - sizeInfo.sizeY = region.RegionSizeY; - ulong regionHandle = region.RegionHandle; - m_knownChildRegionsSizeInfo.Add(regionHandle, sizeInfo); + m_knownChildRegionsSizeInfo[region.RegionHandle] = new spRegionSizeInfo(region.RegionSizeX, region.RegionSizeY); } } } @@ -2234,7 +2218,6 @@ namespace OpenSim.Region.Framework.Scenes // Make sure it's not a login agent. We don't want to wait for updates during login if (!IsNPC && !IsRealLogin(m_teleportFlags)) { - // Let's wait until UpdateAgent (called by departing region) is done if (!WaitForUpdateAgent(client)) // The sending region never sent the UpdateAgent data, we have to refuse @@ -4641,17 +4624,19 @@ namespace OpenSim.Region.Framework.Scenes m_lastChildAgentUpdateDrawDistance = DrawDistance; // m_lastChildAgentUpdateCamPosition = CameraPosition; - AgentPosition agentpos = new AgentPosition(); - agentpos.AgentID = new UUID(UUID.Guid); - agentpos.SessionID = ControllingClient.SessionId; - agentpos.Size = Appearance.AvatarSize; - agentpos.Center = CameraPosition; - agentpos.Far = DrawDistance; - agentpos.Position = AbsolutePosition; - agentpos.Velocity = Velocity; - agentpos.RegionHandle = RegionHandle; - agentpos.GodData = GodController.State(); - agentpos.Throttles = ControllingClient.GetThrottlesPacked(1); + AgentPosition agentpos = new AgentPosition() + { + AgentID = new UUID(UUID.Guid), + SessionID = ControllingClient.SessionId, + Size = Appearance.AvatarSize, + Center = CameraPosition, + Far = DrawDistance, + Position = AbsolutePosition, + Velocity = Velocity, + RegionHandle = RegionHandle, + GodData = GodController.State(), + Throttles = ControllingClient.GetThrottlesPacked(1) + }; // Let's get this out of the update loop Util.FireAndForget( @@ -4798,15 +4783,12 @@ namespace OpenSim.Region.Framework.Scenes if(newRegionHandle == curRegionHandle) //?? return byebyeRegions; - uint newRegionX, newRegionY; List knownRegions = KnownRegionHandles; m_log.DebugFormat( "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", knownRegions.Count, Scene.RegionInfo.RegionName); - Util.RegionHandleToRegionLoc(newRegionHandle, out newRegionX, out newRegionY); - uint x, y; - spRegionSizeInfo regInfo; + Util.RegionHandleToRegionLoc(newRegionHandle, out uint newRegionX, out uint newRegionY); foreach (ulong handle in knownRegions) { @@ -4826,8 +4808,8 @@ namespace OpenSim.Region.Framework.Scenes } else { - Util.RegionHandleToRegionLoc(handle, out x, out y); - if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out regInfo)) + Util.RegionHandleToRegionLoc(handle, out uint x, out uint y); + if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out spRegionSizeInfo regInfo)) { // if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY, // for now need to close all but first order bc RegionViewDistance it the target value not ours @@ -5159,11 +5141,13 @@ namespace OpenSim.Region.Framework.Scenes foreach (ControllerData c in cAgent.Controllers) { - ScriptControllers sc = new ScriptControllers(); - sc.objectID = c.ObjectID; - sc.itemID = c.ItemID; - sc.ignoreControls = (ScriptControlled)c.IgnoreControls; - sc.eventControls = (ScriptControlled)c.EventControls; + ScriptControllers sc = new ScriptControllers() + { + objectID = c.ObjectID, + itemID = c.ItemID, + ignoreControls = (ScriptControlled)c.IgnoreControls, + eventControls = (ScriptControlled)c.EventControls + }; scriptedcontrols[sc.itemID] = sc; IgnoredControls |= sc.ignoreControls; // this is not correct, aparently only last applied should count @@ -5938,12 +5922,14 @@ namespace OpenSim.Region.Framework.Scenes ControllingClient.SendTakeControls(controls, false, false); ControllingClient.SendTakeControls(controls, true, false); - ScriptControllers obj = new ScriptControllers(); - obj.ignoreControls = ScriptControlled.CONTROL_ZERO; - obj.eventControls = ScriptControlled.CONTROL_ZERO; + ScriptControllers obj = new ScriptControllers() + { + ignoreControls = ScriptControlled.CONTROL_ZERO, + eventControls = ScriptControlled.CONTROL_ZERO, + objectID = part.ParentGroup.UUID, + itemID = Script_item_UUID + }; - obj.objectID = part.ParentGroup.UUID; - obj.itemID = Script_item_UUID; if (pass_on == 0 && accept == 0) { IgnoredControls |= (ScriptControlled)controls; @@ -6072,12 +6058,11 @@ namespace OpenSim.Region.Framework.Scenes public void UnRegisterControlEventsToScript(uint Obj_localID, UUID Script_item_UUID) { - ScriptControllers takecontrols; SceneObjectPart part = m_scene.GetSceneObjectPart(Obj_localID); lock (scriptedcontrols) { - if (scriptedcontrols.TryGetValue(Script_item_UUID, out takecontrols)) + if (scriptedcontrols.TryGetValue(Script_item_UUID, out ScriptControllers takecontrols)) { ScriptControlled sctc = takecontrols.eventControls; @@ -6455,10 +6440,8 @@ namespace OpenSim.Region.Framework.Scenes // This is the behavior in OpenSim for a very long time, different from SL private bool CheckAndAdjustLandingPoint_OS(ref Vector3 pos, ref Vector3 lookat, ref bool positionChanged) { - string reason; - // Honor bans - if (!m_scene.TestLandRestrictions(UUID, out reason, ref pos.X, ref pos.Y)) + if (!m_scene.TestLandRestrictions(UUID, out string reason, ref pos.X, ref pos.Y)) return false; SceneObjectGroup telehub = null; @@ -6510,8 +6493,6 @@ namespace OpenSim.Region.Framework.Scenes // This is a behavior coming from AVN, somewhat mimicking SL private bool CheckAndAdjustLandingPoint_SL(ref Vector3 pos, ref Vector3 lookat, ref bool positionChanged) { - string reason; - // dont mess with gods if(IsGod) return true; @@ -6531,7 +6512,7 @@ namespace OpenSim.Region.Framework.Scenes } // Honor bans, actually we don't honour them - if (!m_scene.TestLandRestrictions(UUID, out reason, ref pos.X, ref pos.Y)) + if (!m_scene.TestLandRestrictions(UUID, out string reason, ref pos.X, ref pos.Y)) return false; ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); @@ -6564,52 +6545,56 @@ namespace OpenSim.Region.Framework.Scenes private DetectedObject CreateDetObject(SceneObjectPart obj) { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = obj.UUID; - detobj.nameStr = obj.Name; - detobj.ownerUUID = obj.OwnerID; - detobj.posVector = obj.AbsolutePosition; - detobj.rotQuat = obj.GetWorldRotation(); - detobj.velVector = obj.Velocity; - detobj.colliderType = 0; - detobj.groupUUID = obj.GroupID; - detobj.linkNumber = 0; - - return detobj; + return new DetectedObject() + { + keyUUID = obj.UUID, + nameStr = obj.Name, + ownerUUID = obj.OwnerID, + posVector = obj.AbsolutePosition, + rotQuat = obj.GetWorldRotation(), + velVector = obj.Velocity, + colliderType = 0, + groupUUID = obj.GroupID, + linkNumber = 0 + }; } private DetectedObject CreateDetObject(ScenePresence av) { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = av.UUID; - detobj.nameStr = av.ControllingClient.Name; - detobj.ownerUUID = av.UUID; - detobj.posVector = av.AbsolutePosition; - detobj.rotQuat = av.Rotation; - detobj.velVector = av.Velocity; - detobj.colliderType = av.IsNPC ? 0x20 : 0x1; // OpenSim\Region\ScriptEngine\Shared\Helpers.cs - if(av.IsSatOnObject) - detobj.colliderType |= 0x4; //passive - else if(detobj.velVector != Vector3.Zero) - detobj.colliderType |= 0x2; //active - detobj.groupUUID = av.ControllingClient.ActiveGroupId; - detobj.linkNumber = 0; + DetectedObject detobj = new DetectedObject() + { + keyUUID = av.UUID, + nameStr = av.ControllingClient.Name, + ownerUUID = av.UUID, + posVector = av.AbsolutePosition, + rotQuat = av.Rotation, + velVector = av.Velocity, + colliderType = av.IsNPC ? 0x20 : 0x1, // OpenSim\Region\ScriptEngine\Shared\Helpers.cs + groupUUID = av.ControllingClient.ActiveGroupId, + linkNumber = 0 + }; + if (av.IsSatOnObject) + detobj.colliderType |= 0x4; //passive + else if (detobj.velVector != Vector3.Zero) + detobj.colliderType |= 0x2; //active return detobj; } private DetectedObject CreateDetObjectForGround() { - DetectedObject detobj = new DetectedObject(); - detobj.keyUUID = UUID.Zero; - detobj.nameStr = ""; - detobj.ownerUUID = UUID.Zero; - detobj.posVector = AbsolutePosition; - detobj.rotQuat = Quaternion.Identity; - detobj.velVector = Vector3.Zero; - detobj.colliderType = 0; - detobj.groupUUID = UUID.Zero; - detobj.linkNumber = 0; + DetectedObject detobj = new DetectedObject() + { + keyUUID = UUID.Zero, + nameStr = "", + ownerUUID = UUID.Zero, + posVector = AbsolutePosition, + rotQuat = Quaternion.Identity, + velVector = Vector3.Zero, + colliderType = 0, + groupUUID = UUID.Zero, + linkNumber = 0 + }; return detobj; } @@ -6667,9 +6652,7 @@ namespace OpenSim.Region.Framework.Scenes if ((dest.RootPart.ScriptEvents & ev) != 0) { ColliderArgs LandCollidingMessage = new ColliderArgs(); - List colliding = new List(); - - colliding.Add(CreateDetObjectForGround()); + List colliding = new List(){CreateDetObjectForGround()}; LandCollidingMessage.Colliders = colliding; notify(dest.RootPart.LocalId, LandCollidingMessage); @@ -6711,10 +6694,12 @@ namespace OpenSim.Region.Framework.Scenes curcontact = coldata[id]; if (Math.Abs(curcontact.RelativeSpeed) > 0.2) { - soundinfo = new CollisionForSoundInfo(); - soundinfo.colliderID = id; - soundinfo.position = curcontact.Position; - soundinfo.relativeVel = curcontact.RelativeSpeed; + soundinfo = new CollisionForSoundInfo() + { + colliderID = id, + position = curcontact.Position, + relativeVel = curcontact.RelativeSpeed + }; soundinfolist.Add(soundinfo); } } @@ -7088,7 +7073,7 @@ namespace OpenSim.Region.Framework.Scenes private int m_bandwidthBurst = 20000; private int m_bytesControl; private double m_lastBandwithTime; - private object m_throttleLock = new object(); + private readonly object m_throttleLock = new object(); public bool CapCanSendAsset(int type, int size) {