diff --git a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs index 47c8ae07a8..694a84580e 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs @@ -88,6 +88,15 @@ namespace OpenSim.Region.Physics.Manager public void LoadPlugins() { + + // Load "plugins", that are hard coded and not existing in form of an external lib + IMeshingPlugin plugHard; + plugHard = new ZeroMesherPlugin(); + _MeshPlugins.Add(plugHard.GetName(), plugHard); + MainLog.Instance.Verbose("PHYSICS", "Added meshing engine: " + plugHard.GetName()); + + // And now 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"); @@ -100,6 +109,7 @@ namespace OpenSim.Region.Physics.Manager private void AddPlugin(string FileName) { + Assembly pluginAssembly = Assembly.LoadFrom(FileName); foreach (Type pluginType in pluginAssembly.GetTypes()) diff --git a/OpenSim/Region/Physics/Manager/ZeroMesher.cs b/OpenSim/Region/Physics/Manager/ZeroMesher.cs new file mode 100644 index 0000000000..dafc1c8851 --- /dev/null +++ b/OpenSim/Region/Physics/Manager/ZeroMesher.cs @@ -0,0 +1,74 @@ +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework; + + +/* + * This is the zero mesher. + * Whatever you want him to mesh, he can't, telling you that by responding with a null pointer. + * Effectivly this is for switching off meshing and for testing as each physics machine should deal + * with the null pointer situation. + * But it's also a convenience thing, as physics machines can rely on having a mesher in any situation, even + * if it's a dump one like this. + * Note, that this mesher is *not* living in a module but in the manager itself, so + * it's always availabe and thus the default in case of configuration errors +*/ + +namespace OpenSim.Region.Physics.Manager +{ + public class ZeroMesherPlugin : IMeshingPlugin + { + public ZeroMesherPlugin() + { + } + + public string GetName() + { + return "ZeroMesher"; + } + + public IMesher GetMesher() + { + return new ZeroMesher(); + } + } + + public class ZeroMesher: IMesher + { + + public IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, PhysicsVector size) + { + return null; + } + } + +} diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 0fbb777197..1a61425c33 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -1,5 +1,15 @@ [Startup] gridmode = false + +; Select a mesher here. ZeroMesher is save and fast. +; ZeroMesher also means that the physics engine models the physics of prims +; sticking to the basic shapes the engine does support. Usually this is only a box. +; Meshmerizer gives a better handling of complex prims by using triangle meshes. +; Note, that only ODE physics currently deals with meshed prims in a satisfactoring way +; ZeroMesher currently has a memory locking issue. +; meshing = ZeroMesher +meshing = Meshmerizer + physics = basicphysics ; Prim Storage ; if you would like to use sqlite uncomment the following line (and diff --git a/bin/mysql_connection.ini b/bin/mysql_connection.ini index c8c6c8cc12..593727d4cd 100644 --- a/bin/mysql_connection.ini +++ b/bin/mysql_connection.ini @@ -1,7 +1,7 @@ [mysqlconnection] hostname=localhost -database=database -username=username -password=password +database=opensim +username=openSim +password=f1r3st0rm pooling=false port=3306 \ No newline at end of file