diff options
author | MW | 2007-06-27 15:28:52 +0000 |
---|---|---|
committer | MW | 2007-06-27 15:28:52 +0000 |
commit | 646bbbc84b8010e0dacbeed5342cdb045f46cc49 (patch) | |
tree | 770b34d19855363c3c113ab9a0af9a56d821d887 /OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs | |
download | opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.zip opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.gz opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.bz2 opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.xz |
Some work on restructuring the namespaces / project names. Note this doesn't compile yet as not all the code has been changed to use the new namespaces. Am committing it now for feedback on the namespaces.
Diffstat (limited to 'OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs')
-rw-r--r-- | OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs new file mode 100644 index 0000000..689375d --- /dev/null +++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs | |||
@@ -0,0 +1,103 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | using System.CodeDom.Compiler; | ||
6 | using System.CodeDom; | ||
7 | using Microsoft.CSharp; | ||
8 | using Microsoft.JScript; | ||
9 | |||
10 | using libTerrain; | ||
11 | |||
12 | namespace OpenSim.Terrain | ||
13 | { | ||
14 | public interface ITerrainFilter | ||
15 | { | ||
16 | void Filter(Channel heightmap, string[] args); | ||
17 | string Register(); | ||
18 | string Help(); | ||
19 | } | ||
20 | |||
21 | public class TestFilter : ITerrainFilter | ||
22 | { | ||
23 | public void Filter(Channel heightmap, string[] args) | ||
24 | { | ||
25 | Console.WriteLine("Hello world"); | ||
26 | } | ||
27 | |||
28 | public string Register() | ||
29 | { | ||
30 | return "demofilter"; | ||
31 | } | ||
32 | |||
33 | public string Help() | ||
34 | { | ||
35 | return "demofilter - Does nothing"; | ||
36 | } | ||
37 | } | ||
38 | |||
39 | public class FilterHost | ||
40 | { | ||
41 | public Dictionary<string, ITerrainFilter> filters = new Dictionary<string, ITerrainFilter>(); | ||
42 | |||
43 | private void LoadFilter(ICodeCompiler compiler, string filename) | ||
44 | { | ||
45 | CompilerParameters compilerParams = new CompilerParameters(); | ||
46 | CompilerResults compilerResults; | ||
47 | compilerParams.GenerateExecutable = false; | ||
48 | compilerParams.GenerateInMemory = true; | ||
49 | compilerParams.IncludeDebugInformation = false; | ||
50 | compilerParams.ReferencedAssemblies.Add("libTerrain-BSD.dll"); | ||
51 | compilerParams.ReferencedAssemblies.Add("OpenSim.Terrain.BasicTerrain.dll"); | ||
52 | compilerParams.ReferencedAssemblies.Add("System.dll"); | ||
53 | |||
54 | compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename); | ||
55 | |||
56 | if (compilerResults.Errors.Count > 0) | ||
57 | { | ||
58 | Console.WriteLine("Compile errors:"); | ||
59 | foreach (CompilerError error in compilerResults.Errors) | ||
60 | { | ||
61 | Console.WriteLine(error.Line.ToString() + ": " + error.ErrorText.ToString()); | ||
62 | } | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | ||
67 | { | ||
68 | Type testInterface = pluginType.GetInterface("ITerrainFilter",true); | ||
69 | |||
70 | if (testInterface != null) | ||
71 | { | ||
72 | ITerrainFilter filter = (ITerrainFilter)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||
73 | |||
74 | string filterName = filter.Register(); | ||
75 | Console.WriteLine("Plugin: " + filterName + " loaded."); | ||
76 | |||
77 | if (!filters.ContainsKey(filterName)) | ||
78 | { | ||
79 | filters.Add(filterName, filter); | ||
80 | } | ||
81 | else | ||
82 | { | ||
83 | filters[filterName] = filter; | ||
84 | } | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | |||
89 | } | ||
90 | |||
91 | public void LoadFilterCSharp(string filename) | ||
92 | { | ||
93 | CSharpCodeProvider compiler = new CSharpCodeProvider(); | ||
94 | LoadFilter(compiler.CreateCompiler(), filename); | ||
95 | } | ||
96 | |||
97 | public void LoadFilterJScript(string filename) | ||
98 | { | ||
99 | JScriptCodeProvider compiler = new JScriptCodeProvider(); | ||
100 | LoadFilter(compiler.CreateCompiler(), filename); | ||
101 | } | ||
102 | } | ||
103 | } | ||