* 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.
afrisby
Teravus Ovares 2007-11-12 12:43:01 +00:00
parent 8039c31e88
commit cdd903c173
4 changed files with 97 additions and 3 deletions

View File

@ -88,6 +88,15 @@ namespace OpenSim.Region.Physics.Manager
public void LoadPlugins() 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 path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Physics");
string[] pluginFiles = Directory.GetFiles(path, "*.dll"); string[] pluginFiles = Directory.GetFiles(path, "*.dll");
@ -100,6 +109,7 @@ namespace OpenSim.Region.Physics.Manager
private void AddPlugin(string FileName) private void AddPlugin(string FileName)
{ {
Assembly pluginAssembly = Assembly.LoadFrom(FileName); Assembly pluginAssembly = Assembly.LoadFrom(FileName);
foreach (Type pluginType in pluginAssembly.GetTypes()) foreach (Type pluginType in pluginAssembly.GetTypes())

View File

@ -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;
}
}
}

View File

@ -1,5 +1,15 @@
[Startup] [Startup]
gridmode = false 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 physics = basicphysics
; Prim Storage ; Prim Storage
; if you would like to use sqlite uncomment the following line (and ; if you would like to use sqlite uncomment the following line (and

View File

@ -1,7 +1,7 @@
[mysqlconnection] [mysqlconnection]
hostname=localhost hostname=localhost
database=database database=opensim
username=username username=openSim
password=password password=f1r3st0rm
pooling=false pooling=false
port=3306 port=3306