From cdd903c1733ab813897e7bb8510d44d452238285 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Mon, 12 Nov 2007 12:43:01 +0000 Subject: * Applied Gerhard's Meshing patch (Thanks! Gerhard) * Addition of Gerhard's ZeroMesher. * Addition of meshing OpenSim.ini parameter * Some modifications to the Meshmerizer * Meshmerizer set to default meshing plugin because ZeroMesher needs a memory locking fix. We'll switch it back after the memory locking issue is resolved. --- .../Region/Physics/Manager/PhysicsPluginManager.cs | 10 +++ OpenSim/Region/Physics/Manager/ZeroMesher.cs | 74 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 OpenSim/Region/Physics/Manager/ZeroMesher.cs (limited to 'OpenSim/Region/Physics') diff --git a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs index 47c8ae0..694a845 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 0000000..dafc1c8 --- /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; + } + } + +} -- cgit v1.1