* Added try{}catch{} to RunTerrainCmd

* Exposed Thermal Erosion functions to RunTerrainCmd
* Exposed Aerobic Erosion functions to RunTerrainCmd
0.1-prestable
Adam Frisby 2007-04-24 18:18:18 +00:00
parent 7dd98f3094
commit 46eaa79cd9
1 changed files with 87 additions and 58 deletions

View File

@ -102,81 +102,110 @@ namespace OpenSim.Terrain
/// <summary> /// <summary>
/// Processes a terrain-specific command /// Processes a terrain-specific command
/// </summary> /// </summary>
/// <remarks>TODO: Move this into BasicTerrain directly (no need to hard limit what each terrain engine can support)</remarks> /// <param name="args">Commandline arguments (space seperated)</param>
/// <param name="args"></param> /// <param name="resultText">Reference that returns error or help text if returning false</param>
/// <returns>If the operation was successful (if not, the error is placed into resultText)</returns>
public bool RunTerrainCmd(string[] args, ref string resultText) public bool RunTerrainCmd(string[] args, ref string resultText)
{ {
string command = args[0]; string command = args[0];
switch (command)
try
{ {
case "help":
resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n";
resultText += "terrain seed <seed> - sets the random seed value to <seed>\n";
resultText += "terrain load <type> <filename> - loads a terrain from disk, type can be 'F32', 'F64' or 'IMG'\n";
resultText += "terrain save <type> <filename> - saves a terrain to disk, type can be 'F32' or 'F64'\n";
resultText += "terrain rescale <min> <max> - rescales a terrain to be between <min> and <max> meters high\n";
resultText += "terrain multiply <val> - multiplies a terrain by <val>\n";
return false;
case "seed": switch (command)
setSeed(Convert.ToInt32(args[1])); {
break; case "help":
resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n";
resultText += "terrain seed <seed> - sets the random seed value to <seed>\n";
resultText += "terrain load <type> <filename> - loads a terrain from disk, type can be 'F32', 'F64' or 'IMG'\n";
resultText += "terrain save <type> <filename> - saves a terrain to disk, type can be 'F32' or 'F64'\n";
resultText += "terrain rescale <min> <max> - rescales a terrain to be between <min> and <max> meters high\n";
resultText += "terrain erode aerobic <windspeed> <pickupmin> <dropmin> <carry> <rounds> <lowest>\n";
resultText += "terrain erode thermal <talus> <rounds> <carry>\n";
resultText += "terrain multiply <val> - multiplies a terrain by <val>\n";
return false;
case "regenerate": case "seed":
hills(); setSeed(Convert.ToInt32(args[1]));
break; break;
case "rescale": case "erode":
setRange(Convert.ToSingle(args[1]), Convert.ToSingle(args[2])); switch (args[1].ToLower())
break; {
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;
}
break;
case "multiply": case "regenerate":
heightmap *= Convert.ToDouble(args[1]); hills();
break; break;
case "load": case "rescale":
switch (args[1].ToLower()) setRange(Convert.ToSingle(args[1]), Convert.ToSingle(args[2]));
{ break;
case "f32":
loadFromFileF32(args[2]);
break;
case "f64": case "multiply":
loadFromFileF64(args[2]); heightmap *= Convert.ToDouble(args[1]);
break; break;
case "img": case "load":
resultText = "Error - IMG mode is presently unsupported."; switch (args[1].ToLower())
return false; {
case "f32":
loadFromFileF32(args[2]);
break;
default: case "f64":
resultText = "Unknown image or data format"; loadFromFileF64(args[2]);
return false; break;
}
break;
case "save": case "img":
switch (args[1].ToLower()) resultText = "Error - IMG mode is presently unsupported.";
{ return false;
case "f32":
writeToFileF32(args[2]);
break;
case "f64": default:
writeToFileF64(args[2]); resultText = "Unknown image or data format";
break; return false;
}
break;
default: case "save":
resultText = "Unknown image or data format"; switch (args[1].ToLower())
return false; {
} case "f32":
break; writeToFileF32(args[2]);
break;
default: case "f64":
resultText = "Unknown terrain command"; writeToFileF64(args[2]);
return false; break;
default:
resultText = "Unknown image or data format";
return false;
}
break;
default:
resultText = "Unknown terrain command";
return false;
}
return true;
}
catch (Exception e)
{
resultText = "Error running terrain command: " + e.ToString();
return false;
} }
return true;
} }
/// <summary> /// <summary>