diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/EventManager.cs | 89 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 35 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 13 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 10 |
5 files changed, 100 insertions, 51 deletions
diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs index e0a24a6..f8eef82 100644 --- a/OpenSim/Region/Environment/Scenes/EventManager.cs +++ b/OpenSim/Region/Environment/Scenes/EventManager.cs | |||
@@ -30,6 +30,7 @@ using libsecondlife; | |||
30 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Region.Environment.Interfaces; | 31 | using OpenSim.Region.Environment.Interfaces; |
32 | using Caps=OpenSim.Framework.Communications.Capabilities.Caps; | 32 | using Caps=OpenSim.Framework.Communications.Capabilities.Caps; |
33 | using System.Collections.Generic; | ||
33 | 34 | ||
34 | namespace OpenSim.Region.Environment.Scenes | 35 | namespace OpenSim.Region.Environment.Scenes |
35 | { | 36 | { |
@@ -169,6 +170,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
169 | 170 | ||
170 | public event AvatarKillData OnAvatarKilled; | 171 | public event AvatarKillData OnAvatarKilled; |
171 | 172 | ||
173 | |||
174 | |||
175 | public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); | ||
176 | public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene; | ||
177 | |||
178 | public delegate void NoticeNoLandDataFromStorage(); | ||
179 | public event NoticeNoLandDataFromStorage OnNoticeNoLandDataFromStorage; | ||
180 | |||
181 | public delegate void IncomingLandDataFromStorage(List<LandData> data); | ||
182 | public event IncomingLandDataFromStorage OnIncomingLandDataFromStorage; | ||
183 | |||
184 | public delegate void SetAllowForcefulBan(bool allow); | ||
185 | public event SetAllowForcefulBan OnSetAllowForcefulBan; | ||
186 | |||
187 | public delegate void RequestParcelPrimCountUpdate(); | ||
188 | public event RequestParcelPrimCountUpdate OnRequestParcelPrimCountUpdate; | ||
189 | |||
190 | public delegate void ParcelPrimCountTainted(); | ||
191 | public event ParcelPrimCountTainted OnParcelPrimCountTainted; | ||
192 | |||
172 | /// <summary> | 193 | /// <summary> |
173 | /// RegisterCapsEvent is called by Scene after the Caps object | 194 | /// RegisterCapsEvent is called by Scene after the Caps object |
174 | /// has been instantiated and before it is return to the | 195 | /// has been instantiated and before it is return to the |
@@ -300,6 +321,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
300 | private LandBuy handlerValidateLandBuy = null; | 321 | private LandBuy handlerValidateLandBuy = null; |
301 | private AvatarKillData handlerAvatarKill = null; | 322 | private AvatarKillData handlerAvatarKill = null; |
302 | 323 | ||
324 | private NoticeNoLandDataFromStorage handlerNoticeNoLandDataFromStorage = null; | ||
325 | private IncomingLandDataFromStorage handlerIncomingLandDataFromStorage = null; | ||
326 | private SetAllowForcefulBan handlerSetAllowForcefulBan = null; | ||
327 | private RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = null; | ||
328 | private ParcelPrimCountTainted handlerParcelPrimCountTainted = null; | ||
329 | private ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = null; | ||
330 | |||
303 | public void TriggerOnScriptChangedEvent(uint localID, uint change) | 331 | public void TriggerOnScriptChangedEvent(uint localID, uint change) |
304 | { | 332 | { |
305 | handlerScriptChangedEvent = OnScriptChangedEvent; | 333 | handlerScriptChangedEvent = OnScriptChangedEvent; |
@@ -651,5 +679,66 @@ namespace OpenSim.Region.Environment.Scenes | |||
651 | handlerScriptControlEvent(p, scriptUUID, avatarID, held, _changed); | 679 | handlerScriptControlEvent(p, scriptUUID, avatarID, held, _changed); |
652 | } | 680 | } |
653 | } | 681 | } |
682 | |||
683 | |||
684 | public void TriggerNoticeNoLandDataFromStorage() | ||
685 | { | ||
686 | handlerNoticeNoLandDataFromStorage = OnNoticeNoLandDataFromStorage; | ||
687 | if (handlerNoticeNoLandDataFromStorage != null) | ||
688 | { | ||
689 | handlerNoticeNoLandDataFromStorage(); | ||
690 | |||
691 | } | ||
692 | } | ||
693 | |||
694 | public void TriggerIncomingLandDataFromStorage(List<LandData> landData) | ||
695 | { | ||
696 | handlerIncomingLandDataFromStorage = OnIncomingLandDataFromStorage; | ||
697 | if (handlerIncomingLandDataFromStorage != null) | ||
698 | { | ||
699 | handlerIncomingLandDataFromStorage(landData); | ||
700 | |||
701 | } | ||
702 | } | ||
703 | |||
704 | public void TriggerSetAllowForcefulBan(bool allow) | ||
705 | { | ||
706 | handlerSetAllowForcefulBan = OnSetAllowForcefulBan; | ||
707 | if (handlerSetAllowForcefulBan != null) | ||
708 | { | ||
709 | handlerSetAllowForcefulBan(allow); | ||
710 | |||
711 | } | ||
712 | } | ||
713 | |||
714 | public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj) | ||
715 | { | ||
716 | handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene; | ||
717 | if (handlerObjectBeingRemovedFromScene != null) | ||
718 | { | ||
719 | handlerObjectBeingRemovedFromScene(obj); | ||
720 | |||
721 | } | ||
722 | } | ||
723 | |||
724 | |||
725 | public void TriggerRequestParcelPrimCountUpdate() | ||
726 | { | ||
727 | handlerRequestParcelPrimCountUpdate = OnRequestParcelPrimCountUpdate; | ||
728 | if (handlerRequestParcelPrimCountUpdate != null) | ||
729 | { | ||
730 | handlerRequestParcelPrimCountUpdate(); | ||
731 | |||
732 | } | ||
733 | } | ||
734 | public void TriggerParcelPrimCountTainted() | ||
735 | { | ||
736 | handlerParcelPrimCountTainted = OnParcelPrimCountTainted; | ||
737 | if (handlerParcelPrimCountTainted != null) | ||
738 | { | ||
739 | handlerParcelPrimCountTainted(); | ||
740 | |||
741 | } | ||
742 | } | ||
654 | } | 743 | } |
655 | } | 744 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 9eb86cb..788e80a 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -86,7 +86,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
86 | // A prim is only tainted if it's allowed to be edited by the person clicking it. | 86 | // A prim is only tainted if it's allowed to be edited by the person clicking it. |
87 | if (ExternalChecks.ExternalChecksCanEditObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId) || ExternalChecks.ExternalChecksCanMoveObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId)) | 87 | if (ExternalChecks.ExternalChecksCanEditObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId) || ExternalChecks.ExternalChecksCanMoveObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId)) |
88 | { | 88 | { |
89 | LandChannel.SetPrimsTainted(); | 89 | EventManager.TriggerParcelPrimCountTainted(); |
90 | } | 90 | } |
91 | break; | 91 | break; |
92 | } | 92 | } |
@@ -113,7 +113,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
113 | ((SceneObjectGroup)ent).ScheduleGroupForFullUpdate(); | 113 | ((SceneObjectGroup)ent).ScheduleGroupForFullUpdate(); |
114 | if (ExternalChecks.ExternalChecksCanEditObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId) || ExternalChecks.ExternalChecksCanMoveObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId)) | 114 | if (ExternalChecks.ExternalChecksCanEditObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId) || ExternalChecks.ExternalChecksCanMoveObject(((SceneObjectGroup)ent).UUID, remoteClient.AgentId)) |
115 | { | 115 | { |
116 | LandChannel.SetPrimsTainted(); | 116 | EventManager.TriggerParcelPrimCountTainted(); |
117 | break; | 117 | break; |
118 | } | 118 | } |
119 | } | 119 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 774ddfc..fe8cada 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -819,7 +819,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
819 | { | 819 | { |
820 | if (LandChannel.IsLandPrimCountTainted()) | 820 | if (LandChannel.IsLandPrimCountTainted()) |
821 | { | 821 | { |
822 | LandChannel.PerformParcelPrimCountUpdate(); | 822 | EventManager.TriggerParcelPrimCountUpdate(); |
823 | } | 823 | } |
824 | } | 824 | } |
825 | } | 825 | } |
@@ -970,12 +970,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
970 | if (dGridSettings["allow_forceful_banlines"] != "TRUE") | 970 | if (dGridSettings["allow_forceful_banlines"] != "TRUE") |
971 | { | 971 | { |
972 | m_log.Info("[GRID]: Grid is disabling forceful parcel banlists"); | 972 | m_log.Info("[GRID]: Grid is disabling forceful parcel banlists"); |
973 | LandChannel.AllowedForcefulBans = false; | 973 | EventManager.TriggerSetAllowForcefulBan(false); |
974 | } | 974 | } |
975 | else | 975 | else |
976 | { | 976 | { |
977 | m_log.Info("[GRID]: Grid is allowing forceful parcel banlists"); | 977 | m_log.Info("[GRID]: Grid is allowing forceful parcel banlists"); |
978 | LandChannel.AllowedForcefulBans = true; | 978 | EventManager.TriggerSetAllowForcefulBan(true); |
979 | } | 979 | } |
980 | } | 980 | } |
981 | } | 981 | } |
@@ -1142,11 +1142,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
1142 | { | 1142 | { |
1143 | if (landData.Count == 0) | 1143 | if (landData.Count == 0) |
1144 | { | 1144 | { |
1145 | LandChannel.NoLandDataFromStorage(); | 1145 | EventManager.TriggerNoticeNoLandDataFromStorage(); |
1146 | } | 1146 | } |
1147 | else | 1147 | else |
1148 | { | 1148 | { |
1149 | LandChannel.IncomingLandObjectsFromStorage(landData); | 1149 | EventManager.TriggerIncomingLandDataFromStorage(landData); |
1150 | } | 1150 | } |
1151 | } | 1151 | } |
1152 | else | 1152 | else |
@@ -1344,22 +1344,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1344 | { | 1344 | { |
1345 | if (Entities.ContainsKey(sceneObject.UUID)) | 1345 | if (Entities.ContainsKey(sceneObject.UUID)) |
1346 | { | 1346 | { |
1347 | LandChannel.RemovePrimFromLandPrimCounts(sceneObject); | 1347 | EventManager.TriggerObjectBeingRemovedFromScene(sceneObject); |
1348 | Entities.Remove(sceneObject.UUID); | 1348 | Entities.Remove(sceneObject.UUID); |
1349 | LandChannel.SetPrimsTainted(); | 1349 | EventManager.TriggerParcelPrimCountTainted(); |
1350 | m_innerScene.RemoveAPrimCount(); | 1350 | m_innerScene.RemoveAPrimCount(); |
1351 | } | 1351 | } |
1352 | } | 1352 | } |
1353 | 1353 | ||
1354 | /// <summary> | ||
1355 | /// Called by a prim when it has been created/cloned, so that its events can be subscribed to | ||
1356 | /// </summary> | ||
1357 | /// <param name="prim"></param> | ||
1358 | public void AcknowledgeNewPrim(SceneObjectGroup prim) | ||
1359 | { | ||
1360 | prim.OnPrimCountTainted += LandChannel.SetPrimsTainted; | ||
1361 | } | ||
1362 | |||
1363 | public void LoadPrimsFromXml(string fileName, bool newIdsFlag, LLVector3 loadOffset) | 1354 | public void LoadPrimsFromXml(string fileName, bool newIdsFlag, LLVector3 loadOffset) |
1364 | { | 1355 | { |
1365 | m_sceneXmlLoader.LoadPrimsFromXml(fileName, newIdsFlag, loadOffset); | 1356 | m_sceneXmlLoader.LoadPrimsFromXml(fileName, newIdsFlag, loadOffset); |
@@ -1589,15 +1580,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1589 | 1580 | ||
1590 | CreateAndAddScenePresence(client, child); | 1581 | CreateAndAddScenePresence(client, child); |
1591 | 1582 | ||
1592 | try | ||
1593 | { | ||
1594 | LandChannel.SendParcelOverlay(client); | ||
1595 | } //BUG: Mike - please fix this. | ||
1596 | catch (KeyNotFoundException) | ||
1597 | { | ||
1598 | m_log.Warn("[LAND]: Bug #2 triggered with NPC. LandModule needs a refactor to fix this."); | ||
1599 | } | ||
1600 | |||
1601 | CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); | 1583 | CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); |
1602 | } | 1584 | } |
1603 | } | 1585 | } |
@@ -3174,8 +3156,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
3174 | 3156 | ||
3175 | lock (Entities) | 3157 | lock (Entities) |
3176 | { | 3158 | { |
3177 | Entities.Remove(group.UUID); | 3159 | RemoveEntity(group); |
3178 | m_innerScene.RemoveAPrimCount(); | ||
3179 | } | 3160 | } |
3180 | group.DeleteParts(); | 3161 | group.DeleteParts(); |
3181 | 3162 | ||
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 35c563b..a99426a 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -601,7 +601,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
601 | 601 | ||
602 | #endregion | 602 | #endregion |
603 | 603 | ||
604 | public event PrimCountTaintedDelegate OnPrimCountTainted; | ||
605 | 604 | ||
606 | public string ToXmlString() | 605 | public string ToXmlString() |
607 | { | 606 | { |
@@ -1068,18 +1067,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1068 | #region Events | 1067 | #region Events |
1069 | 1068 | ||
1070 | /// <summary> | 1069 | /// <summary> |
1071 | /// | ||
1072 | /// </summary> | ||
1073 | public void TriggerTainted() | ||
1074 | { | ||
1075 | handlerPrimCountTainted = OnPrimCountTainted; | ||
1076 | if (handlerPrimCountTainted != null) | ||
1077 | { | ||
1078 | handlerPrimCountTainted(); | ||
1079 | } | ||
1080 | } | ||
1081 | |||
1082 | /// <summary> | ||
1083 | /// Processes backup | 1070 | /// Processes backup |
1084 | /// </summary> | 1071 | /// </summary> |
1085 | /// <param name="datastore"></param> | 1072 | /// <param name="datastore"></param> |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 0dbd6dd..103068c 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -405,14 +405,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
405 | RegisterToEvents(); | 405 | RegisterToEvents(); |
406 | SetDirectionVectors(); | 406 | SetDirectionVectors(); |
407 | 407 | ||
408 | try | 408 | |
409 | { | ||
410 | m_scene.LandChannel.SendLandUpdate(this, true); | ||
411 | } //BUG: Mike - please fix this. | ||
412 | catch (KeyNotFoundException) | ||
413 | { | ||
414 | m_log.Warn("[LAND]: Bug triggered with NPC. LandModule needs a refactor to fix this."); | ||
415 | } | ||
416 | } | 409 | } |
417 | 410 | ||
418 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, | 411 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, |
@@ -596,7 +589,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
596 | //if (!m_gotAllObjectsInScene) | 589 | //if (!m_gotAllObjectsInScene) |
597 | //{ | 590 | //{ |
598 | m_scene.SendAllSceneObjectsToClient(this); | 591 | m_scene.SendAllSceneObjectsToClient(this); |
599 | m_scene.LandChannel.SendLandUpdate(this, true); | ||
600 | 592 | ||
601 | //m_gotAllObjectsInScene = true; | 593 | //m_gotAllObjectsInScene = true; |
602 | //} | 594 | //} |