本文整理汇总了C#中ITerrainChannel类的典型用法代码示例。如果您正苦于以下问题:C# ITerrainChannel类的具体用法?C# ITerrainChannel怎么用?C# ITerrainChannel使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ITerrainChannel类属于命名空间,在下文中一共展示了ITerrainChannel类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: FloodEffect
public void FloodEffect (ITerrainChannel map, UUID userID, float north,
float west, float south, float east, float strength)
{
float sum = 0;
float steps = 0;
int x, y;
for (x = (int)west; x < (int)east; x++) {
for (y = (int)south; y < (int)north; y++) {
if (!map.Scene.Permissions.CanTerraformLand (userID, new Vector3 (x, y, 0)))
continue;
sum += map [x, y];
steps += 1;
}
}
float avg = sum / steps;
float str = 0.1f * strength; // == 0.2 in the default client
for (x = (int)west; x < (int)east; x++) {
for (y = (int)south; y < (int)north; y++) {
if (!map.Scene.Permissions.CanTerraformLand (userID, new Vector3 (x, y, 0)))
continue;
map [x, y] = (map [x, y] * (1 - str)) + (avg * str);
}
}
}
开发者ID:Virtual-Universe,项目名称:Virtual-Universe,代码行数:28,代码来源:FlattenArea.cs
示例2: FloodEffect
public void FloodEffect(ITerrainChannel map, bool[,] fillArea, double strength,
int startX, int endX, int startY, int endY)
{
double sum = 0.0;
double steps = 0.0;
int x, y;
for (x = startX; x <= endX; x++)
{
for (y = startY; y <= endY; y++)
{
if (fillArea[x, y])
{
sum += map[x, y];
steps += 1.0;
}
}
}
double avg = sum / steps;
double str = 0.1 * strength; // == 0.2 in the default client
for (x = startX; x <= endX; x++)
{
for (y = startY; y <= endY; y++)
{
if (fillArea[x, y])
map[x, y] = (map[x, y] * (1.0 - str)) + (avg * str);
}
}
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:32,代码来源:FlattenArea.cs
示例3: GetBilinearInterpolate
public static double GetBilinearInterpolate(double x, double y, ITerrainChannel map)
{
int w = map.Width;
int h = map.Height;
if (x > w - 2.0)
x = w - 2.0;
if (y > h - 2.0)
y = h - 2.0;
if (x < 0.0)
x = 0.0;
if (y < 0.0)
y = 0.0;
const int stepSize = 1;
double h00 = map[(int) x, (int) y];
double h10 = map[(int) x + stepSize, (int) y];
double h01 = map[(int) x, (int) y + stepSize];
double h11 = map[(int) x + stepSize, (int) y + stepSize];
double h1 = h00;
double h2 = h10;
double h3 = h01;
double h4 = h11;
double a00 = h1;
double a10 = h2 - h1;
double a01 = h3 - h1;
double a11 = h1 - h2 - h3 + h4;
double partialx = x - (int) x;
double partialz = y - (int) y;
double hi = a00 + (a10 * partialx) + (a01 * partialz) + (a11 * partialx * partialz);
return hi;
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:32,代码来源:TerrainUtil.cs
示例4: FloodEffect
public void FloodEffect(ITerrainChannel map, bool[,] fillArea, double strength)
{
double sum = 0.0;
double steps = 0.0;
int x, y;
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
if (fillArea[x, y])
{
sum += map[x, y];
steps += 1.0;
}
}
}
double avg = sum / steps;
double str = 0.1 * strength; // == 0.2 in the default client
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
if (fillArea[x, y])
map[x, y] = (map[x, y] * (1.0 - str)) + (avg * str);
}
}
}
开发者ID:RadaSangOn,项目名称:workCore2,代码行数:31,代码来源:FlattenArea.cs
示例5: Compare
public bool Compare(ITerrainChannel terrainChannel)
{
if (m_terrainChannel != terrainChannel)
return false;
else
return false;
}
开发者ID:QueenStarfinder,项目名称:WhiteCore-Dev,代码行数:7,代码来源:UndoState.cs
示例6: FloodEffect
public void FloodEffect(ITerrainChannel map, UUID userID, float north,
float west, float south, float east, float strength)
{
float area = strength;
float step = strength/4;
for (int x = (int) west; x < (int) east; x++)
{
for (int y = (int) south; y < (int) north; y++)
{
if (!map.Scene.Permissions.CanTerraformLand(userID, new Vector3(x, y, 0)))
continue;
float average = 0;
int avgsteps = 0;
float n;
for (n = 0 - area; n < area; n += step)
{
float l;
for (l = 0 - area; l < area; l += step)
{
avgsteps++;
average += TerrainUtil.GetBilinearInterpolate(x + n, y + l, map);
}
}
map[x, y] = average/avgsteps;
}
}
}
开发者ID:QueenStarfinder,项目名称:WhiteCore-Dev,代码行数:31,代码来源:SmoothArea.cs
示例7: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz,
double strength, double duration, int startX, int endX, int startY, int endY)
{
strength = TerrainUtil.MetersToSphericalStrength(strength);
int x, y;
for (x = startX; x <= endX; x++)
{
for (y = startY; y <= endY; y++)
{
if (!mask[x, y])
continue;
// Calculate a sphere and add it to the heighmap
double z = strength;
z *= z;
z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry));
double noise = TerrainUtil.PerlinNoise2D(x / (double) map.Width, y / (double) map.Height, 8, 1.0);
if (z > 0.0)
map[x, y] += noise * z * duration;
}
}
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:26,代码来源:NoiseSphere.cs
示例8: SaveFile
public virtual void SaveFile(ITerrainChannel m_channel, string filename,
int offsetX, int offsetY,
int fileWidth, int fileHeight,
int regionSizeX, int regionSizeY)
{
throw new System.Exception("Not Implemented");
}
开发者ID:BackupTheBerlios,项目名称:seleon,代码行数:7,代码来源:JPEG.cs
示例9: CreateBitmapFromMap
private static Bitmap CreateBitmapFromMap(ITerrainChannel map)
{
Bitmap gradientmapLd = new Bitmap("defaultstripe.png");
int pallete = gradientmapLd.Height;
Bitmap bmp = new Bitmap(map.Width, map.Height);
Color[] colours = new Color[pallete];
for (int i = 0; i < pallete; i++)
{
colours[i] = gradientmapLd.GetPixel(0, i);
}
for (int y = 0; y < map.Height; y++)
{
for (int x = 0; x < map.Width; x++)
{
// 512 is the largest possible height before colours clamp
int colorindex = (int) (Math.Max(Math.Min(1.0, map[x, y] / 512.0), 0.0) * (pallete - 1));
bmp.SetPixel(x, map.Height - y - 1, colours[colorindex]);
}
}
return bmp;
}
开发者ID:AlphaStaxLLC,项目名称:taiga,代码行数:25,代码来源:JPEG.cs
示例10: ModifyTerrain
public override string ModifyTerrain(ITerrainChannel map, string[] args)
{
string result;
if (args.Length < 3)
{
result = "Usage: " + GetUsage();
}
else
{
TerrainModifierData data;
result = this.parseParameters(args, out data);
// Context-specific validation
if (result == String.Empty)
{
if (data.shape == String.Empty)
{
data.shape = "rectangle";
data.x0 = 0;
data.y0 = 0;
data.dx = map.Width;
data.dy = map.Height;
}
}
// if it's all good, then do the work
if (result == String.Empty)
{
this.applyModification(map, data);
}
}
return result;
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:34,代码来源:FillModifier.cs
示例11: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz,
double strength, double duration, int startX, int endX, int startY, int endY)
{
int s = (int) (Math.Pow(2, strength) + 0.5);
int x, y;
for (x = startX; x <= endX; x++)
{
for (y = startY; y <= endY; y++)
{
if (!mask[x, y])
continue;
// Calculate a cos-sphere and add it to the heighmap
double r = Math.Sqrt((x-rx) * (x-rx) + ((y-ry) * (y-ry)));
double z = Math.Cos(r * Math.PI / (s * 2));
if (z > 0.0)
{
double newz = map[x, y] - z * duration;
if (newz < 0.0)
map[x, y] = 0.0;
else
map[x, y] = newz;
}
}
}
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:29,代码来源:LowerSphere.cs
示例12: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz, double strength, double duration)
{
strength = TerrainUtil.MetersToSphericalStrength(strength);
int x;
for (x = 0; x < map.Width; x++)
{
int y;
for (y = 0; y < map.Height; y++)
{
if (!mask[x,y])
continue;
// Calculate a sphere and add it to the heighmap
double z = strength;
z *= z;
z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry));
double noise = TerrainUtil.PerlinNoise2D(x / (double) Constants.RegionSize, y / (double) Constants.RegionSize, 8, 1.0);
if (z > 0.0)
map[x, y] += noise * z * duration;
}
}
}
开发者ID:BackupTheBerlios,项目名称:seleon,代码行数:25,代码来源:NoiseSphere.cs
示例13: FloodEffect
public void FloodEffect(ITerrainChannel map, bool[,] fillArea, double strength)
{
double area = strength;
double step = strength / 4.0;
int x, y;
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
if (!fillArea[x, y])
continue;
double average = 0.0;
int avgsteps = 0;
double n;
for (n = 0.0 - area; n < area; n += step)
{
double l;
for (l = 0.0 - area; l < area; l += step)
{
avgsteps++;
average += GetBilinearInterpolate(x + n, y + l, map);
}
}
map[x, y] = average / avgsteps;
}
}
}
开发者ID:mugginsm,项目名称:Aurora-Sim,代码行数:31,代码来源:SmoothArea.cs
示例14: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz, double strength, double duration, float BrushSize)
{
strength = TerrainUtil.MetersToSphericalStrength(BrushSize);
duration = 0.03; //MCP Should be read from ini file
if (duration > 1.0)
duration = 1.0;
if (duration < 0)
return;
int x;
for (x = 0; x < map.Width; x++)
{
int y;
for (y = 0; y < map.Height; y++)
{
if (!mask[x,y])
continue;
// Calculate a sphere and add it to the heighmap
double z = 0;
if (duration < 4.0)
z = TerrainUtil.SphericalFactor(x, y, rx, ry, strength) * duration * 0.25;
if (z > 0.0)
{
map[x, y] = (map[x, y] * (1.0 - z)) + (m_revertmap[x, y] * z);
}
}
}
}
开发者ID:shangcheng,项目名称:Aurora,代码行数:31,代码来源:RevertSphere.cs
示例15: PaintEffect
public void PaintEffect (ITerrainChannel map, UUID userID, float rx, float ry, float rz, float strength,
float duration, float BrushSize)
{
int x;
int xFrom = (int)(rx - BrushSize + 0.5);
int xTo = (int)(rx + BrushSize + 0.5) + 1;
int yFrom = (int)(ry - BrushSize + 0.5);
int yTo = (int)(ry + BrushSize + 0.5) + 1;
if (xFrom < 0)
xFrom = 0;
if (yFrom < 0)
yFrom = 0;
if (xTo > map.Width)
xTo = map.Width;
if (yTo > map.Height)
yTo = map.Height;
for (x = xFrom; x < xTo; x++) {
int y;
for (y = yFrom; y < yTo; y++) {
if (!map.Scene.Permissions.CanTerraformLand (userID, new Vector3 (x, y, 0)))
continue;
// Calculate a cos-sphere and add it to the heightmap
double r = Math.Sqrt ((x - rx) * (x - rx) + ((y - ry) * (y - ry)));
double z = Math.Cos (r * Math.PI / (BrushSize * 2));
if (z > 0.0)
map [x, y] += (float)(z * duration);
}
}
}
开发者ID:Virtual-Universe,项目名称:Virtual-Universe,代码行数:35,代码来源:RaiseSphere.cs
示例16: BuildTiles
private void BuildTiles(ITerrainChannel map, double height)
{
int channelWidth = (int) Math.Floor((map.Width / num_w) * 0.8);
int channelHeight = (int) Math.Floor((map.Height / num_h) * 0.8);
int channelXOffset = (map.Width / num_w) - channelWidth;
int channelYOffset = (map.Height / num_h) - channelHeight;
for (int x = 0; x < num_w; x++)
{
for (int y = 0; y < num_h; y++)
{
int xoff = ((channelXOffset + channelWidth) * x) + (channelXOffset / 2);
int yoff = ((channelYOffset + channelHeight) * y) + (channelYOffset / 2);
Boolean[,] bitmap = new bool[map.Width,map.Height];
for (int dx = 0; dx < channelWidth; dx++)
{
for (int dy = 0; dy < channelHeight; dy++)
{
bitmap[dx + xoff, dy + yoff] = true;
}
}
raiseFunction.FloodEffect(map, bitmap, height);
}
}
}
开发者ID:RadaSangOn,项目名称:workCore2,代码行数:28,代码来源:ChannelDigger.cs
示例17: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz,
double strength, double duration, int startX, int endX, int startY, int endY)
{
strength = TerrainUtil.MetersToSphericalStrength(strength);
duration = 0.03; //MCP Should be read from ini file
if (duration > 1.0)
duration = 1.0;
if (duration < 0)
return;
int x,y;
for (x = startX; x <= endX; x++)
{
for (y = startY; y <= endY; y++)
{
if (!mask[x, y])
continue;
// Calculate a sphere and add it to the heighmap
double z = strength;
z *= z;
z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry));
if (z > 0.0)
{
z *= duration;
map[x, y] = (map[x, y] * (1.0 - z)) + (m_revertmap[x, y] * z);
}
}
}
}
开发者ID:CassieEllen,项目名称:opensim,代码行数:32,代码来源:RevertSphere.cs
示例18: RunEffect
public void RunEffect(ITerrainChannel map)
{
ITerrainPaintableEffect eroder = new WeatherSphere();
bool[,] cliffMask = new bool[map.Width,map.Height];
bool[,] channelMask = new bool[map.Width,map.Height];
bool[,] smoothMask = new bool[map.Width,map.Height];
m_log.Info("S1");
// Step one, generate rough mask
int x, y;
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
m_log.Info(".");
smoothMask[x, y] = true;
// Start underwater
map[x, y] = TerrainUtil.PerlinNoise2D(x, y, 3, 0.25) * 5;
// Add a little height. (terrain should now be above water, mostly.)
map[x, y] += 20;
const int channelsX = 4;
int channelWidth = (map.Width / channelsX / 4);
const int channelsY = 4;
int channelHeight = (map.Height / channelsY / 4);
SetLowerChannel(map, cliffMask, channelMask, x, y, channelsX, channelWidth, map.Width, x);
SetLowerChannel(map, cliffMask, channelMask, x, y, channelsY, channelHeight, map.Height, y);
}
}
m_log.Info("S2");
//smooth.FloodEffect(map, smoothMask, 4.0);
m_log.Info("S3");
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
if (cliffMask[x, y])
eroder.PaintEffect(map, UUID.Zero, x, y, -1, 4, 0.1f, 4, null);
}
}
for (x = 0; x < map.Width; x += 2)
{
for (y = 0; y < map.Height; y += 2)
{
if (map[x, y] < 0.1)
map[x, y] = 0.1;
if (map[x, y] > 256)
map[x, y] = 256;
}
}
//smooth.FloodEffect(map, smoothMask, 4.0);
}
开发者ID:kf6kjg,项目名称:halcyon,代码行数:59,代码来源:CookieCutter.cs
示例19: PaintEffect
public void PaintEffect(ITerrainChannel map, bool[,] mask, double rx, double ry, double rz, double strength, double duration)
{
strength = TerrainUtil.MetersToSphericalStrength(strength);
int x, y;
double[,] tweak = new double[map.Width,map.Height];
double area = strength;
double step = strength / 4.0;
duration = 0.03; //MCP Should be read from ini file
// compute delta map
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
double z = TerrainUtil.SphericalFactor(x, y, rx, ry, strength);
if (z > 0) // add in non-zero amount
{
double average = 0.0;
int avgsteps = 0;
double n;
for (n = 0.0 - area; n < area; n += step)
{
double l;
for (l = 0.0 - area; l < area; l += step)
{
avgsteps++;
average += TerrainUtil.GetBilinearInterpolate(x + n, y + l, map);
}
}
tweak[x, y] = average / avgsteps;
}
}
}
// blend in map
for (x = 0; x < map.Width; x++)
{
for (y = 0; y < map.Height; y++)
{
if (!mask[x,y])
continue;
double z = TerrainUtil.SphericalFactor(x, y, rx, ry, strength);
if (z > 0) // add in non-zero amount
{
double da = z;
double a = (map[x, y] - tweak[x, y]) * da;
double newz = map[x, y] - (a * duration);
if (newz > 0.0)
map[x, y] = newz;
}
}
}
}
开发者ID:RadaSangOn,项目名称:workCore2,代码行数:59,代码来源:SmoothSphere.cs
示例20: PaintEffect
public void PaintEffect(ITerrainChannel map, UUID userID, float rx, float ry, float rz, float strength,
float duration, float BrushSize)
{
strength = TerrainUtil.MetersToSphericalStrength(strength);
int x;
for (x = 0; x < map.Width; x++)
{
int y;
for (y = 0; y < map.Height; y++)
{
if (!map.Scene.Permissions.CanTerraformLand(userID, new Vector3(x, y, 0)))
continue;
float z = TerrainUtil.SphericalFactor(x, y, rx, ry, strength);
if (z > 0) // add in non-zero amount
{
const int NEIGHBOUR_ME = 4;
const int NEIGHBOUR_MAX = 9;
for (int j = 0; j < NEIGHBOUR_MAX; j++)
{
if (j != NEIGHBOUR_ME)
{
int[] coords = Neighbours(type, j);
coords[0] += x;
coords[1] += y;
if (coords[0] > map.Width - 1)
continue;
if (coords[1] > map.Height - 1)
continue;
if (coords[0] < 0)
continue;
if (coords[1] < 0)
continue;
float heightF = map[x, y];
float target = map[coords[0], coords[1]];
if (target > heightF + talus)
{
float calc = duration*((target - heightF) - talus)*z;
heightF += calc;
target -= calc;
}
map[x, y] = heightF;
map[coords[0], coords[1]] = target;
}
}
}
}
}
}
开发者ID:VirtualReality,项目名称:Universe,代码行数:58,代码来源:WeatherSphere.cs
注:本文中的ITerrainChannel类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论