diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs new file mode 100644 index 0000000..a54c946 --- /dev/null +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | Redistribution and use in source and binary forms, with or without | ||
3 | modification, are permitted provided that the following conditions are | ||
4 | met: | ||
5 | |||
6 | * Redistributions of source code must retain the above copyright | ||
7 | notice, this list of conditions and the following disclaimer. | ||
8 | |||
9 | * Redistributions in binary form must reproduce the above | ||
10 | copyright notice, this list of conditions and the following | ||
11 | disclaimer in the documentation and/or other materials provided | ||
12 | with the distribution. | ||
13 | |||
14 | * Neither the name of libTerrain nor the names of | ||
15 | its contributors may be used to endorse or promote products | ||
16 | derived from this software without specific prior written | ||
17 | permission. | ||
18 | |||
19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
30 | */ | ||
31 | |||
32 | using System; | ||
33 | using System.Collections.Generic; | ||
34 | using System.Text; | ||
35 | |||
36 | namespace libTerrain | ||
37 | { | ||
38 | partial class Channel | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// Generates 'number' of worms which navigate randomly around the landscape creating terrain as they go. | ||
42 | /// </summary> | ||
43 | /// <param name="number">The number of worms which will traverse the map</param> | ||
44 | /// <param name="rounds">The number of steps each worm will traverse</param> | ||
45 | /// <param name="movement">The maximum distance each worm will move each step</param> | ||
46 | /// <param name="size">The size of the area around the worm modified</param> | ||
47 | /// <param name="centerspawn">Do worms start in the middle, or randomly?</param> | ||
48 | public void worms(int number, int rounds, double movement, double size, bool centerspawn) | ||
49 | { | ||
50 | Random random = new Random(seed); | ||
51 | int i, j; | ||
52 | |||
53 | for (i = 0; i < number; i++) | ||
54 | { | ||
55 | double rx, ry; | ||
56 | if (centerspawn) | ||
57 | { | ||
58 | rx = w / 2.0; | ||
59 | ry = h / 2.0; | ||
60 | } | ||
61 | else | ||
62 | { | ||
63 | rx = random.NextDouble() * (w - 1); | ||
64 | ry = random.NextDouble() * (h - 1); | ||
65 | } | ||
66 | for (j = 0; j < rounds; j++) | ||
67 | { | ||
68 | rx += (random.NextDouble() * movement) - (movement / 2.0); | ||
69 | ry += (random.NextDouble() * movement) - (movement / 2.0); | ||
70 | raise(rx, ry, size, 1.0); | ||
71 | } | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | } \ No newline at end of file | ||