diff options
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r-- | OpenSim/Region/Environment/ModuleLoader.cs | 37 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneManager.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 82 |
4 files changed, 79 insertions, 55 deletions
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs index 442ee77..c0dd52a 100644 --- a/OpenSim/Region/Environment/ModuleLoader.cs +++ b/OpenSim/Region/Environment/ModuleLoader.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
30 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
31 | using System.IO; | 32 | using System.IO; |
32 | using System.Reflection; | 33 | using System.Reflection; |
@@ -42,10 +43,10 @@ namespace OpenSim.Region.Environment | |||
42 | { | 43 | { |
43 | public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>(); | 44 | public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>(); |
44 | 45 | ||
45 | public List<IRegionModule> LoadedModules = new List<IRegionModule>(); | 46 | private readonly List<IRegionModule> m_loadedModules = new List<IRegionModule>(); |
46 | public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>(); | 47 | private Dictionary<string, IRegionModule> m_loadedSharedModules = new Dictionary<string, IRegionModule>(); |
47 | private readonly LogBase m_log; | 48 | private readonly LogBase m_log; |
48 | private IConfigSource m_config; | 49 | private readonly IConfigSource m_config; |
49 | 50 | ||
50 | public ModuleLoader(LogBase log, IConfigSource config) | 51 | public ModuleLoader(LogBase log, IConfigSource config) |
51 | { | 52 | { |
@@ -53,6 +54,16 @@ namespace OpenSim.Region.Environment | |||
53 | m_config = config; | 54 | m_config = config; |
54 | } | 55 | } |
55 | 56 | ||
57 | public IRegionModule[] GetLoadedSharedModules | ||
58 | { | ||
59 | get | ||
60 | { | ||
61 | IRegionModule[] regionModules = new IRegionModule[ m_loadedSharedModules.Count ]; | ||
62 | m_loadedSharedModules.Values.CopyTo( regionModules, 0 ); | ||
63 | return regionModules; | ||
64 | } | ||
65 | } | ||
66 | |||
56 | public void PickupModules(Scene scene, string moduleDir) | 67 | public void PickupModules(Scene scene, string moduleDir) |
57 | { | 68 | { |
58 | DirectoryInfo dir = new DirectoryInfo(moduleDir); | 69 | DirectoryInfo dir = new DirectoryInfo(moduleDir); |
@@ -66,19 +77,19 @@ namespace OpenSim.Region.Environment | |||
66 | public void LoadDefaultSharedModules() | 77 | public void LoadDefaultSharedModules() |
67 | { | 78 | { |
68 | DynamicTextureModule dynamicModule = new DynamicTextureModule(); | 79 | DynamicTextureModule dynamicModule = new DynamicTextureModule(); |
69 | LoadedSharedModules.Add(dynamicModule.Name, dynamicModule); | 80 | m_loadedSharedModules.Add(dynamicModule.Name, dynamicModule); |
70 | 81 | ||
71 | ChatModule chat = new ChatModule(); | 82 | ChatModule chat = new ChatModule(); |
72 | LoadedSharedModules.Add(chat.Name, chat); | 83 | m_loadedSharedModules.Add(chat.Name, chat); |
73 | 84 | ||
74 | InstantMessageModule imMod = new InstantMessageModule(); | 85 | InstantMessageModule imMod = new InstantMessageModule(); |
75 | LoadedSharedModules.Add(imMod.Name, imMod); | 86 | m_loadedSharedModules.Add(imMod.Name, imMod); |
76 | 87 | ||
77 | LoadImageURLModule loadMod = new LoadImageURLModule(); | 88 | LoadImageURLModule loadMod = new LoadImageURLModule(); |
78 | LoadedSharedModules.Add(loadMod.Name, loadMod); | 89 | m_loadedSharedModules.Add(loadMod.Name, loadMod); |
79 | 90 | ||
80 | AvatarFactoryModule avatarFactory = new AvatarFactoryModule(); | 91 | AvatarFactoryModule avatarFactory = new AvatarFactoryModule(); |
81 | LoadedSharedModules.Add(avatarFactory.Name, avatarFactory); | 92 | m_loadedSharedModules.Add(avatarFactory.Name, avatarFactory); |
82 | 93 | ||
83 | //TextureDownloadModule textureModule = new TextureDownloadModule(); | 94 | //TextureDownloadModule textureModule = new TextureDownloadModule(); |
84 | //LoadedSharedModules.Add(textureModule.Name, textureModule); | 95 | //LoadedSharedModules.Add(textureModule.Name, textureModule); |
@@ -86,7 +97,7 @@ namespace OpenSim.Region.Environment | |||
86 | 97 | ||
87 | public void InitialiseSharedModules(Scene scene) | 98 | public void InitialiseSharedModules(Scene scene) |
88 | { | 99 | { |
89 | foreach (IRegionModule module in LoadedSharedModules.Values) | 100 | foreach (IRegionModule module in m_loadedSharedModules.Values) |
90 | { | 101 | { |
91 | module.Initialise(scene, m_config); | 102 | module.Initialise(scene, m_config); |
92 | scene.AddModule(module.Name, module); //should be doing this? | 103 | scene.AddModule(module.Name, module); //should be doing this? |
@@ -97,7 +108,7 @@ namespace OpenSim.Region.Environment | |||
97 | { | 108 | { |
98 | module.Initialise(scene, m_config); | 109 | module.Initialise(scene, m_config); |
99 | scene.AddModule(module.Name, module); | 110 | scene.AddModule(module.Name, module); |
100 | LoadedModules.Add(module); | 111 | m_loadedModules.Add(module); |
101 | } | 112 | } |
102 | 113 | ||
103 | /// <summary> | 114 | /// <summary> |
@@ -111,7 +122,7 @@ namespace OpenSim.Region.Environment | |||
111 | IRegionModule module = LoadModule(dllName, moduleName); | 122 | IRegionModule module = LoadModule(dllName, moduleName); |
112 | if (module != null) | 123 | if (module != null) |
113 | { | 124 | { |
114 | LoadedSharedModules.Add(module.Name, module); | 125 | m_loadedSharedModules.Add(module.Name, module); |
115 | } | 126 | } |
116 | } | 127 | } |
117 | 128 | ||
@@ -204,12 +215,12 @@ namespace OpenSim.Region.Environment | |||
204 | 215 | ||
205 | public void PostInitialise() | 216 | public void PostInitialise() |
206 | { | 217 | { |
207 | foreach (IRegionModule module in LoadedSharedModules.Values) | 218 | foreach (IRegionModule module in m_loadedSharedModules.Values) |
208 | { | 219 | { |
209 | module.PostInitialise(); | 220 | module.PostInitialise(); |
210 | } | 221 | } |
211 | 222 | ||
212 | foreach (IRegionModule module in LoadedModules) | 223 | foreach (IRegionModule module in m_loadedModules) |
213 | { | 224 | { |
214 | module.PostInitialise(); | 225 | module.PostInitialise(); |
215 | } | 226 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index e86562d..1f50e1b 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1134,7 +1134,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1134 | { | 1134 | { |
1135 | if (m_scenePresences.ContainsKey(agentID)) | 1135 | if (m_scenePresences.ContainsKey(agentID)) |
1136 | { | 1136 | { |
1137 | m_scenePresences[agentID].MakeAvatarPhysical(position, isFlying); | 1137 | m_scenePresences[agentID].MakeRootAgent(position, isFlying); |
1138 | } | 1138 | } |
1139 | } | 1139 | } |
1140 | } | 1140 | } |
@@ -1570,5 +1570,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1570 | avatar = null; | 1570 | avatar = null; |
1571 | return false; | 1571 | return false; |
1572 | } | 1572 | } |
1573 | |||
1574 | internal void ForEachClient( Action<IClientAPI> action ) | ||
1575 | { | ||
1576 | foreach (ScenePresence presence in m_scenePresences.Values ) | ||
1577 | { | ||
1578 | action(presence.ControllingClient); | ||
1579 | } | ||
1580 | } | ||
1573 | } | 1581 | } |
1574 | } | 1582 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index 76ff6cf..e844462 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs | |||
@@ -310,5 +310,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
310 | avatar = null; | 310 | avatar = null; |
311 | return false; | 311 | return false; |
312 | } | 312 | } |
313 | |||
314 | public void ForEachScene(Action<Scene> action ) | ||
315 | { | ||
316 | m_localScenes.ForEach( action ); | ||
317 | } | ||
313 | } | 318 | } |
314 | } | 319 | } |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 716aaa6..9b6e58d 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -248,8 +248,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
248 | Animations.LoadAnims(); | 248 | Animations.LoadAnims(); |
249 | 249 | ||
250 | //register for events | 250 | //register for events |
251 | m_controllingClient.OnRequestWearables += SendOurAppearance; | 251 | m_controllingClient.OnRequestWearables += SendAppearance; |
252 | m_controllingClient.OnSetAppearance += new SetAppearance(SetAppearance); | 252 | m_controllingClient.OnSetAppearance += SetAppearance; |
253 | m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; | 253 | m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; |
254 | m_controllingClient.OnCompleteMovementToRegion += SendInitialData; | 254 | m_controllingClient.OnCompleteMovementToRegion += SendInitialData; |
255 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; | 255 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; |
@@ -343,7 +343,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
343 | 343 | ||
344 | #region Status Methods | 344 | #region Status Methods |
345 | 345 | ||
346 | public void MakeAvatarPhysical(LLVector3 pos, bool isFlying) | 346 | public void MakeRootAgent(LLVector3 pos, bool isFlying) |
347 | { | 347 | { |
348 | m_newAvatar = true; | 348 | m_newAvatar = true; |
349 | m_isChildAgent = false; | 349 | m_isChildAgent = false; |
@@ -412,7 +412,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
412 | m_visualParams[i] = visualParam[i].ParamValue; | 412 | m_visualParams[i] = visualParam[i].ParamValue; |
413 | } | 413 | } |
414 | 414 | ||
415 | SendAppearanceToAllOtherAgents(); | 415 | SendAppearanceToAllOtherClients(); |
416 | } | 416 | } |
417 | 417 | ||
418 | /// <summary> | 418 | /// <summary> |
@@ -433,7 +433,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
433 | m_isChildAgent = false; | 433 | m_isChildAgent = false; |
434 | 434 | ||
435 | //this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); | 435 | //this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); |
436 | this.MakeAvatarPhysical(this.AbsolutePosition, false); | 436 | this.MakeRootAgent(this.AbsolutePosition, false); |
437 | } | 437 | } |
438 | } | 438 | } |
439 | 439 | ||
@@ -707,16 +707,19 @@ namespace OpenSim.Region.Environment.Scenes | |||
707 | 707 | ||
708 | public void SendFullUpdateToAllClients() | 708 | public void SendFullUpdateToAllClients() |
709 | { | 709 | { |
710 | List<ScenePresence> avatars = m_scene.GetScenePresences(); | 710 | List<ScenePresence> agents = m_scene.GetScenePresences(); |
711 | foreach (ScenePresence avatar in avatars) | 711 | foreach (ScenePresence agent in agents) |
712 | { | 712 | { |
713 | SendFullUpdateToOtherClient(avatar); | 713 | IClientAPI client = agent.ControllingClient; |
714 | if (avatar.LocalId != LocalId) | 714 | client.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, |
715 | LocalId, AbsolutePosition, m_textureEntry.ToBytes(), m_parentID ); | ||
716 | |||
717 | if (agent.LocalId != LocalId) | ||
715 | { | 718 | { |
716 | if (!avatar.m_isChildAgent) | 719 | if (!agent.m_isChildAgent) |
717 | { | 720 | { |
718 | avatar.SendFullUpdateToOtherClient(this); | 721 | client.SendAppearance(m_controllingClient.AgentId, m_visualParams, |
719 | avatar.SendAppearanceToOtherAgent(this); | 722 | m_textureEntry.ToBytes()); |
720 | } | 723 | } |
721 | } | 724 | } |
722 | } | 725 | } |
@@ -736,22 +739,28 @@ namespace OpenSim.Region.Environment.Scenes | |||
736 | } | 739 | } |
737 | 740 | ||
738 | SendFullUpdateToAllClients(); | 741 | SendFullUpdateToAllClients(); |
739 | SendAppearanceToAllOtherAgents(); | 742 | SendAppearanceToAllOtherClients(); |
740 | } | 743 | } |
741 | 744 | ||
742 | /// <summary> | 745 | public void SetWearable( int wearableId, AvatarWearable wearable ) |
743 | /// | 746 | { |
744 | /// </summary> | 747 | m_wearables[wearableId] = wearable; |
745 | /// <param name="OurClient"></param> | 748 | |
746 | public void SendOurAppearance(IClientAPI OurClient) | 749 | m_scene.ForEachClient( delegate( IClientAPI client ) |
750 | { | ||
751 | SendAppearance( client ); | ||
752 | }); | ||
753 | } | ||
754 | |||
755 | public void SendAppearance(IClientAPI client) | ||
747 | { | 756 | { |
748 | m_controllingClient.SendWearables(m_wearables); | 757 | client.SendWearables(m_wearables); |
749 | 758 | ||
750 | //this.SendFullUpdateToAllClients(); | 759 | //this.SendFullUpdateToAllClients(); |
751 | //this.SendAppearanceToAllOtherAgents(); | 760 | //this.SendAppearanceToAllOtherClients(); |
752 | 761 | ||
753 | m_scene.SendAllSceneObjectsToClient(this); | 762 | m_scene.SendAllSceneObjectsToClient(this); |
754 | m_controllingClient.SendViewerTime(m_scene.TimePhase); | 763 | client.SendViewerTime(m_scene.TimePhase); |
755 | 764 | ||
756 | //Please don't remove the following code (at least not yet), just leave it commented out | 765 | //Please don't remove the following code (at least not yet), just leave it commented out |
757 | //gives the user god powers, should help with debuging things in the future | 766 | //gives the user god powers, should help with debuging things in the future |
@@ -767,25 +776,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
767 | /// <summary> | 776 | /// <summary> |
768 | /// | 777 | /// |
769 | /// </summary> | 778 | /// </summary> |
770 | public void SendAppearanceToAllOtherAgents() | 779 | public void SendAppearanceToAllOtherClients() |
771 | { | 780 | { |
772 | m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) | 781 | m_scene.ForEachClient(delegate(IClientAPI client) |
773 | { | 782 | { |
774 | if (scenePresence != this) | 783 | if( client != m_controllingClient ) |
775 | { | 784 | { |
776 | SendAppearanceToOtherAgent(scenePresence); | 785 | client.SendAppearance(m_controllingClient.AgentId, m_visualParams, |
777 | } | 786 | m_textureEntry.ToBytes() ); |
778 | }); | 787 | } |
779 | } | 788 | }); |
780 | |||
781 | /// <summary> | ||
782 | /// | ||
783 | /// </summary> | ||
784 | /// <param name="avatarInfo"></param> | ||
785 | public void SendAppearanceToOtherAgent(ScenePresence avatarInfo) | ||
786 | { | ||
787 | avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, m_visualParams, | ||
788 | m_textureEntry.ToBytes()); | ||
789 | } | 789 | } |
790 | 790 | ||
791 | /// <summary> | 791 | /// <summary> |