From 34c7a0e43a55e60466ce5527722cbdc5c946cd34 Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Tue, 26 Jun 2007 04:45:24 +0000
Subject: * Terrain filters! - Think photoshop-style filters for terrain. *
Terrain filters may be written in either C# or JavaScript and loaded at
runtime Use: terrain csfilter somefile.cs -- Loads a C# filter terrain
jsfilter somefile.js -- Loads a JavaScript filter Once a terrain filter has
been loaded, you can use the command as normal, eg terrain demofilter
---
.../OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | 31 +++++++++++++++++++---
1 file changed, 27 insertions(+), 4 deletions(-)
(limited to 'OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs')
diff --git a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs
index d1d54ad..2bda5ba 100644
--- a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs
+++ b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs
@@ -48,6 +48,11 @@ namespace OpenSim.Terrain
public class TerrainEngine
{
///
+ /// Plugin library for scripts
+ ///
+ public FilterHost customFilters = new FilterHost();
+
+ ///
/// A [normally] 256x256 heightmap
///
public Channel heightmap;
@@ -193,8 +198,10 @@ namespace OpenSim.Terrain
resultText += "terrain erode aerobic \n";
resultText += "terrain erode thermal \n";
resultText += "terrain multiply - multiplies a terrain by \n";
- resultText += "terrain revert - reverts the terrain to the stored original";
- resultText += "terrain bake - saves the current terrain into the revert map";
+ resultText += "terrain revert - reverts the terrain to the stored original\n";
+ resultText += "terrain bake - saves the current terrain into the revert map\n";
+ resultText += "terrain csfilter - loads a new filter from the specified .cs file\n";
+ resultText += "terrain jsfilter - loads a new filter from the specified .js file\n";
return false;
case "revert":
@@ -285,9 +292,25 @@ namespace OpenSim.Terrain
}
break;
+ case "csfilter":
+ customFilters.LoadFilterCSharp(args[1]);
+ break;
+ case "jsfilter":
+ customFilters.LoadFilterJScript(args[1]);
+ break;
+
default:
- resultText = "Unknown terrain command";
- return false;
+ // Run any custom registered filters
+ if (customFilters.filters.ContainsKey(command))
+ {
+ customFilters.filters[command].Filter(heightmap, args);
+ break;
+ }
+ else
+ {
+ resultText = "Unknown terrain command";
+ return false;
+ }
}
return true;
}
--
cgit v1.1