From 29053589bff370916f4067dade70969499f77ce3 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Wed, 20 Jun 2007 15:50:06 +0000 Subject: * Replaced old logging mechanism with new shiny logging mechanism * Console, I bid thee farewall. Use "Log" now where console used to exist. --- .../OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | 112 ++++++++++++++++++--- 1 file changed, 99 insertions(+), 13 deletions(-) (limited to 'OpenSim/OpenSim.Terrain.BasicTerrain') diff --git a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs index fc4ca24..c78af05 100644 --- a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs @@ -34,6 +34,17 @@ using OpenJPEGNet; namespace OpenSim.Terrain { + public class TerrainCommand + { + public virtual bool run(string[] cmdargs, ref string output) + { + return false; + } + + public string args; + public string help; + } + public class TerrainEngine { /// @@ -42,6 +53,16 @@ namespace OpenSim.Terrain public Channel heightmap; /// + /// A copy of heightmap at the last save point (for reverting) + /// + public Channel revertmap; + + /// + /// Water heightmap (needs clientside mods to work) + /// + public Channel watermap; + + /// /// Whether or not the terrain has been modified since it was last saved and sent to the Physics engine. /// Counts the number of modifications since the last save. (0 = Untainted) /// @@ -145,6 +166,7 @@ namespace OpenSim.Terrain { case "help": resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n"; + resultText += "terrain voronoi - generates a worley fractal with X points per block"; resultText += "terrain seed - sets the random seed value to \n"; resultText += "terrain load - loads a terrain from disk, type can be 'F32', 'F64', 'RAW' or 'IMG'\n"; resultText += "terrain save - saves a terrain to disk, type can be 'F32' or 'F64'\n"; @@ -160,21 +182,18 @@ namespace OpenSim.Terrain break; case "erode": - switch (args[1].ToLower()) - { - case "aerobic": - // WindSpeed, PickupMinimum,DropMinimum,Carry,Rounds,Lowest - heightmap.AerobicErosion(Convert.ToDouble(args[2]), Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), Convert.ToDouble(args[5]), Convert.ToInt32(args[6]), Convert.ToBoolean(args[7])); - break; - case "thermal": - heightmap.thermalWeathering(Convert.ToDouble(args[2]), Convert.ToInt32(args[3]), Convert.ToDouble(args[4])); - break; - default: - resultText = "Unknown erosion type"; - return false; - } + return consoleErosion(args, ref resultText); + + case "voronoi": + double[] c = new double[2]; + c[0] = -1; + c[1] = 1; + heightmap.voronoiDiagram(Convert.ToInt32(args[1]), Convert.ToInt32(args[2]), c); break; + case "hills": + return consoleHills(args, ref resultText); + case "regenerate": hills(); break; @@ -246,6 +265,73 @@ namespace OpenSim.Terrain } } + private bool consoleErosion(string[] args, ref string resultText) + { + switch (args[1].ToLower()) + { + case "aerobic": + // WindSpeed, PickupMinimum,DropMinimum,Carry,Rounds,Lowest + heightmap.AerobicErosion(Convert.ToDouble(args[2]), Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), Convert.ToDouble(args[5]), Convert.ToInt32(args[6]), Convert.ToBoolean(args[7])); + break; + case "thermal": + heightmap.thermalWeathering(Convert.ToDouble(args[2]), Convert.ToInt32(args[3]), Convert.ToDouble(args[4])); + break; + default: + resultText = "Unknown erosion type"; + return false; + } + return true; + } + + private bool consoleHills(string[] args, ref string resultText) + { + int count; + double sizeMin; + double sizeRange; + bool island; + bool additive; + bool noisy; + + if (args.GetLength(0) > 2) + { + count = Convert.ToInt32(args[2]); + sizeMin = Convert.ToDouble(args[3]); + sizeRange = Convert.ToDouble(args[4]); + island = Convert.ToBoolean(args[5]); + additive = Convert.ToBoolean(args[6]); + noisy = Convert.ToBoolean(args[7]); + } + else + { + count = 200; + sizeMin = 20; + sizeRange = 40; + island = true; + additive = true; + noisy = false; + } + + switch (args[1].ToLower()) + { + case "blocks": + heightmap.hillsBlocks(count, sizeMin, sizeRange, island, additive, noisy); + break; + case "cones": + heightmap.hillsCones(count, sizeMin, sizeRange, island, additive, noisy); + break; + case "spheres": + heightmap.hillsSpheres(count, sizeMin, sizeRange, island, additive, noisy); + break; + case "squared": + heightmap.hillsSquared(count, sizeMin, sizeRange, island, additive, noisy); + break; + default: + resultText = "Unknown hills type"; + return false; + } + return true; + } + /// /// Renormalises the array between min and max /// -- cgit v1.1