diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index cac4591cce..61edae5c07 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs @@ -26,6 +26,7 @@ */ using System.Collections.Generic; +using System.IO; using System.Net; using System.Reflection; using OpenMetaverse; @@ -102,7 +103,8 @@ namespace OpenSim.Region.ClientStack { PhysicsPluginManager physicsPluginManager; physicsPluginManager = new PhysicsPluginManager(); - physicsPluginManager.LoadPlugins(); + physicsPluginManager.LoadPluginsFromAssemblies("Physics"); + return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config); } diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs index 289bf873a0..31fe0b6b1b 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTestUtils.cs @@ -63,7 +63,7 @@ namespace OpenSim.Region.Environment.Scenes.Tests testScene.LandChannel = new TestLandChannel(); PhysicsPluginManager physicsPluginManager = new PhysicsPluginManager(); - physicsPluginManager.LoadPlugin("Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll"); + physicsPluginManager.LoadPluginsFromAssembly("Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll"); testScene.PhysicsScene = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", configSource); return testScene; diff --git a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs index 71fad02303..428a586f7d 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs @@ -104,26 +104,26 @@ namespace OpenSim.Region.Physics.Manager } /// - /// Load all built-in 'plugins' and those in the bin/Physics diretory + /// Load all plugins in assemblies at the given path /// - public void LoadPlugins() + /// + public void LoadPluginsFromAssemblies(string assembliesPath) { - // And now walk all assemblies (DLLs effectively) and see if they are home + // Walk all assemblies (DLLs effectively) and see if they are home // of a plugin that is of interest for us - string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Physics"); - string[] pluginFiles = Directory.GetFiles(path, "*.dll"); + string[] pluginFiles = Directory.GetFiles(assembliesPath, "*.dll"); for (int i = 0; i < pluginFiles.Length; i++) { - LoadPlugin(pluginFiles[i]); + LoadPluginsFromAssembly(pluginFiles[i]); } } /// - /// Load plugins from a dll at the given path + /// Load plugins from an assembly at the given path /// - /// - public void LoadPlugin(string dllPath) + /// + public void LoadPluginsFromAssembly(string assemblyPath) { // TODO / NOTE // The assembly named 'OpenSim.Region.Physics.BasicPhysicsPlugin' was loaded from @@ -138,11 +138,11 @@ namespace OpenSim.Region.Physics.Manager try { - pluginAssembly = Assembly.LoadFrom(dllPath); + pluginAssembly = Assembly.LoadFrom(assemblyPath); } catch (Exception ex) { - m_log.Error("[PHYSICS]: Failed to load plugin from " + dllPath, ex); + m_log.Error("[PHYSICS]: Failed to load plugin from " + assemblyPath, ex); } if (pluginAssembly != null) @@ -153,12 +153,12 @@ namespace OpenSim.Region.Physics.Manager } catch (ReflectionTypeLoadException ex) { - m_log.Error("[PHYSICS]: Failed to enumerate types in plugin from " + dllPath + ": " + + m_log.Error("[PHYSICS]: Failed to enumerate types in plugin from " + assemblyPath + ": " + ex.LoaderExceptions[0].Message, ex); } catch (Exception ex) { - m_log.Error("[PHYSICS]: Failed to enumerate types in plugin from " + dllPath, ex); + m_log.Error("[PHYSICS]: Failed to enumerate types in plugin from " + assemblyPath, ex); } if (types != null)