diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 1204020..6984d8f 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -227,6 +227,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
227 | get { return m_innerScene.RestorePresences; } | 227 | get { return m_innerScene.RestorePresences; } |
228 | set { m_innerScene.RestorePresences = value; } | 228 | set { m_innerScene.RestorePresences = value; } |
229 | } | 229 | } |
230 | |||
230 | #endregion | 231 | #endregion |
231 | 232 | ||
232 | #region Constructors | 233 | #region Constructors |
@@ -395,15 +396,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
395 | try | 396 | try |
396 | { | 397 | { |
397 | ForEachScenePresence(delegate(ScenePresence agent) | 398 | ForEachScenePresence(delegate(ScenePresence agent) |
399 | { | ||
400 | // If agent is a root agent. | ||
401 | if (!agent.IsChildAgent) | ||
398 | { | 402 | { |
399 | // If agent is a root agent. | 403 | //agent.ControllingClient.new |
400 | if (!agent.IsChildAgent) | 404 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); |
401 | { | 405 | InformClientOfNeighbor(agent, otherRegion); |
402 | //agent.ControllingClient.new | ||
403 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); | ||
404 | InformClientOfNeighbor(agent, otherRegion); | ||
405 | } | ||
406 | } | 406 | } |
407 | } | ||
407 | ); | 408 | ); |
408 | } | 409 | } |
409 | catch (NullReferenceException) | 410 | catch (NullReferenceException) |
@@ -463,7 +464,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
463 | { | 464 | { |
464 | if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7) | 465 | if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7) |
465 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + | 466 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + |
466 | ((8 - m_RestartTimerCounter) * 15) + " seconds"); | 467 | ((8 - m_RestartTimerCounter) * 15) + " seconds"); |
467 | 468 | ||
468 | // SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter)*15) + | 469 | // SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter)*15) + |
469 | //" seconds"); | 470 | //" seconds"); |
@@ -505,15 +506,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
505 | try | 506 | try |
506 | { | 507 | { |
507 | ForEachScenePresence(delegate(ScenePresence agent) | 508 | ForEachScenePresence(delegate(ScenePresence agent) |
509 | { | ||
510 | // If agent is a root agent. | ||
511 | if (!agent.IsChildAgent) | ||
508 | { | 512 | { |
509 | // If agent is a root agent. | 513 | //agent.ControllingClient.new |
510 | if (!agent.IsChildAgent) | 514 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); |
511 | { | 515 | InformClientOfNeighbor(agent, region); |
512 | //agent.ControllingClient.new | ||
513 | //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); | ||
514 | InformClientOfNeighbor(agent, region); | ||
515 | } | ||
516 | } | 516 | } |
517 | } | ||
517 | ); | 518 | ); |
518 | } | 519 | } |
519 | catch (NullReferenceException) | 520 | catch (NullReferenceException) |
@@ -580,16 +581,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
580 | m_log.Warn("[SCENE]: Closing down the single simulator: " + RegionInfo.RegionName); | 581 | m_log.Warn("[SCENE]: Closing down the single simulator: " + RegionInfo.RegionName); |
581 | // Kick all ROOT agents with the message, 'The simulator is going down' | 582 | // Kick all ROOT agents with the message, 'The simulator is going down' |
582 | ForEachScenePresence(delegate(ScenePresence avatar) | 583 | ForEachScenePresence(delegate(ScenePresence avatar) |
583 | { | 584 | { |
584 | if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) | 585 | if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) |
585 | avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); | 586 | avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); |
586 | 587 | ||
587 | if (!avatar.IsChildAgent) | 588 | if (!avatar.IsChildAgent) |
588 | avatar.ControllingClient.Kick("The simulator is going down."); | 589 | avatar.ControllingClient.Kick("The simulator is going down."); |
589 | 590 | ||
590 | avatar.ControllingClient.OutPacket(PacketPool.Instance.GetPacket(libsecondlife.Packets.PacketType.DisableSimulator), | 591 | avatar.ControllingClient.OutPacket(PacketPool.Instance.GetPacket(libsecondlife.Packets.PacketType.DisableSimulator), |
591 | ThrottleOutPacketType.Task); | 592 | ThrottleOutPacketType.Task); |
592 | }); | 593 | }); |
593 | 594 | ||
594 | // Wait here, or the kick messages won't actually get to the agents before the scene terminates. | 595 | // Wait here, or the kick messages won't actually get to the agents before the scene terminates. |
595 | Thread.Sleep(500); | 596 | Thread.Sleep(500); |
@@ -793,7 +794,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
793 | { | 794 | { |
794 | tmpval = tmpval - (tmpval - 1.0f); | 795 | tmpval = tmpval - (tmpval - 1.0f); |
795 | } | 796 | } |
796 | m_timedilation = tmpval; | 797 | m_timedilation = tmpval; |
797 | 798 | ||
798 | m_lastupdate = DateTime.Now; | 799 | m_lastupdate = DateTime.Now; |
799 | } | 800 | } |
@@ -884,9 +885,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
884 | { | 885 | { |
885 | List<MapBlockData> mapBlocks = | 886 | List<MapBlockData> mapBlocks = |
886 | m_sceneGridService.RequestNeighbourMapBlocks((int)(RegionInfo.RegionLocX - 9), | 887 | m_sceneGridService.RequestNeighbourMapBlocks((int)(RegionInfo.RegionLocX - 9), |
887 | (int)(RegionInfo.RegionLocY - 9), | 888 | (int)(RegionInfo.RegionLocY - 9), |
888 | (int)(RegionInfo.RegionLocX + 9), | 889 | (int)(RegionInfo.RegionLocX + 9), |
889 | (int)(RegionInfo.RegionLocY + 9)); | 890 | (int)(RegionInfo.RegionLocY + 9)); |
890 | List<AssetBase> textures = new List<AssetBase>(); | 891 | List<AssetBase> textures = new List<AssetBase>(); |
891 | List<Image> bitImages = new List<Image>(); | 892 | List<Image> bitImages = new List<Image>(); |
892 | 893 | ||
@@ -1048,7 +1049,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1048 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); | 1049 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); |
1049 | } | 1050 | } |
1050 | 1051 | ||
1051 | |||
1052 | /// <summary> | 1052 | /// <summary> |
1053 | /// Returns a new unallocated primitive ID | 1053 | /// Returns a new unallocated primitive ID |
1054 | /// </summary> | 1054 | /// </summary> |
@@ -1134,7 +1134,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1134 | } | 1134 | } |
1135 | 1135 | ||
1136 | public SceneObjectGroup AddTree(LLVector3 scale, LLQuaternion rotation, LLVector3 position, | 1136 | public SceneObjectGroup AddTree(LLVector3 scale, LLQuaternion rotation, LLVector3 position, |
1137 | Tree treeType, bool newTree) | 1137 | Tree treeType, bool newTree) |
1138 | { | 1138 | { |
1139 | LLUUID uuid = this.RegionInfo.MasterAvatarAssignedUUID; | 1139 | LLUUID uuid = this.RegionInfo.MasterAvatarAssignedUUID; |
1140 | PrimitiveBaseShape treeShape = new PrimitiveBaseShape(); | 1140 | PrimitiveBaseShape treeShape = new PrimitiveBaseShape(); |
@@ -1228,7 +1228,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1228 | { | 1228 | { |
1229 | pos.Y = ((pos.Y - Constants.RegionSize)); | 1229 | pos.Y = ((pos.Y - Constants.RegionSize)); |
1230 | newRegionHandle = Util.UIntsToLong((uint)(thisx * Constants.RegionSize), (uint)((thisy + 1) * Constants.RegionSize)); | 1230 | newRegionHandle = Util.UIntsToLong((uint)(thisx * Constants.RegionSize), (uint)((thisy + 1) * Constants.RegionSize)); |
1231 | // y + 1 | 1231 | // y + 1 |
1232 | } | 1232 | } |
1233 | else if (position.Y < -1f) | 1233 | else if (position.Y < -1f) |
1234 | { | 1234 | { |
@@ -1269,12 +1269,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
1269 | } | 1269 | } |
1270 | } | 1270 | } |
1271 | } | 1271 | } |
1272 | |||
1272 | public void IncomingInterRegionPrimGroup(ulong regionHandle, LLUUID primID, string objXMLData) | 1273 | public void IncomingInterRegionPrimGroup(ulong regionHandle, LLUUID primID, string objXMLData) |
1273 | { | 1274 | { |
1274 | m_log.Warn("{[INTERREGION]: A new prim arrived from a neighbor"); | 1275 | m_log.Warn("{[INTERREGION]: A new prim arrived from a neighbor"); |
1275 | m_sceneXmlLoader.LoadGroupFromXml2String(objXMLData); | 1276 | m_sceneXmlLoader.LoadGroupFromXml2String(objXMLData); |
1276 | 1277 | ||
1277 | } | 1278 | } |
1279 | |||
1278 | #endregion | 1280 | #endregion |
1279 | 1281 | ||
1280 | #region Add/Remove Avatar Methods | 1282 | #region Add/Remove Avatar Methods |
@@ -1301,11 +1303,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
1301 | 1303 | ||
1302 | m_innerScene.AddScenePresence(presence); | 1304 | m_innerScene.AddScenePresence(presence); |
1303 | 1305 | ||
1304 | lock (m_restorePresences) | 1306 | lock (m_restorePresences) |
1305 | { | 1307 | { |
1306 | Monitor.PulseAll(m_restorePresences); | 1308 | Monitor.PulseAll(m_restorePresences); |
1307 | } | 1309 | } |
1308 | } | 1310 | } |
1309 | else | 1311 | else |
1310 | { | 1312 | { |
1311 | m_log.Info("[REGION]: Add New Scene Presence"); | 1313 | m_log.Info("[REGION]: Add New Scene Presence"); |
@@ -1382,8 +1384,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1382 | client.OnMoveInventoryItem += MoveInventoryItem; | 1384 | client.OnMoveInventoryItem += MoveInventoryItem; |
1383 | client.OnRemoveInventoryItem += RemoveInventoryItem; | 1385 | client.OnRemoveInventoryItem += RemoveInventoryItem; |
1384 | client.OnRemoveInventoryFolder += RemoveInventoryFolder; | 1386 | client.OnRemoveInventoryFolder += RemoveInventoryFolder; |
1385 | // client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest; | 1387 | // client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest; |
1386 | // client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer; | 1388 | // client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer; |
1387 | client.OnRezScript += RezScript; | 1389 | client.OnRezScript += RezScript; |
1388 | 1390 | ||
1389 | client.OnRequestTaskInventory += RequestTaskInventory; | 1391 | client.OnRequestTaskInventory += RequestTaskInventory; |
@@ -1452,8 +1454,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1452 | { | 1454 | { |
1453 | m_innerScene.removeUserCount(true); | 1455 | m_innerScene.removeUserCount(true); |
1454 | m_sceneGridService.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, | 1456 | m_sceneGridService.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, |
1455 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, | 1457 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, |
1456 | avatar.AbsolutePosition.Z); | 1458 | avatar.AbsolutePosition.Z); |
1457 | List<ulong> childknownRegions = new List<ulong>(); | 1459 | List<ulong> childknownRegions = new List<ulong>(); |
1458 | List<ulong> ckn = avatar.GetKnownRegionList(); | 1460 | List<ulong> ckn = avatar.GetKnownRegionList(); |
1459 | for (int i = 0; i < ckn.Count; i++) | 1461 | for (int i = 0; i < ckn.Count; i++) |
@@ -1477,16 +1479,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
1477 | } | 1479 | } |
1478 | m_eventManager.TriggerOnRemovePresence(agentID); | 1480 | m_eventManager.TriggerOnRemovePresence(agentID); |
1479 | Broadcast(delegate(IClientAPI client) | 1481 | Broadcast(delegate(IClientAPI client) |
1482 | { | ||
1483 | try | ||
1484 | { | ||
1485 | client.SendKillObject(avatar.RegionHandle, avatar.LocalId); | ||
1486 | } | ||
1487 | catch (System.NullReferenceException) | ||
1480 | { | 1488 | { |
1481 | try | 1489 | //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. |
1482 | { | 1490 | } |
1483 | client.SendKillObject(avatar.RegionHandle, avatar.LocalId); | 1491 | }); |
1484 | } | ||
1485 | catch (System.NullReferenceException) | ||
1486 | { | ||
1487 | //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. | ||
1488 | } | ||
1489 | }); | ||
1490 | 1492 | ||
1491 | ForEachScenePresence( | 1493 | ForEachScenePresence( |
1492 | delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); | 1494 | delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); |
@@ -1903,8 +1905,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1903 | } | 1905 | } |
1904 | } | 1906 | } |
1905 | 1907 | ||
1906 | |||
1907 | |||
1908 | #endregion | 1908 | #endregion |
1909 | 1909 | ||
1910 | #region Other Methods | 1910 | #region Other Methods |
@@ -2152,10 +2152,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
2152 | { | 2152 | { |
2153 | 2153 | ||
2154 | ClientManager.ForEachClient(delegate(IClientAPI controller) | 2154 | ClientManager.ForEachClient(delegate(IClientAPI controller) |
2155 | { | 2155 | { |
2156 | controller.SendBlueBoxMessage(FromAvatarID, fromSessionID, FromAvatarName, Message); | 2156 | controller.SendBlueBoxMessage(FromAvatarID, fromSessionID, FromAvatarName, Message); |
2157 | } | 2157 | } |
2158 | ); | 2158 | ); |
2159 | } | 2159 | } |
2160 | 2160 | ||
2161 | /// <summary> | 2161 | /// <summary> |
@@ -2180,27 +2180,27 @@ namespace OpenSim.Region.Environment.Scenes | |||
2180 | if (agentID == kickUserID) | 2180 | if (agentID == kickUserID) |
2181 | { | 2181 | { |
2182 | ClientManager.ForEachClient(delegate(IClientAPI controller) | 2182 | ClientManager.ForEachClient(delegate(IClientAPI controller) |
2183 | { | 2183 | { |
2184 | if (controller.AgentId != godID) | 2184 | if (controller.AgentId != godID) |
2185 | controller.Kick(Helpers.FieldToUTF8String(reason)); | 2185 | controller.Kick(Helpers.FieldToUTF8String(reason)); |
2186 | 2186 | ||
2187 | 2187 | ||
2188 | 2188 | ||
2189 | } | 2189 | } |
2190 | ); | 2190 | ); |
2191 | // This is a bit crude. It seems the client will be null before it actually stops the thread | 2191 | // This is a bit crude. It seems the client will be null before it actually stops the thread |
2192 | // The thread will kill itself eventually :/ | 2192 | // The thread will kill itself eventually :/ |
2193 | // Is there another way to make sure *all* clients get this 'inter region' message? | 2193 | // Is there another way to make sure *all* clients get this 'inter region' message? |
2194 | ClientManager.ForEachClient(delegate(IClientAPI controller) | 2194 | ClientManager.ForEachClient(delegate(IClientAPI controller) |
2195 | { | 2195 | { |
2196 | ScenePresence p = GetScenePresence(controller.AgentId); | 2196 | ScenePresence p = GetScenePresence(controller.AgentId); |
2197 | bool childagent = !p.Equals(null) && p.IsChildAgent; | 2197 | bool childagent = !p.Equals(null) && p.IsChildAgent; |
2198 | if (controller.AgentId != godID && !childagent) | 2198 | if (controller.AgentId != godID && !childagent) |
2199 | // Do we really want to kick the initiator of this madness? | 2199 | // Do we really want to kick the initiator of this madness? |
2200 | { | 2200 | { |
2201 | controller.Close(true); | 2201 | controller.Close(true); |
2202 | } | ||
2203 | } | 2202 | } |
2203 | } | ||
2204 | ); | 2204 | ); |
2205 | } | 2205 | } |
2206 | else | 2206 | else |