aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorUbitUmarov2017-01-05 22:27:53 +0000
committerUbitUmarov2017-01-05 22:27:53 +0000
commit05902d2958303a5280e8d076c3e467e8ccf46a97 (patch)
tree9d79fe4cb3257f5399341f320d23c4b71c353b81 /OpenSim/Region/Framework
parentallow initial automatic level to be changed by request. Since viewers still d... (diff)
downloadopensim-SC-05902d2958303a5280e8d076c3e467e8ccf46a97.zip
opensim-SC-05902d2958303a5280e8d076c3e467e8ccf46a97.tar.gz
opensim-SC-05902d2958303a5280e8d076c3e467e8ccf46a97.tar.bz2
opensim-SC-05902d2958303a5280e8d076c3e467e8ccf46a97.tar.xz
inform viewers of current godlevel; put back a small delay on teleport arrivel to give time to viewers to sync
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs45
1 files changed, 34 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 5b86921..58af347 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1056,6 +1056,18 @@ namespace OpenSim.Region.Framework.Scenes
1056 1056
1057 #region Constructor(s) 1057 #region Constructor(s)
1058 1058
1059 private void SetAutoGod()
1060 {
1061 if(!isNPC && m_scene.Permissions.IsGod(m_uuid))
1062 {
1063 m_godLevel = 200;
1064 if(m_godLevel < UserLevel)
1065 m_godLevel = UserLevel;
1066 else
1067 m_godLevel = 0;
1068 }
1069 }
1070
1059 public ScenePresence( 1071 public ScenePresence(
1060 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type) 1072 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type)
1061 { 1073 {
@@ -2121,18 +2133,15 @@ namespace OpenSim.Region.Framework.Scenes
2121 2133
2122 m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); 2134 m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2123 2135
2124 2136 if(m_teleportFlags > 0)
2125 if(m_teleportFlags > 0) //sanity check 2137 {
2126 gotCrossUpdate = false; 2138 gotCrossUpdate = false; // sanity check
2139 Thread.Sleep(500); // let viewers catch us
2140 }
2127 2141
2128 if(!gotCrossUpdate) 2142 if(!gotCrossUpdate)
2129 RotateToLookAt(look); 2143 RotateToLookAt(look);
2130 2144
2131
2132// start sending terrain patchs
2133 if (!gotCrossUpdate && !isNPC)
2134 Scene.SendLayerData(ControllingClient);
2135
2136 // HG 2145 // HG
2137 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0; 2146 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0;
2138 if(isHGTP) 2147 if(isHGTP)
@@ -2141,6 +2150,14 @@ namespace OpenSim.Region.Framework.Scenes
2141 m_log.DebugFormat("[CompleteMovement] HG"); 2150 m_log.DebugFormat("[CompleteMovement] HG");
2142 } 2151 }
2143 2152
2153 if(!IsChildAgent && !isNPC)
2154
2155 ControllingClient.SendAdminResponse(UUID.Zero, (uint)GodLevel);
2156
2157// start sending terrain patchs
2158 if (!gotCrossUpdate && !isNPC)
2159 Scene.SendLayerData(ControllingClient);
2160
2144 m_previusParcelHide = false; 2161 m_previusParcelHide = false;
2145 m_previusParcelUUID = UUID.Zero; 2162 m_previusParcelUUID = UUID.Zero;
2146 m_currentParcelHide = false; 2163 m_currentParcelHide = false;
@@ -4580,7 +4597,9 @@ namespace OpenSim.Region.Framework.Scenes
4580 m_pos = cAgentData.Position + offset; 4597 m_pos = cAgentData.Position + offset;
4581 4598
4582 CameraPosition = cAgentData.Center + offset; 4599 CameraPosition = cAgentData.Center + offset;
4583// if(!m_scene.AutomaticGodsOption) 4600 if(m_scene.AutomaticGodsOption)
4601 SetAutoGod();
4602 else
4584 { 4603 {
4585 if(cAgentData.GodLevel >= 200 && m_scene.Permissions.IsGod(m_uuid)) 4604 if(cAgentData.GodLevel >= 200 && m_scene.Permissions.IsGod(m_uuid))
4586 GodLevel = cAgentData.GodLevel; 4605 GodLevel = cAgentData.GodLevel;
@@ -4646,7 +4665,9 @@ namespace OpenSim.Region.Framework.Scenes
4646 cAgent.HeadRotation = m_headrotation; 4665 cAgent.HeadRotation = m_headrotation;
4647 cAgent.BodyRotation = Rotation; 4666 cAgent.BodyRotation = Rotation;
4648 cAgent.ControlFlags = (uint)m_AgentControlFlags; 4667 cAgent.ControlFlags = (uint)m_AgentControlFlags;
4649// if(!m_scene.AutomaticGodsOption) 4668 if(m_scene.AutomaticGodsOption)
4669 SetAutoGod();
4670 else
4650 { 4671 {
4651 if (GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID)) 4672 if (GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID))
4652 cAgent.GodLevel = (byte)GodLevel; 4673 cAgent.GodLevel = (byte)GodLevel;
@@ -4750,7 +4771,9 @@ namespace OpenSim.Region.Framework.Scenes
4750 Rotation = cAgent.BodyRotation; 4771 Rotation = cAgent.BodyRotation;
4751 m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; 4772 m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags;
4752 4773
4753// if(!m_scene.AutomaticGodsOption) 4774 if(m_scene.AutomaticGodsOption)
4775 SetAutoGod();
4776 else
4754 { 4777 {
4755 if (cAgent.GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID)) 4778 if (cAgent.GodLevel >= 200 && m_scene.Permissions.IsGod(cAgent.AgentID))
4756 GodLevel = cAgent.GodLevel; 4779 GodLevel = cAgent.GodLevel;