diff options
author | Adam Frisby | 2008-02-26 14:51:13 +0000 |
---|---|---|
committer | Adam Frisby | 2008-02-26 14:51:13 +0000 |
commit | eae7be1e36733580f67da742403147701f8a8d08 (patch) | |
tree | 4d47b6673fe246b96f8f34bb3a4e74ef2649a35f /OpenSim/Region/Environment/Modules/Terrain/PaintBrushes | |
parent | * Another slight tweak to the Voice Chat engine - crash caused by switching t... (diff) | |
download | opensim-SC-eae7be1e36733580f67da742403147701f8a8d08.zip opensim-SC-eae7be1e36733580f67da742403147701f8a8d08.tar.gz opensim-SC-eae7be1e36733580f67da742403147701f8a8d08.tar.bz2 opensim-SC-eae7be1e36733580f67da742403147701f8a8d08.tar.xz |
* Reimplementing Terrain as Region Modules
* New method involves interfaces for
** Terrain Paint Brushes (ie raise brush, lower brush, etc)
** Terrain Flood Brushes (ie raise area, lower area, etc)
** Terrain Effects (ie erosion, etc) [= W.I.P, not committed]
* Provided sample implementation for Raise Paint and Raise Area brushes.
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Terrain/PaintBrushes')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Terrain/PaintBrushes/RaiseSphere.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Modules/Terrain/PaintBrushes/RaiseSphere.cs b/OpenSim/Region/Environment/Modules/Terrain/PaintBrushes/RaiseSphere.cs new file mode 100644 index 0000000..cf95f3f --- /dev/null +++ b/OpenSim/Region/Environment/Modules/Terrain/PaintBrushes/RaiseSphere.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Region.Environment.Modules.Terrain; | ||
5 | using OpenSim.Region.Environment.Interfaces; | ||
6 | |||
7 | namespace OpenSim.Region.Environment.Modules.Terrain.PaintBrushes | ||
8 | { | ||
9 | class RaiseSphere : ITerrainPaintableEffect | ||
10 | { | ||
11 | #region ITerrainPaintableEffect Members | ||
12 | |||
13 | public void PaintEffect(ITerrainChannel map, double rx, double ry, double strength) | ||
14 | { | ||
15 | int x, y; | ||
16 | for (x = 0; x < map.Width; x++) | ||
17 | { | ||
18 | // Skip everything unlikely to be affected | ||
19 | if (Math.Abs(x - rx) > strength * 1.1) | ||
20 | continue; | ||
21 | |||
22 | for (y = 0; y < map.Height; y++) | ||
23 | { | ||
24 | // Skip everything unlikely to be affected | ||
25 | if (Math.Abs(y - ry) > strength * 1.1) | ||
26 | continue; | ||
27 | |||
28 | // Calculate a sphere and add it to the heighmap | ||
29 | double z = strength; | ||
30 | z *= z; | ||
31 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | ||
32 | |||
33 | if (z > 0.0) | ||
34 | map[x, y] += z; | ||
35 | } | ||
36 | } | ||
37 | } | ||
38 | |||
39 | #endregion | ||
40 | } | ||
41 | } | ||