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