aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.cs
diff options
context:
space:
mode:
authordiva2008-12-29 22:22:05 +0000
committerdiva2008-12-29 22:22:05 +0000
commita3e2e03f7b8c42011ba6b06e8d2608645371f2cb (patch)
tree8c16a02079ad14d653cd35917f8844ca5edbec80 /OpenSim/Region/Environment/Scenes/Scene.cs
parentThis is a beefy commit containing the communication modules that implement Se... (diff)
downloadopensim-SC-a3e2e03f7b8c42011ba6b06e8d2608645371f2cb.zip
opensim-SC-a3e2e03f7b8c42011ba6b06e8d2608645371f2cb.tar.gz
opensim-SC-a3e2e03f7b8c42011ba6b06e8d2608645371f2cb.tar.bz2
opensim-SC-a3e2e03f7b8c42011ba6b06e8d2608645371f2cb.tar.xz
Final part for implementing SendChildAgentDataUpdate with modules. This is the part that uses the modules in Scene and related classes. This commit breaks compatibility of sim-sim SendChildAgentUpdates with older versions of OpenSim.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs41
1 files changed, 29 insertions, 12 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 2d0743c..6aa34e4 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -149,6 +149,8 @@ namespace OpenSim.Region.Environment.Scenes
149 protected IAvatarFactory m_AvatarFactory; 149 protected IAvatarFactory m_AvatarFactory;
150 protected IConfigSource m_config; 150 protected IConfigSource m_config;
151 protected IRegionSerialiserModule m_serialiser; 151 protected IRegionSerialiserModule m_serialiser;
152 protected IInterregionCommsOut m_interregionCommsOut;
153 protected IInterregionCommsIn m_interregionCommsIn;
152 154
153 // Central Update Loop 155 // Central Update Loop
154 156
@@ -757,6 +759,8 @@ namespace OpenSim.Region.Environment.Scenes
757 XferManager = RequestModuleInterface<IXfer>(); 759 XferManager = RequestModuleInterface<IXfer>();
758 m_AvatarFactory = RequestModuleInterface<IAvatarFactory>(); 760 m_AvatarFactory = RequestModuleInterface<IAvatarFactory>();
759 m_serialiser = RequestModuleInterface<IRegionSerialiserModule>(); 761 m_serialiser = RequestModuleInterface<IRegionSerialiserModule>();
762 m_interregionCommsOut = RequestModuleInterface<IInterregionCommsOut>();
763 m_interregionCommsIn = RequestModuleInterface<IInterregionCommsIn>();
760 } 764 }
761 765
762 #endregion 766 #endregion
@@ -896,10 +900,10 @@ namespace OpenSim.Region.Environment.Scenes
896 { 900 {
897 m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); 901 m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName);
898 } 902 }
899 catch (NullReferenceException e) 903 //catch (NullReferenceException e)
900 { 904 //{
901 m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); 905 // m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName);
902 } 906 //}
903 catch (InvalidOperationException e) 907 catch (InvalidOperationException e)
904 { 908 {
905 m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); 909 m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName);
@@ -1145,7 +1149,7 @@ namespace OpenSim.Region.Environment.Scenes
1145 RegisterCommsEvents(); 1149 RegisterCommsEvents();
1146 1150
1147 // These two 'commands' *must be* next to each other or sim rebooting fails. 1151 // These two 'commands' *must be* next to each other or sim rebooting fails.
1148 m_sceneGridService.RegisterRegion(RegionInfo); 1152 m_sceneGridService.RegisterRegion(m_interregionCommsOut, RegionInfo);
1149 m_sceneGridService.InformNeighborsThatRegionisUp(RegionInfo); 1153 m_sceneGridService.InformNeighborsThatRegionisUp(RegionInfo);
1150 1154
1151 Dictionary<string, string> dGridSettings = m_sceneGridService.GetGridSettings(); 1155 Dictionary<string, string> dGridSettings = m_sceneGridService.GetGridSettings();
@@ -2690,12 +2694,21 @@ namespace OpenSim.Region.Environment.Scenes
2690 m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; 2694 m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing;
2691 m_sceneGridService.OnCloseAgentConnection += CloseConnection; 2695 m_sceneGridService.OnCloseAgentConnection += CloseConnection;
2692 m_sceneGridService.OnRegionUp += OtherRegionUp; 2696 m_sceneGridService.OnRegionUp += OtherRegionUp;
2693 m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; 2697 //m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate;
2694 m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; 2698 m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup;
2695 //m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; 2699 //m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar;
2696 m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid; 2700 m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid;
2697 m_sceneGridService.KiPrimitive += SendKillObject; 2701 m_sceneGridService.KiPrimitive += SendKillObject;
2698 m_sceneGridService.OnGetLandData += GetLandData; 2702 m_sceneGridService.OnGetLandData += GetLandData;
2703
2704 if (m_interregionCommsIn != null)
2705 {
2706 m_log.Debug("[SCENE]: Registering with InterregionCommsIn");
2707 m_interregionCommsIn.OnChildAgentUpdate += IncomingChildAgentDataUpdate;
2708 }
2709 else
2710 m_log.Debug("[SCENE]: Unable to register with InterregionCommsIn");
2711
2699 } 2712 }
2700 2713
2701 /// <summary> 2714 /// <summary>
@@ -2707,13 +2720,16 @@ namespace OpenSim.Region.Environment.Scenes
2707 m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid; 2720 m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid;
2708 //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; 2721 //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar;
2709 m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; 2722 m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup;
2710 m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; 2723 //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
2711 m_sceneGridService.OnRegionUp -= OtherRegionUp; 2724 m_sceneGridService.OnRegionUp -= OtherRegionUp;
2712 m_sceneGridService.OnExpectUser -= NewUserConnection; 2725 m_sceneGridService.OnExpectUser -= NewUserConnection;
2713 m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; 2726 m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing;
2714 m_sceneGridService.OnCloseAgentConnection -= CloseConnection; 2727 m_sceneGridService.OnCloseAgentConnection -= CloseConnection;
2715 m_sceneGridService.OnGetLandData -= GetLandData; 2728 m_sceneGridService.OnGetLandData -= GetLandData;
2716 2729
2730 if (m_interregionCommsIn != null)
2731 m_interregionCommsIn.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
2732
2717 m_sceneGridService.Close(); 2733 m_sceneGridService.Close();
2718 } 2734 }
2719 2735
@@ -2937,17 +2953,18 @@ namespace OpenSim.Region.Environment.Scenes
2937 } 2953 }
2938 } 2954 }
2939 2955
2940 public virtual bool IncomingChildAgentDataUpdate(ChildAgentDataUpdate cAgentData) 2956 public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData)
2941 { 2957 {
2942 ScenePresence childAgentUpdate = GetScenePresence(new UUID(cAgentData.AgentID)); 2958 //Console.WriteLine(" XXX Scene IncomingChildAgentDataUpdate in " + RegionInfo.RegionName);
2959 ScenePresence childAgentUpdate = GetScenePresence(cAgentData.AgentID);
2943 if (childAgentUpdate != null) 2960 if (childAgentUpdate != null)
2944 { 2961 {
2945 // I can't imagine *yet* why we would get an update if the agent is a root agent.. 2962 // I can't imagine *yet* why we would get an update if the agent is a root agent..
2946 // however to avoid a race condition crossing borders.. 2963 // however to avoid a race condition crossing borders..
2947 if (childAgentUpdate.IsChildAgent) 2964 if (childAgentUpdate.IsChildAgent)
2948 { 2965 {
2949 uint rRegionX = (uint)(cAgentData.regionHandle >> 40); 2966 uint rRegionX = (uint)(cAgentData.RegionHandle >> 40);
2950 uint rRegionY = (((uint)(cAgentData.regionHandle)) >> 8); 2967 uint rRegionY = (((uint)(cAgentData.RegionHandle)) >> 8);
2951 uint tRegionX = RegionInfo.RegionLocX; 2968 uint tRegionX = RegionInfo.RegionLocX;
2952 uint tRegionY = RegionInfo.RegionLocY; 2969 uint tRegionY = RegionInfo.RegionLocY;
2953 //Send Data to ScenePresence 2970 //Send Data to ScenePresence
@@ -3131,7 +3148,7 @@ namespace OpenSim.Region.Environment.Scenes
3131 return m_sceneGridService.CrossToNeighbouringRegion(regionHandle, agentID, position, isFlying); 3148 return m_sceneGridService.CrossToNeighbouringRegion(regionHandle, agentID, position, isFlying);
3132 } 3149 }
3133 3150
3134 public void SendOutChildAgentUpdates(ChildAgentDataUpdate cadu, ScenePresence presence) 3151 public void SendOutChildAgentUpdates(AgentData cadu, ScenePresence presence)
3135 { 3152 {
3136 m_sceneGridService.SendChildAgentDataUpdate(cadu, presence); 3153 m_sceneGridService.SendChildAgentDataUpdate(cadu, presence);
3137 } 3154 }