From 8194d822301481c56c2e48857e6609409613dd6d Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Wed, 20 Jun 2007 21:57:22 +0000
Subject: * Terrain modification more robust, uses area sizes matching those
employed by the client display. * Terrain tools now account for the duration
the cursor was held for. * Terrain tools now support new brushes (completing
the common set) ** Smooth brush ** Flatten brush ** Revert brush ** Noise
brush
---
.../OpenSim.Region/Scenes/Scene.PacketHandlers.cs | 51 +++++++++++++++++++---
1 file changed, 44 insertions(+), 7 deletions(-)
(limited to 'OpenSim/OpenSim.Region')
diff --git a/OpenSim/OpenSim.Region/Scenes/Scene.PacketHandlers.cs b/OpenSim/OpenSim.Region/Scenes/Scene.PacketHandlers.cs
index 75fe779..01e38d5 100644
--- a/OpenSim/OpenSim.Region/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/OpenSim.Region/Scenes/Scene.PacketHandlers.cs
@@ -41,25 +41,62 @@ namespace OpenSim.Region.Scenes
public partial class Scene
{
///
- ///
+ /// Modifies terrain using the specified information
///
- ///
- ///
- ///
- public void ModifyTerrain(byte action, float north, float west)
+ /// The height at which the user started modifying the terrain
+ /// The number of seconds the modify button was pressed
+ /// The size of the brush used
+ /// The action to be performed
+ /// Distance from the north border where the cursor is located
+ /// Distance from the west border where the cursor is located
+ public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west)
{
+ // Shiny.
+ double size = (double)(1 << brushsize);
+
switch (action)
{
+ case 0:
+ // flatten terrain
+ Terrain.flatten(north, west, size, (double)seconds / 100.0);
+ RegenerateTerrain(true, (int)north, (int)west);
+ break;
case 1:
// raise terrain
- Terrain.raise(north, west, 10.0, 0.001);
+ Terrain.raise(north, west, size, (double)seconds / 100.0);
RegenerateTerrain(true, (int)north, (int)west);
break;
case 2:
//lower terrain
- Terrain.lower(north, west, 10.0, 0.001);
+ Terrain.lower(north, west, size, (double)seconds / 100.0);
+ RegenerateTerrain(true, (int)north, (int)west);
+ break;
+ case 3:
+ // smooth terrain
+ Terrain.smooth(north, west, size, (double)seconds / 100.0);
+ RegenerateTerrain(true, (int)north, (int)west);
+ break;
+ case 4:
+ // noise
+ Terrain.noise(north, west, size, (double)seconds / 100.0);
+ RegenerateTerrain(true, (int)north, (int)west);
+ break;
+ case 5:
+ // revert
+ Terrain.revert(north, west, size, (double)seconds / 100.0);
RegenerateTerrain(true, (int)north, (int)west);
break;
+
+ // CLIENT EXTENSIONS GO HERE
+ case 128:
+ // erode-thermal
+ break;
+ case 129:
+ // erode-aerobic
+ break;
+ case 130:
+ // erode-hydraulic
+ break;
}
return;
}
--
cgit v1.1