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