* 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 brushSugilite
parent
e4c915eebc
commit
8194d82230
|
@ -37,7 +37,7 @@ namespace OpenSim.Framework.Interfaces
|
|||
{
|
||||
public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
|
||||
public delegate void RezObject(AssetBase primAsset, LLVector3 pos);
|
||||
public delegate void ModifyTerrain(byte action, float north, float west);
|
||||
public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west);
|
||||
public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
|
||||
public delegate void StartAnim(LLUUID animID, int seq);
|
||||
public delegate void LinkObjects(uint parent, List<uint> children);
|
||||
|
|
78
OpenSim.sln
78
OpenSim.sln
|
@ -55,84 +55,6 @@ Global
|
|||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectDependencies) = postSolution
|
||||
({683344D5-0000-0000-0000-000000000000}).1 = ({62CDF671-0000-0000-0000-000000000000})
|
||||
({683344D5-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({39BD9497-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).5 = ({E88EF749-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).6 = ({8BB20F0A-0000-0000-0000-000000000000})
|
||||
({DA9A7391-0000-0000-0000-000000000000}).10 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).3 = ({683344D5-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).4 = ({1938EB12-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).7 = ({E88EF749-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).8 = ({79CED992-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).10 = ({196916AF-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).11 = ({632E1BFD-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).12 = ({8BB20F0A-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).13 = ({2270B8FE-0000-0000-0000-000000000000})
|
||||
({438A9556-0000-0000-0000-000000000000}).16 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({1938EB12-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({8ACA2445-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({8ACA2445-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({E88EF749-0000-0000-0000-000000000000}).0 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({546099CD-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({546099CD-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({B55C0B5D-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({B55C0B5D-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({B55C0B5D-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({79CED992-0000-0000-0000-000000000000}).1 = ({683344D5-0000-0000-0000-000000000000})
|
||||
({79CED992-0000-0000-0000-000000000000}).2 = ({62CDF671-0000-0000-0000-000000000000})
|
||||
({79CED992-0000-0000-0000-000000000000}).3 = ({DA9A7391-0000-0000-0000-000000000000})
|
||||
({79CED992-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({4F874463-0000-0000-0000-000000000000}).1 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({8BE16150-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({8BE16150-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({988F0AC4-0000-0000-0000-000000000000}).1 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).3 = ({683344D5-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).4 = ({1938EB12-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).7 = ({E88EF749-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).8 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).10 = ({2270B8FE-0000-0000-0000-000000000000})
|
||||
({196916AF-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).3 = ({1938EB12-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).6 = ({E88EF749-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).8 = ({196916AF-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).10 = ({2270B8FE-0000-0000-0000-000000000000})
|
||||
({632E1BFD-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({8BB20F0A-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({8BB20F0A-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({8BB20F0A-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
({EE9E5D96-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({EE9E5D96-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({E1B79ECF-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({E1B79ECF-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({6B20B603-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({6B20B603-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).1 = ({683344D5-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).2 = ({1938EB12-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).5 = ({546099CD-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).6 = ({79CED992-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).7 = ({196916AF-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).8 = ({632E1BFD-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
|
||||
({24B12448-0000-0000-0000-000000000000}).13 = ({8E81D43C-0000-0000-0000-000000000000})
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{683344D5-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
|
|
|
@ -19,13 +19,13 @@ namespace SimpleApp
|
|||
{
|
||||
class Program : IAssetReceiver, conscmd_callback
|
||||
{
|
||||
private LogBase m_console;
|
||||
private LogBase m_log;
|
||||
AuthenticateSessionsBase m_circuitManager;
|
||||
|
||||
private void Run()
|
||||
{
|
||||
m_console = new LogBase(null, "SimpleApp", this, false);
|
||||
MainLog.Instance = m_console;
|
||||
m_log = new LogBase(null, "SimpleApp", this, false);
|
||||
MainLog.Instance = m_log;
|
||||
|
||||
CheckSumServer checksumServer = new CheckSumServer(12036);
|
||||
checksumServer.ServerListener();
|
||||
|
@ -47,7 +47,7 @@ namespace SimpleApp
|
|||
|
||||
AssetCache assetCache = new AssetCache(assetServer);
|
||||
|
||||
UDPServer udpServer = new UDPServer(simPort, assetCache, inventoryCache, m_console, m_circuitManager );
|
||||
UDPServer udpServer = new UDPServer(simPort, assetCache, inventoryCache, m_log, m_circuitManager );
|
||||
PacketServer packetServer = new PacketServer( udpServer, (uint) simPort );
|
||||
udpServer.ServerListener();
|
||||
|
||||
|
@ -68,13 +68,13 @@ namespace SimpleApp
|
|||
httpServer.AddXmlRPCHandler( "login_to_simulator", loginServer.XmlRpcLoginMethod );
|
||||
httpServer.Start();
|
||||
|
||||
m_console.WriteLine( LogPriority.NORMAL, "Press enter to quit.");
|
||||
m_console.ReadLine();
|
||||
m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit.");
|
||||
m_log.ReadLine();
|
||||
}
|
||||
|
||||
private bool AddNewSessionHandler(ulong regionHandle, Login loginData)
|
||||
{
|
||||
m_console.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last);
|
||||
m_log.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last);
|
||||
|
||||
AgentCircuitData agent = new AgentCircuitData();
|
||||
agent.AgentID = loginData.Agent;
|
||||
|
|
|
@ -41,25 +41,62 @@ namespace OpenSim.Region.Scenes
|
|||
public partial class Scene
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// Modifies terrain using the specified information
|
||||
/// </summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="north"></param>
|
||||
/// <param name="west"></param>
|
||||
public void ModifyTerrain(byte action, float north, float west)
|
||||
/// <param name="height">The height at which the user started modifying the terrain</param>
|
||||
/// <param name="seconds">The number of seconds the modify button was pressed</param>
|
||||
/// <param name="brushsize">The size of the brush used</param>
|
||||
/// <param name="action">The action to be performed</param>
|
||||
/// <param name="north">Distance from the north border where the cursor is located</param>
|
||||
/// <param name="west">Distance from the west border where the cursor is located</param>
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,8 @@ namespace OpenSim
|
|||
{
|
||||
if (OnModifyTerrain != null)
|
||||
{
|
||||
OnModifyTerrain(modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West);
|
||||
OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, modify.ModifyBlock.BrushSize,
|
||||
modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -541,6 +541,89 @@ namespace OpenSim.Terrain
|
|||
tainted++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Flattens the land under the brush of specified coordinates (spherical mask)
|
||||
/// </summary>
|
||||
/// <param name="rx">Center of sphere</param>
|
||||
/// <param name="ry">Center of sphere</param>
|
||||
/// <param name="size">Radius of the sphere</param>
|
||||
/// <param name="amount">Thickness of the mask (0..2 recommended)</param>
|
||||
public void flatten(double rx, double ry, double size, double amount)
|
||||
{
|
||||
lock (heightmap)
|
||||
{
|
||||
heightmap.flatten(rx, ry, size, amount);
|
||||
}
|
||||
|
||||
tainted++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates noise within the specified bounds
|
||||
/// </summary>
|
||||
/// <param name="rx">Center of the bounding sphere</param>
|
||||
/// <param name="ry">Center of the bounding sphere</param>
|
||||
/// <param name="size">The radius of the sphere</param>
|
||||
/// <param name="amount">Strength of the mask (0..2) recommended</param>
|
||||
public void noise(double rx, double ry, double size, double amount)
|
||||
{
|
||||
lock (heightmap)
|
||||
{
|
||||
Channel smoothed = new Channel();
|
||||
smoothed.noise();
|
||||
|
||||
Channel mask = new Channel();
|
||||
mask.raise(rx, ry, size, amount);
|
||||
|
||||
heightmap.blend(smoothed, mask);
|
||||
}
|
||||
|
||||
tainted++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reverts land within the specified bounds
|
||||
/// </summary>
|
||||
/// <param name="rx">Center of the bounding sphere</param>
|
||||
/// <param name="ry">Center of the bounding sphere</param>
|
||||
/// <param name="size">The radius of the sphere</param>
|
||||
/// <param name="amount">Strength of the mask (0..2) recommended</param>
|
||||
public void revert(double rx, double ry, double size, double amount)
|
||||
{
|
||||
lock (heightmap)
|
||||
{
|
||||
Channel mask = new Channel();
|
||||
mask.raise(rx, ry, size, amount);
|
||||
|
||||
heightmap.blend(revertmap, mask);
|
||||
}
|
||||
|
||||
tainted++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Smooths land under the brush of specified coordinates (spherical mask)
|
||||
/// </summary>
|
||||
/// <param name="rx">Center of the sphere</param>
|
||||
/// <param name="ry">Center of the sphere</param>
|
||||
/// <param name="size">Radius of the sphere</param>
|
||||
/// <param name="amount">Thickness of the mask (0..2 recommended)</param>
|
||||
public void smooth(double rx, double ry, double size, double amount)
|
||||
{
|
||||
lock (heightmap)
|
||||
{
|
||||
Channel smoothed = heightmap.copy();
|
||||
smoothed.smooth(amount);
|
||||
|
||||
Channel mask = new Channel();
|
||||
mask.raise(rx,ry,size,amount);
|
||||
|
||||
heightmap.blend(smoothed, mask);
|
||||
}
|
||||
|
||||
tainted++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generates a simple set of hills in the shape of an island
|
||||
/// </summary>
|
||||
|
|
Loading…
Reference in New Issue