From 53e8d91c06b3fc5cf61ba767930fa733a6efb232 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Fri, 14 Mar 2008 13:37:39 +0000 Subject: * Fixed 'flatten area' brush, so it now has a 'force' instead of instantly flattening the selected area. * Noise, and Noise-Area brushes now use Perlin noise, more closely simulating the method LL uses officially. * TerrainModule has been cleaned up slightly. * TerrainUtil class has several new functions related to seeded noise generation. * Extracted ITerrainEffect, ITerrainFloodEffect, ITerrainLoader, ITerrainPaintableEffect, TerrainChannel to seperate files. --- .../Environment/Modules/Terrain/TerrainModule.cs | 149 ++------------------- 1 file changed, 8 insertions(+), 141 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/Terrain/TerrainModule.cs') diff --git a/OpenSim/Region/Environment/Modules/Terrain/TerrainModule.cs b/OpenSim/Region/Environment/Modules/Terrain/TerrainModule.cs index 83c6658..5931552 100644 --- a/OpenSim/Region/Environment/Modules/Terrain/TerrainModule.cs +++ b/OpenSim/Region/Environment/Modules/Terrain/TerrainModule.cs @@ -36,151 +36,18 @@ using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.Terrain { - public interface ITerrainPaintableEffect - { - void PaintEffect(ITerrainChannel map, double x, double y, double strength, double duration); - } - - public interface ITerrainFloodEffect - { - void FloodEffect(ITerrainChannel map, Boolean[,] fillArea, double strength); - } - - public interface ITerrainEffect - { - void RunEffect(ITerrainChannel map, double strength); - } - - public interface ITerrainLoader - { - ITerrainChannel LoadFile(string filename); - void SaveFile(string filename, ITerrainChannel map); - } - - /// - /// A new version of the old Channel class, simplified - /// - public class TerrainChannel : ITerrainChannel + public class TerrainModule : IRegionModule { - private double[,] map; - private bool[,] taint; - - public int Width - { - get { return map.GetLength(0); } - } - - public int Height - { - get { return map.GetLength(1); } - } - - public TerrainChannel Copy() - { - TerrainChannel copy = new TerrainChannel(false); - copy.map = (double[,])this.map.Clone(); - - return copy; - } - - public float[] GetFloatsSerialised() - { - float[] heights = new float[Width * Height]; - int i; - - for (i = 0; i < Width * Height; i++) - { - heights[i] = (float)map[i % Width, i / Width]; - } - - return heights; - } - - public double[,] GetDoubles() - { - return map; - } - - public double this[int x, int y] - { - get - { - return map[x, y]; - } - set - { - if (map[x, y] != value) - { - taint[x / 16, y / 16] = true; - map[x, y] = value; - } - } - } - - public bool Tainted(int x, int y) + public enum StandardTerrainEffects : byte { - if (taint[x / 16, y / 16] != false) - { - taint[x / 16, y / 16] = false; - return true; - } - else - { - return false; - } + Flatten = 0, + Raise = 1, + Lower = 2, + Smooth = 3, + Noise = 4, + Revert = 5 } - public TerrainChannel() - { - map = new double[Constants.RegionSize, Constants.RegionSize]; - taint = new bool[Constants.RegionSize / 16, Constants.RegionSize / 16]; - - int x, y; - for (x = 0; x < Constants.RegionSize; x++) - { - for (y = 0; y < Constants.RegionSize; y++) - { - map[x, y] = 60.0 - // 60 = Sphere Radius - ((x - (Constants.RegionSize / 2)) * (x - (Constants.RegionSize / 2)) + - (y - (Constants.RegionSize / 2)) * (y - (Constants.RegionSize / 2))); - } - } - } - - public TerrainChannel(double[,] import) - { - map = import; - taint = new bool[import.GetLength(0), import.GetLength(1)]; - } - - public TerrainChannel(bool createMap) - { - if (createMap) - { - map = new double[Constants.RegionSize, Constants.RegionSize]; - taint = new bool[Constants.RegionSize / 16, Constants.RegionSize / 16]; - } - } - - public TerrainChannel(int w, int h) - { - map = new double[w, h]; - taint = new bool[w / 16, h / 16]; - } - } - - public enum StandardTerrainEffects : byte - { - Flatten = 0, - Raise = 1, - Lower = 2, - Smooth = 3, - Noise = 4, - Revert = 5 - } - - public class TerrainModule : IRegionModule - { private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private Dictionary m_painteffects = -- cgit v1.1