From 8194d822301481c56c2e48857e6609409613dd6d Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Wed, 20 Jun 2007 21:57:22 +0000 Subject: * Terrain modification more robust, uses area sizes matching those employed by the client display. * Terrain tools now account for the duration the cursor was held for. * Terrain tools now support new brushes (completing the common set) ** Smooth brush ** Flatten brush ** Revert brush ** Noise brush --- .../OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'OpenSim/OpenSim.Terrain.BasicTerrain') diff --git a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs index 2d0fb30..d1d54ad 100644 --- a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs @@ -542,6 +542,89 @@ namespace OpenSim.Terrain } /// + /// Flattens the land under the brush of specified coordinates (spherical mask) + /// + /// Center of sphere + /// Center of sphere + /// Radius of the sphere + /// Thickness of the mask (0..2 recommended) + public void flatten(double rx, double ry, double size, double amount) + { + lock (heightmap) + { + heightmap.flatten(rx, ry, size, amount); + } + + tainted++; + } + + /// + /// Creates noise within the specified bounds + /// + /// Center of the bounding sphere + /// Center of the bounding sphere + /// The radius of the sphere + /// Strength of the mask (0..2) recommended + public void noise(double rx, double ry, double size, double amount) + { + lock (heightmap) + { + Channel smoothed = new Channel(); + smoothed.noise(); + + Channel mask = new Channel(); + mask.raise(rx, ry, size, amount); + + heightmap.blend(smoothed, mask); + } + + tainted++; + } + + /// + /// Reverts land within the specified bounds + /// + /// Center of the bounding sphere + /// Center of the bounding sphere + /// The radius of the sphere + /// Strength of the mask (0..2) recommended + public void revert(double rx, double ry, double size, double amount) + { + lock (heightmap) + { + Channel mask = new Channel(); + mask.raise(rx, ry, size, amount); + + heightmap.blend(revertmap, mask); + } + + tainted++; + } + + /// + /// Smooths land under the brush of specified coordinates (spherical mask) + /// + /// Center of the sphere + /// Center of the sphere + /// Radius of the sphere + /// Thickness of the mask (0..2 recommended) + public void smooth(double rx, double ry, double size, double amount) + { + lock (heightmap) + { + Channel smoothed = heightmap.copy(); + smoothed.smooth(amount); + + Channel mask = new Channel(); + mask.raise(rx,ry,size,amount); + + heightmap.blend(smoothed, mask); + } + + tainted++; + } + + /// /// Generates a simple set of hills in the shape of an island /// public void hills() -- cgit v1.1