aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim.RegionServer/world/World.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim.RegionServer/world/World.cs')
-rw-r--r--OpenSim.RegionServer/world/World.cs45
1 files changed, 45 insertions, 0 deletions
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs
index 82e8b8d..66247a2 100644
--- a/OpenSim.RegionServer/world/World.cs
+++ b/OpenSim.RegionServer/world/World.cs
@@ -426,5 +426,50 @@ namespace OpenSim.world
426 return true; 426 return true;
427 } 427 }
428 428
429 #region Packet Handlers
430 public bool ModifyTerrain(SimClient simClient, Packet packet)
431 {
432 ModifyLandPacket modify = (ModifyLandPacket)packet;
433
434 switch (modify.ModifyBlock.Action)
435 {
436 case 1:
437 // raise terrain
438 if (modify.ParcelData.Length > 0)
439 {
440 int mody = (int)modify.ParcelData[0].North;
441 int modx = (int)modify.ParcelData[0].West;
442 lock (LandMap)
443 {
444 LandMap[(mody * 256) + modx - 1] += 0.05f;
445 LandMap[(mody * 256) + modx] += 0.1f;
446 LandMap[(mody * 256) + modx + 1] += 0.05f;
447 LandMap[((mody + 1) * 256) + modx] += 0.05f;
448 LandMap[((mody - 1) * 256) + modx] += 0.05f;
449 }
450 RegenerateTerrain(true, modx, mody);
451 }
452 break;
453 case 2:
454 //lower terrain
455 if (modify.ParcelData.Length > 0)
456 {
457 int mody = (int)modify.ParcelData[0].North;
458 int modx = (int)modify.ParcelData[0].West;
459 lock (LandMap)
460 {
461 LandMap[(mody * 256) + modx - 1] -= 0.05f;
462 LandMap[(mody * 256) + modx] -= 0.1f;
463 LandMap[(mody * 256) + modx + 1] -= 0.05f;
464 LandMap[((mody + 1) * 256) + modx] -= 0.05f;
465 LandMap[((mody - 1) * 256) + modx] -= 0.05f;
466 }
467 RegenerateTerrain(true, modx, mody);
468 }
469 break;
470 }
471 return true;
472 }
473 #endregion
429 } 474 }
430} 475}