aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/Manager
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/Manager')
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs10
-rw-r--r--OpenSim/Region/Physics/Manager/ZeroMesher.cs74
2 files changed, 84 insertions, 0 deletions
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
88 88
89 public void LoadPlugins() 89 public void LoadPlugins()
90 { 90 {
91
92 // Load "plugins", that are hard coded and not existing in form of an external lib
93 IMeshingPlugin plugHard;
94 plugHard = new ZeroMesherPlugin();
95 _MeshPlugins.Add(plugHard.GetName(), plugHard);
96 MainLog.Instance.Verbose("PHYSICS", "Added meshing engine: " + plugHard.GetName());
97
98 // And now walk all assemblies (DLLs effectively) and see if they are home
99 // of a plugin that is of interest for us
91 string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Physics"); 100 string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Physics");
92 string[] pluginFiles = Directory.GetFiles(path, "*.dll"); 101 string[] pluginFiles = Directory.GetFiles(path, "*.dll");
93 102
@@ -100,6 +109,7 @@ namespace OpenSim.Region.Physics.Manager
100 109
101 private void AddPlugin(string FileName) 110 private void AddPlugin(string FileName)
102 { 111 {
112
103 Assembly pluginAssembly = Assembly.LoadFrom(FileName); 113 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
104 114
105 foreach (Type pluginType in pluginAssembly.GetTypes()) 115 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 @@
1/*
2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using OpenSim.Framework;
33
34
35/*
36 * This is the zero mesher.
37 * Whatever you want him to mesh, he can't, telling you that by responding with a null pointer.
38 * Effectivly this is for switching off meshing and for testing as each physics machine should deal
39 * with the null pointer situation.
40 * But it's also a convenience thing, as physics machines can rely on having a mesher in any situation, even
41 * if it's a dump one like this.
42 * Note, that this mesher is *not* living in a module but in the manager itself, so
43 * it's always availabe and thus the default in case of configuration errors
44*/
45
46namespace OpenSim.Region.Physics.Manager
47{
48 public class ZeroMesherPlugin : IMeshingPlugin
49 {
50 public ZeroMesherPlugin()
51 {
52 }
53
54 public string GetName()
55 {
56 return "ZeroMesher";
57 }
58
59 public IMesher GetMesher()
60 {
61 return new ZeroMesher();
62 }
63 }
64
65 public class ZeroMesher: IMesher
66 {
67
68 public IMesh CreateMesh(String primName, PrimitiveBaseShape primShape, PhysicsVector size)
69 {
70 return null;
71 }
72 }
73
74}