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