aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2014-11-06 19:03:25 +0000
committerUbitUmarov2014-11-06 19:03:25 +0000
commitead78764abfe3d91f79b55ec200bd0d5e8ca2151 (patch)
tree5f1cb7c178e908b74a3e0e661e67184e54d93f15
parentBUG fix : fix a very silly bug uint in place of ulong :( (diff)
downloadopensim-SC-ead78764abfe3d91f79b55ec200bd0d5e8ca2151.zip
opensim-SC-ead78764abfe3d91f79b55ec200bd0d5e8ca2151.tar.gz
opensim-SC-ead78764abfe3d91f79b55ec200bd0d5e8ca2151.tar.bz2
opensim-SC-ead78764abfe3d91f79b55ec200bd0d5e8ca2151.tar.xz
allow drawdistance to change between 32 and MaxDrawDistance, configurable
value default to 256, so should have no effect. Next steps needed: reduce client udp Throttles with distance, update childreen connections with significat movement and view range changes, Make disconnect be delayed in time, make disconnects be receiving region action not sender on region changes. Allow distance less than 256 to only connect to visible regions, even none. Make this be relative to camera and not agent position or region centers as it is now.
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs4
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs14
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs15
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs18
4 files changed, 34 insertions, 17 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 4b15e9f..b9646c7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -5765,8 +5765,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5765 || (x.State != m_thisAgentUpdateArgs.State) // significant if Stats changed 5765 || (x.State != m_thisAgentUpdateArgs.State) // significant if Stats changed
5766 || (qdelta1 < QDELTABody) // significant if body rotation above(below cos) threshold 5766 || (qdelta1 < QDELTABody) // significant if body rotation above(below cos) threshold
5767 // Ignoring head rotation altogether, because it's not being used for anything interesting up the stack 5767 // Ignoring head rotation altogether, because it's not being used for anything interesting up the stack
5768 // || (qdelta2 < QDELTAHead) // significant if head rotation above(below cos) threshold 5768 // || (qdelta2 < QDELTAHead) // significant if head rotation above(below cos) threshold
5769 || (x.Far != m_thisAgentUpdateArgs.Far) // significant if far distance changed 5769 || (Math.Abs(x.Far - m_thisAgentUpdateArgs.Far) >= 32) // significant if far distance changed
5770 ; 5770 ;
5771 //if (movementSignificant) 5771 //if (movementSignificant)
5772 //{ 5772 //{
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 274eb7f..b32a169 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -2352,11 +2352,17 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
2352 { 2352 {
2353 int dd = avatar.DrawDistance < Constants.RegionSize ? (int)Constants.RegionSize : (int)avatar.DrawDistance; 2353 int dd = avatar.DrawDistance < Constants.RegionSize ? (int)Constants.RegionSize : (int)avatar.DrawDistance;
2354 2354
2355 int startX = (int)pRegionLocX * (int)Constants.RegionSize - dd + (int)(Constants.RegionSize/2); 2355 dd--;
2356 int startY = (int)pRegionLocY * (int)Constants.RegionSize - dd + (int)(Constants.RegionSize/2);
2357 2356
2358 int endX = (int)pRegionLocX * (int)Constants.RegionSize + dd + (int)(Constants.RegionSize/2); 2357 // region center
2359 int endY = (int)pRegionLocY * (int)Constants.RegionSize + dd + (int)(Constants.RegionSize/2); 2358 int endX = (int)pRegionLocX * (int)Constants.RegionSize + (int)(Constants.RegionSize / 2);
2359 int endY = (int)pRegionLocY * (int)Constants.RegionSize + (int)(Constants.RegionSize / 2);
2360
2361 int startX = endX - dd;
2362 int startY = endY - dd;
2363
2364 endX += dd;
2365 endY += dd;
2360 2366
2361 if (startX < 0) startX = 0; 2367 if (startX < 0) startX = 0;
2362 if (startY < 0) startY = 0; 2368 if (startY < 0) startY = 0;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 9e2f52c..eb34f55 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -227,6 +227,13 @@ namespace OpenSim.Region.Framework.Scenes
227 get { return m_defaultDrawDistance; } 227 get { return m_defaultDrawDistance; }
228 } 228 }
229 229
230// protected float m_maxDrawDistance = 512.0f;
231 protected float m_maxDrawDistance = 256.0f;
232 public float MaxDrawDistance
233 {
234 get { return m_maxDrawDistance; }
235 }
236
230 private List<string> m_AllowedViewers = new List<string>(); 237 private List<string> m_AllowedViewers = new List<string>();
231 private List<string> m_BannedViewers = new List<string>(); 238 private List<string> m_BannedViewers = new List<string>();
232 239
@@ -862,7 +869,8 @@ namespace OpenSim.Region.Framework.Scenes
862 869
863 StartDisabled = startupConfig.GetBoolean("StartDisabled", false); 870 StartDisabled = startupConfig.GetBoolean("StartDisabled", false);
864 871
865 m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance",m_defaultDrawDistance); 872 m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance", m_defaultDrawDistance);
873 m_defaultDrawDistance = startupConfig.GetFloat("MaxDrawDistance", m_maxDrawDistance);
866 UseBackup = startupConfig.GetBoolean("UseSceneBackup", UseBackup); 874 UseBackup = startupConfig.GetBoolean("UseSceneBackup", UseBackup);
867 if (!UseBackup) 875 if (!UseBackup)
868 m_log.InfoFormat("[SCENE]: Backup has been disabled for {0}", RegionInfo.RegionName); 876 m_log.InfoFormat("[SCENE]: Backup has been disabled for {0}", RegionInfo.RegionName);
@@ -1069,7 +1077,7 @@ namespace OpenSim.Region.Framework.Scenes
1069 1077
1070 BordersLocked = true; 1078 BordersLocked = true;
1071 Border northBorder = new Border(); 1079 Border northBorder = new Border();
1072 northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, (int)Constants.RegionSize); //<--- 1080 northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, RegionInfo.RegionSizeY); //<---
1073 northBorder.CrossDirection = Cardinals.N; 1081 northBorder.CrossDirection = Cardinals.N;
1074 NorthBorders.Add(northBorder); 1082 NorthBorders.Add(northBorder);
1075 1083
@@ -1079,7 +1087,7 @@ namespace OpenSim.Region.Framework.Scenes
1079 SouthBorders.Add(southBorder); 1087 SouthBorders.Add(southBorder);
1080 1088
1081 Border eastBorder = new Border(); 1089 Border eastBorder = new Border();
1082 eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, (int)Constants.RegionSize); //<--- 1090 eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, RegionInfo.RegionSizeX); //<---
1083 eastBorder.CrossDirection = Cardinals.E; 1091 eastBorder.CrossDirection = Cardinals.E;
1084 EastBorders.Add(eastBorder); 1092 EastBorders.Add(eastBorder);
1085 1093
@@ -1092,6 +1100,7 @@ namespace OpenSim.Region.Framework.Scenes
1092 m_eventManager = new EventManager(); 1100 m_eventManager = new EventManager();
1093 1101
1094 m_permissions = new ScenePermissions(this); 1102 m_permissions = new ScenePermissions(this);
1103
1095 } 1104 }
1096 1105
1097 #endregion 1106 #endregion
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index c58847b..6a9e0ca 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2061,8 +2061,10 @@ namespace OpenSim.Region.Framework.Scenes
2061 // When we get to the point of re-computing neighbors everytime this 2061 // When we get to the point of re-computing neighbors everytime this
2062 // changes, then start using the agent's drawdistance rather than the 2062 // changes, then start using the agent's drawdistance rather than the
2063 // region's draw distance. 2063 // region's draw distance.
2064 // DrawDistance = agentData.Far; 2064
2065 DrawDistance = Scene.DefaultDrawDistance; 2065 DrawDistance = Util.Clamp(agentData.Far, 32, m_scene.MaxDrawDistance);
2066
2067// DrawDistance = Scene.DefaultDrawDistance;
2066 2068
2067 m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0; 2069 m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0;
2068 m_leftButtonDown = (flags & AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0; 2070 m_leftButtonDown = (flags & AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0;
@@ -2417,8 +2419,7 @@ namespace OpenSim.Region.Framework.Scenes
2417 // When we get to the point of re-computing neighbors everytime this 2419 // When we get to the point of re-computing neighbors everytime this
2418 // changes, then start using the agent's drawdistance rather than the 2420 // changes, then start using the agent's drawdistance rather than the
2419 // region's draw distance. 2421 // region's draw distance.
2420 // DrawDistance = agentData.Far; 2422 DrawDistance = Util.Clamp(agentData.Far, 32, m_scene.MaxDrawDistance);
2421 DrawDistance = Scene.DefaultDrawDistance;
2422 2423
2423 // Check if Client has camera in 'follow cam' or 'build' mode. 2424 // Check if Client has camera in 'follow cam' or 'build' mode.
2424 Vector3 camdif = (Vector3.One * Rotation - Vector3.One * CameraRotation); 2425 Vector3 camdif = (Vector3.One * Rotation - Vector3.One * CameraRotation);
@@ -4011,6 +4012,7 @@ namespace OpenSim.Region.Framework.Scenes
4011 foreach (ulong handle in byebyeRegions) 4012 foreach (ulong handle in byebyeRegions)
4012 { 4013 {
4013 RemoveNeighbourRegion(handle); 4014 RemoveNeighbourRegion(handle);
4015 Scene.CapsModule.DropChildSeed(UUID, handle);
4014 } 4016 }
4015 } 4017 }
4016 4018
@@ -4087,8 +4089,8 @@ namespace OpenSim.Region.Framework.Scenes
4087 // When we get to the point of re-computing neighbors everytime this 4089 // When we get to the point of re-computing neighbors everytime this
4088 // changes, then start using the agent's drawdistance rather than the 4090 // changes, then start using the agent's drawdistance rather than the
4089 // region's draw distance. 4091 // region's draw distance.
4090 // DrawDistance = cAgentData.Far; 4092 DrawDistance = cAgentData.Far;
4091 DrawDistance = Scene.DefaultDrawDistance; 4093// DrawDistance = Scene.DefaultDrawDistance;
4092 4094
4093 if (cAgentData.Position != marker) // UGH!! 4095 if (cAgentData.Position != marker) // UGH!!
4094 m_pos = cAgentData.Position + offset; 4096 m_pos = cAgentData.Position + offset;
@@ -4204,8 +4206,8 @@ namespace OpenSim.Region.Framework.Scenes
4204 // When we get to the point of re-computing neighbors everytime this 4206 // When we get to the point of re-computing neighbors everytime this
4205 // changes, then start using the agent's drawdistance rather than the 4207 // changes, then start using the agent's drawdistance rather than the
4206 // region's draw distance. 4208 // region's draw distance.
4207 // DrawDistance = cAgent.Far; 4209 DrawDistance = cAgent.Far;
4208 DrawDistance = Scene.DefaultDrawDistance; 4210 //DrawDistance = Scene.DefaultDrawDistance;
4209 4211
4210 if (cAgent.ChildrenCapSeeds != null && cAgent.ChildrenCapSeeds.Count > 0) 4212 if (cAgent.ChildrenCapSeeds != null && cAgent.ChildrenCapSeeds.Count > 0)
4211 { 4213 {