aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
authorUbitUmarov2016-11-19 15:45:41 +0000
committerUbitUmarov2016-11-19 15:45:41 +0000
commit7cb3d583a97ac36f0c2ef5d6eadae28f26378fc4 (patch)
treea2ab69bce5eda122b119da082625449f92b4c3d3 /OpenSim/Region/Framework/Scenes/ScenePresence.cs
parentMerge branch 'master' into httptests (diff)
parentREST console v2. This is an incompatible protocol change. It degrades gracefu... (diff)
downloadopensim-SC-7cb3d583a97ac36f0c2ef5d6eadae28f26378fc4.zip
opensim-SC-7cb3d583a97ac36f0c2ef5d6eadae28f26378fc4.tar.gz
opensim-SC-7cb3d583a97ac36f0c2ef5d6eadae28f26378fc4.tar.bz2
opensim-SC-7cb3d583a97ac36f0c2ef5d6eadae28f26378fc4.tar.xz
merge conflits
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs62
1 files changed, 49 insertions, 13 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 3378ead..2cfdd94 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1104,7 +1104,7 @@ namespace OpenSim.Region.Framework.Scenes
1104 1104
1105 AdjustKnownSeeds(); 1105 AdjustKnownSeeds();
1106 1106
1107 RegisterToEvents(); 1107 RegisterToClientEvents();
1108 SetDirectionVectors(); 1108 SetDirectionVectors();
1109 1109
1110 Appearance = appearance; 1110 Appearance = appearance;
@@ -1171,7 +1171,7 @@ namespace OpenSim.Region.Framework.Scenes
1171 } 1171 }
1172 } 1172 }
1173 1173
1174 public void RegisterToEvents() 1174 public void RegisterToClientEvents()
1175 { 1175 {
1176 ControllingClient.OnCompleteMovementToRegion += CompleteMovement; 1176 ControllingClient.OnCompleteMovementToRegion += CompleteMovement;
1177 ControllingClient.OnAgentUpdate += HandleAgentUpdate; 1177 ControllingClient.OnAgentUpdate += HandleAgentUpdate;
@@ -1189,6 +1189,22 @@ namespace OpenSim.Region.Framework.Scenes
1189 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); 1189 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
1190 // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); 1190 // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
1191 } 1191 }
1192
1193 public void RemoveClientEvents()
1194 {
1195 ControllingClient.OnCompleteMovementToRegion -= CompleteMovement;
1196 ControllingClient.OnAgentUpdate -= HandleAgentUpdate;
1197 ControllingClient.OnAgentCameraUpdate -= HandleAgentCamerasUpdate;
1198 ControllingClient.OnAgentRequestSit -= HandleAgentRequestSit;
1199 ControllingClient.OnAgentSit -= HandleAgentSit;
1200 ControllingClient.OnSetAlwaysRun -= HandleSetAlwaysRun;
1201 ControllingClient.OnStartAnim -= HandleStartAnim;
1202 ControllingClient.OnStopAnim -= HandleStopAnim;
1203 ControllingClient.OnChangeAnim -= avnHandleChangeAnim;
1204 ControllingClient.OnForceReleaseControls -= HandleForceReleaseControls;
1205 ControllingClient.OnAutoPilotGo -= MoveToTarget;
1206 ControllingClient.OnUpdateThrottles -= RaiseUpdateThrottles;
1207 }
1192 1208
1193 private void SetDirectionVectors() 1209 private void SetDirectionVectors()
1194 { 1210 {
@@ -2318,7 +2334,7 @@ namespace OpenSim.Region.Framework.Scenes
2318 Vector3 tocam = CameraPosition - posAdjusted; 2334 Vector3 tocam = CameraPosition - posAdjusted;
2319 2335
2320 float distTocamlen = tocam.LengthSquared(); 2336 float distTocamlen = tocam.LengthSquared();
2321 if (distTocamlen > 0.08f && distTocamlen < 400) 2337 if (distTocamlen > 0.01f && distTocamlen < 400)
2322 { 2338 {
2323 distTocamlen = (float)Math.Sqrt(distTocamlen); 2339 distTocamlen = (float)Math.Sqrt(distTocamlen);
2324 tocam *= (1.0f / distTocamlen); 2340 tocam *= (1.0f / distTocamlen);
@@ -4378,16 +4394,12 @@ namespace OpenSim.Region.Framework.Scenes
4378 m_log.DebugFormat( 4394 m_log.DebugFormat(
4379 "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", 4395 "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}",
4380 knownRegions.Count, Scene.RegionInfo.RegionName); 4396 knownRegions.Count, Scene.RegionInfo.RegionName);
4381 //DumpKnownRegions();
4382 4397
4383 Util.RegionHandleToRegionLoc(newRegionHandle, out newRegionX, out newRegionY); 4398 Util.RegionHandleToRegionLoc(newRegionHandle, out newRegionX, out newRegionY);
4384 4399
4385 uint x, y; 4400 uint x, y;
4386 spRegionSizeInfo regInfo; 4401 spRegionSizeInfo regInfo;
4387 4402
4388 // this should not be here
4389 IEventQueue eventQueue = Scene.RequestModuleInterface<IEventQueue>();
4390
4391 foreach (ulong handle in knownRegions) 4403 foreach (ulong handle in knownRegions)
4392 { 4404 {
4393 // Don't close the agent on this region yet 4405 // Don't close the agent on this region yet
@@ -4400,16 +4412,10 @@ namespace OpenSim.Region.Framework.Scenes
4400 Util.RegionHandleToRegionLoc(handle, out x, out y); 4412 Util.RegionHandleToRegionLoc(handle, out x, out y);
4401 if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out regInfo)) 4413 if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out regInfo))
4402 { 4414 {
4403
4404 // m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX)));
4405 // m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY)));
4406 if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY, 4415 if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY,
4407 regInfo.sizeX, regInfo.sizeY, newRegionSizeX, newRegionSizeY)) 4416 regInfo.sizeX, regInfo.sizeY, newRegionSizeX, newRegionSizeY))
4408 { 4417 {
4409 byebyeRegions.Add(handle); 4418 byebyeRegions.Add(handle);
4410 // this should not be here
4411// if(eventQueue != null)
4412/// eventQueue.DisableSimulator(handle,UUID);
4413 } 4419 }
4414 } 4420 }
4415 else 4421 else
@@ -4445,6 +4451,32 @@ namespace OpenSim.Region.Framework.Scenes
4445 } 4451 }
4446 } 4452 }
4447 4453
4454 public void closeAllChildAgents()
4455 {
4456 List<ulong> byebyeRegions = new List<ulong>();
4457 List<ulong> knownRegions = KnownRegionHandles;
4458 foreach (ulong handle in knownRegions)
4459 {
4460 if (handle != Scene.RegionInfo.RegionHandle)
4461 {
4462 byebyeRegions.Add(handle);
4463 RemoveNeighbourRegion(handle);
4464 Scene.CapsModule.DropChildSeed(UUID, handle);
4465 }
4466 }
4467
4468 if (byebyeRegions.Count > 0)
4469 {
4470 m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents");
4471
4472 AgentCircuitData acd = Scene.AuthenticateHandler.GetAgentCircuitData(UUID);
4473 string auth = string.Empty;
4474 if (acd != null)
4475 auth = acd.SessionID.ToString();
4476 m_scene.SceneGridService.SendCloseChildAgentConnections(ControllingClient.AgentId, auth, byebyeRegions);
4477 }
4478 }
4479
4448 #endregion 4480 #endregion
4449 4481
4450 /// <summary> 4482 /// <summary>
@@ -5000,12 +5032,16 @@ namespace OpenSim.Region.Framework.Scenes
5000 RemoveFromPhysicalScene(); 5032 RemoveFromPhysicalScene();
5001 5033
5002 m_scene.EventManager.OnRegionHeartbeatEnd -= RegionHeartbeatEnd; 5034 m_scene.EventManager.OnRegionHeartbeatEnd -= RegionHeartbeatEnd;
5035 RemoveClientEvents();
5003 5036
5004// if (Animator != null) 5037// if (Animator != null)
5005// Animator.Close(); 5038// Animator.Close();
5006 Animator = null; 5039 Animator = null;
5007 5040
5041 scriptedcontrols.Clear();
5042 ControllingClient = null;
5008 LifecycleState = ScenePresenceState.Removed; 5043 LifecycleState = ScenePresenceState.Removed;
5044 IsDeleted = true;
5009 } 5045 }
5010 5046
5011 public void AddAttachment(SceneObjectGroup gobj) 5047 public void AddAttachment(SceneObjectGroup gobj)