aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Environment/Modules/World/Terrain/ITerrainModule.cs1
-rw-r--r--OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs31
2 files changed, 22 insertions, 10 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Terrain/ITerrainModule.cs b/OpenSim/Region/Environment/Modules/World/Terrain/ITerrainModule.cs
index dc8c41b..6ab2372 100644
--- a/OpenSim/Region/Environment/Modules/World/Terrain/ITerrainModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Terrain/ITerrainModule.cs
@@ -31,5 +31,6 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
31 { 31 {
32 void LoadFromFile(string filename); 32 void LoadFromFile(string filename);
33 void SaveToFile(string filename); 33 void SaveToFile(string filename);
34 void InstallPlugin(string name, ITerrainEffect plug);
34 } 35 }
35} 36}
diff --git a/OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs b/OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs
index 4562fb6..20c0086 100644
--- a/OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs
@@ -242,24 +242,19 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
242 if (pluginType.IsAbstract || pluginType.IsNotPublic) 242 if (pluginType.IsAbstract || pluginType.IsNotPublic)
243 continue; 243 continue;
244 244
245 string typeName = pluginType.Name;
246
245 if (pluginType.GetInterface("ITerrainEffect", false) != null) 247 if (pluginType.GetInterface("ITerrainEffect", false) != null)
246 { 248 {
247 ITerrainEffect terEffect = (ITerrainEffect) Activator.CreateInstance(library.GetType(pluginType.ToString())); 249 ITerrainEffect terEffect = (ITerrainEffect) Activator.CreateInstance(library.GetType(pluginType.ToString()));
248 if (!m_plugineffects.ContainsKey(pluginType.Name)) 250
249 { 251 InstallPlugin(typeName, terEffect);
250 m_plugineffects.Add(pluginType.Name, terEffect);
251 m_log.Info("E ... " + pluginType.Name);
252 }
253 else
254 {
255 m_log.Warn("E ... " + pluginType.Name + " (Already added)");
256 }
257 } 252 }
258 else if (pluginType.GetInterface("ITerrainLoader", false) != null) 253 else if (pluginType.GetInterface("ITerrainLoader", false) != null)
259 { 254 {
260 ITerrainLoader terLoader = (ITerrainLoader) Activator.CreateInstance(library.GetType(pluginType.ToString())); 255 ITerrainLoader terLoader = (ITerrainLoader) Activator.CreateInstance(library.GetType(pluginType.ToString()));
261 m_loaders[terLoader.FileExtension] = terLoader; 256 m_loaders[terLoader.FileExtension] = terLoader;
262 m_log.Info("L ... " + pluginType.Name); 257 m_log.Info("L ... " + typeName);
263 } 258 }
264 } 259 }
265 catch (AmbiguousMatchException) 260 catch (AmbiguousMatchException)
@@ -273,6 +268,22 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
273 } 268 }
274 } 269 }
275 270
271 public void InstallPlugin(string pluginName, ITerrainEffect effect)
272 {
273 lock (m_plugineffects)
274 {
275 if (!m_plugineffects.ContainsKey(pluginName))
276 {
277 m_plugineffects.Add(pluginName, effect);
278 m_log.Info("E ... " + pluginName);
279 }
280 else
281 {
282 m_log.Warn("E ... " + pluginName + " (Skipping)");
283 }
284 }
285 }
286
276 #endregion 287 #endregion
277 288
278 #endregion 289 #endregion