* Added try{}catch{} to RunTerrainCmd
* Exposed Thermal Erosion functions to RunTerrainCmd * Exposed Aerobic Erosion functions to RunTerrainCmd0.1-prestable
parent
7dd98f3094
commit
46eaa79cd9
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue