diff options
author | Adam Frisby | 2007-06-20 21:57:22 +0000 |
---|---|---|
committer | Adam Frisby | 2007-06-20 21:57:22 +0000 |
commit | 8194d822301481c56c2e48857e6609409613dd6d (patch) | |
tree | b2036fe5cc82334623810c67bee7b0da180ba231 /OpenSim/OpenSim.Terrain.BasicTerrain | |
parent | * Bonus commit: "terrain save" now supports a 'PNG' method. (diff) | |
download | opensim-SC-8194d822301481c56c2e48857e6609409613dd6d.zip opensim-SC-8194d822301481c56c2e48857e6609409613dd6d.tar.gz opensim-SC-8194d822301481c56c2e48857e6609409613dd6d.tar.bz2 opensim-SC-8194d822301481c56c2e48857e6609409613dd6d.tar.xz |
* 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
Diffstat (limited to '')
-rw-r--r-- | OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs index 2d0fb30..d1d54ad 100644 --- a/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | |||
@@ -542,6 +542,89 @@ namespace OpenSim.Terrain | |||
542 | } | 542 | } |
543 | 543 | ||
544 | /// <summary> | 544 | /// <summary> |
545 | /// Flattens the land under the brush of specified coordinates (spherical mask) | ||
546 | /// </summary> | ||
547 | /// <param name="rx">Center of sphere</param> | ||
548 | /// <param name="ry">Center of sphere</param> | ||
549 | /// <param name="size">Radius of the sphere</param> | ||
550 | /// <param name="amount">Thickness of the mask (0..2 recommended)</param> | ||
551 | public void flatten(double rx, double ry, double size, double amount) | ||
552 | { | ||
553 | lock (heightmap) | ||
554 | { | ||
555 | heightmap.flatten(rx, ry, size, amount); | ||
556 | } | ||
557 | |||
558 | tainted++; | ||
559 | } | ||
560 | |||
561 | /// <summary> | ||
562 | /// Creates noise within the specified bounds | ||
563 | /// </summary> | ||
564 | /// <param name="rx">Center of the bounding sphere</param> | ||
565 | /// <param name="ry">Center of the bounding sphere</param> | ||
566 | /// <param name="size">The radius of the sphere</param> | ||
567 | /// <param name="amount">Strength of the mask (0..2) recommended</param> | ||
568 | public void noise(double rx, double ry, double size, double amount) | ||
569 | { | ||
570 | lock (heightmap) | ||
571 | { | ||
572 | Channel smoothed = new Channel(); | ||
573 | smoothed.noise(); | ||
574 | |||
575 | Channel mask = new Channel(); | ||
576 | mask.raise(rx, ry, size, amount); | ||
577 | |||
578 | heightmap.blend(smoothed, mask); | ||
579 | } | ||
580 | |||
581 | tainted++; | ||
582 | } | ||
583 | |||
584 | /// <summary> | ||
585 | /// Reverts land within the specified bounds | ||
586 | /// </summary> | ||
587 | /// <param name="rx">Center of the bounding sphere</param> | ||
588 | /// <param name="ry">Center of the bounding sphere</param> | ||
589 | /// <param name="size">The radius of the sphere</param> | ||
590 | /// <param name="amount">Strength of the mask (0..2) recommended</param> | ||
591 | public void revert(double rx, double ry, double size, double amount) | ||
592 | { | ||
593 | lock (heightmap) | ||
594 | { | ||
595 | Channel mask = new Channel(); | ||
596 | mask.raise(rx, ry, size, amount); | ||
597 | |||
598 | heightmap.blend(revertmap, mask); | ||
599 | } | ||
600 | |||
601 | tainted++; | ||
602 | } | ||
603 | |||
604 | /// <summary> | ||
605 | /// Smooths land under the brush of specified coordinates (spherical mask) | ||
606 | /// </summary> | ||
607 | /// <param name="rx">Center of the sphere</param> | ||
608 | /// <param name="ry">Center of the sphere</param> | ||
609 | /// <param name="size">Radius of the sphere</param> | ||
610 | /// <param name="amount">Thickness of the mask (0..2 recommended)</param> | ||
611 | public void smooth(double rx, double ry, double size, double amount) | ||
612 | { | ||
613 | lock (heightmap) | ||
614 | { | ||
615 | Channel smoothed = heightmap.copy(); | ||
616 | smoothed.smooth(amount); | ||
617 | |||
618 | Channel mask = new Channel(); | ||
619 | mask.raise(rx,ry,size,amount); | ||
620 | |||
621 | heightmap.blend(smoothed, mask); | ||
622 | } | ||
623 | |||
624 | tainted++; | ||
625 | } | ||
626 | |||
627 | /// <summary> | ||
545 | /// Generates a simple set of hills in the shape of an island | 628 | /// Generates a simple set of hills in the shape of an island |
546 | /// </summary> | 629 | /// </summary> |
547 | public void hills() | 630 | public void hills() |