Merge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim
commit
9337a94f33
|
@ -485,7 +485,7 @@ ELSE
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public double[,] LoadTerrain(UUID regionID)
|
public double[,] LoadTerrain(UUID regionID)
|
||||||
{
|
{
|
||||||
double[,] terrain = new double[256, 256];
|
double[,] terrain = new double[(int)Constants.RegionSize, (int)Constants.RegionSize];
|
||||||
terrain.Initialize();
|
terrain.Initialize();
|
||||||
|
|
||||||
string sql = "select top 1 RegionUUID, Revision, Heightfield from terrain where RegionUUID = @RegionUUID order by Revision desc";
|
string sql = "select top 1 RegionUUID, Revision, Heightfield from terrain where RegionUUID = @RegionUUID order by Revision desc";
|
||||||
|
@ -502,9 +502,9 @@ ELSE
|
||||||
{
|
{
|
||||||
MemoryStream str = new MemoryStream((byte[])reader["Heightfield"]);
|
MemoryStream str = new MemoryStream((byte[])reader["Heightfield"]);
|
||||||
BinaryReader br = new BinaryReader(str);
|
BinaryReader br = new BinaryReader(str);
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
terrain[x, y] = br.ReadDouble();
|
terrain[x, y] = br.ReadDouble();
|
||||||
}
|
}
|
||||||
|
@ -749,12 +749,12 @@ VALUES
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static Array serializeTerrain(double[,] val)
|
private static Array serializeTerrain(double[,] val)
|
||||||
{
|
{
|
||||||
MemoryStream str = new MemoryStream(65536 * sizeof(double));
|
MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) * sizeof(double));
|
||||||
BinaryWriter bw = new BinaryWriter(str);
|
BinaryWriter bw = new BinaryWriter(str);
|
||||||
|
|
||||||
// TODO: COMPATIBILITY - Add byte-order conversions
|
// TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
double height = val[x, y];
|
double height = val[x, y];
|
||||||
if (height == 0.0)
|
if (height == 0.0)
|
||||||
|
|
|
@ -583,16 +583,16 @@ namespace OpenSim.Data.MySQL
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
terrain = new double[256,256];
|
terrain = new double[(int)Constants.RegionSize, (int)Constants.RegionSize];
|
||||||
terrain.Initialize();
|
terrain.Initialize();
|
||||||
|
|
||||||
MemoryStream mstr = new MemoryStream((byte[]) reader["Heightfield"]);
|
MemoryStream mstr = new MemoryStream((byte[]) reader["Heightfield"]);
|
||||||
int rev = 0;
|
int rev = 0;
|
||||||
|
|
||||||
BinaryReader br = new BinaryReader(mstr);
|
BinaryReader br = new BinaryReader(mstr);
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
terrain[x, y] = br.ReadDouble();
|
terrain[x, y] = br.ReadDouble();
|
||||||
}
|
}
|
||||||
|
@ -1141,12 +1141,12 @@ namespace OpenSim.Data.MySQL
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static Array SerializeTerrain(double[,] val)
|
private static Array SerializeTerrain(double[,] val)
|
||||||
{
|
{
|
||||||
MemoryStream str = new MemoryStream(65536*sizeof (double));
|
MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double));
|
||||||
BinaryWriter bw = new BinaryWriter(str);
|
BinaryWriter bw = new BinaryWriter(str);
|
||||||
|
|
||||||
// TODO: COMPATIBILITY - Add byte-order conversions
|
// TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
double height = val[x, y];
|
double height = val[x, y];
|
||||||
if (height == 0.0)
|
if (height == 0.0)
|
||||||
|
|
|
@ -376,8 +376,8 @@ namespace OpenSim.Data.NHibernate
|
||||||
// BinaryWriter bw = new BinaryWriter(str);
|
// BinaryWriter bw = new BinaryWriter(str);
|
||||||
//
|
//
|
||||||
// // TODO: COMPATIBILITY - Add byte-order conversions
|
// // TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
// for (int x = 0; x < 256; x++)
|
// for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
// for (int y = 0; y < 256; y++)
|
// for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
// bw.Write(val[x, y]);
|
// bw.Write(val[x, y]);
|
||||||
//
|
//
|
||||||
// return str.ToArray();
|
// return str.ToArray();
|
||||||
|
|
|
@ -571,7 +571,7 @@ namespace OpenSim.Data.SQLite
|
||||||
{
|
{
|
||||||
lock (ds)
|
lock (ds)
|
||||||
{
|
{
|
||||||
double[,] terret = new double[256,256];
|
double[,] terret = new double[(int)Constants.RegionSize, (int)Constants.RegionSize];
|
||||||
terret.Initialize();
|
terret.Initialize();
|
||||||
|
|
||||||
String sql = "select RegionUUID, Revision, Heightfield from terrain" +
|
String sql = "select RegionUUID, Revision, Heightfield from terrain" +
|
||||||
|
@ -589,9 +589,9 @@ namespace OpenSim.Data.SQLite
|
||||||
// TODO: put this into a function
|
// TODO: put this into a function
|
||||||
MemoryStream str = new MemoryStream((byte[]) row["Heightfield"]);
|
MemoryStream str = new MemoryStream((byte[]) row["Heightfield"]);
|
||||||
BinaryReader br = new BinaryReader(str);
|
BinaryReader br = new BinaryReader(str);
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
terret[x, y] = br.ReadDouble();
|
terret[x, y] = br.ReadDouble();
|
||||||
}
|
}
|
||||||
|
@ -1427,12 +1427,12 @@ namespace OpenSim.Data.SQLite
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static Array serializeTerrain(double[,] val)
|
private static Array serializeTerrain(double[,] val)
|
||||||
{
|
{
|
||||||
MemoryStream str = new MemoryStream(65536*sizeof (double));
|
MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double));
|
||||||
BinaryWriter bw = new BinaryWriter(str);
|
BinaryWriter bw = new BinaryWriter(str);
|
||||||
|
|
||||||
// TODO: COMPATIBILITY - Add byte-order conversions
|
// TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
bw.Write(val[x, y]);
|
bw.Write(val[x, y]);
|
||||||
|
|
||||||
return str.ToArray();
|
return str.ToArray();
|
||||||
|
@ -1443,12 +1443,12 @@ namespace OpenSim.Data.SQLite
|
||||||
// row["RegionUUID"] = regionUUID;
|
// row["RegionUUID"] = regionUUID;
|
||||||
// row["Revision"] = rev;
|
// row["Revision"] = rev;
|
||||||
|
|
||||||
// MemoryStream str = new MemoryStream(65536*sizeof (double));
|
// MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize )*sizeof (double));
|
||||||
// BinaryWriter bw = new BinaryWriter(str);
|
// BinaryWriter bw = new BinaryWriter(str);
|
||||||
|
|
||||||
// // TODO: COMPATIBILITY - Add byte-order conversions
|
// // TODO: COMPATIBILITY - Add byte-order conversions
|
||||||
// for (int x = 0; x < 256; x++)
|
// for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
// for (int y = 0; y < 256; y++)
|
// for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
// bw.Write(val[x, y]);
|
// bw.Write(val[x, y]);
|
||||||
|
|
||||||
// row["Heightfield"] = str.ToArray();
|
// row["Heightfield"] = str.ToArray();
|
||||||
|
|
|
@ -34,6 +34,7 @@ using DotNetOpenMail.SmtpAuth;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
@ -205,8 +206,8 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
ObjectRegionName = s.RegionInfo.RegionName;
|
ObjectRegionName = s.RegionInfo.RegionName;
|
||||||
uint localX = (s.RegionInfo.RegionLocX * 256);
|
uint localX = (s.RegionInfo.RegionLocX * (int)Constants.RegionSize);
|
||||||
uint localY = (s.RegionInfo.RegionLocY * 256);
|
uint localY = (s.RegionInfo.RegionLocY * (int)Constants.RegionSize);
|
||||||
ObjectRegionName = ObjectRegionName + " (" + localX + ", " + localY + ")";
|
ObjectRegionName = ObjectRegionName + " (" + localX + ", " + localY + ")";
|
||||||
return part;
|
return part;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.CoreModules.World.Terrain.PaintBrushes;
|
using OpenSim.Region.CoreModules.World.Terrain.PaintBrushes;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
@ -38,12 +39,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
[Test]
|
[Test]
|
||||||
public void BrushTest()
|
public void BrushTest()
|
||||||
{
|
{
|
||||||
bool[,] allowMask = new bool[256, 256];
|
bool[,] allowMask = new bool[(int)Constants.RegionSize, 256];
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
for (x=0; x<128; x++)
|
for (x = 0; x < (int)((int)Constants.RegionSize * 0.5f); x++)
|
||||||
{
|
{
|
||||||
for (y=0; y<256; y++)
|
for (y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
allowMask[x,y] = true;
|
allowMask[x,y] = true;
|
||||||
}
|
}
|
||||||
|
@ -52,20 +53,20 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
//
|
//
|
||||||
// Test RaiseSphere
|
// Test RaiseSphere
|
||||||
//
|
//
|
||||||
TerrainChannel map = new TerrainChannel(256, 256);
|
TerrainChannel map = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
ITerrainPaintableEffect effect = new RaiseSphere();
|
ITerrainPaintableEffect effect = new RaiseSphere();
|
||||||
|
|
||||||
effect.PaintEffect(map, allowMask, 128.0, 128.0, -1.0, 2, 0.1);
|
effect.PaintEffect(map, allowMask, (int)Constants.RegionSize * 0.5f, (int)Constants.RegionSize * 0.5f, -1.0, 2, 0.1);
|
||||||
Assert.That(map[127, 128] > 0.0, "Raise brush should raising value at this point (127,128).");
|
Assert.That(map[127, (int)((int)Constants.RegionSize * 0.5f)] > 0.0, "Raise brush should raising value at this point (127,128).");
|
||||||
Assert.That(map[124, 128] > 0.0, "Raise brush should raising value at this point (124,128).");
|
Assert.That(map[124, (int)((int)Constants.RegionSize * 0.5f)] > 0.0, "Raise brush should raising value at this point (124,128).");
|
||||||
Assert.That(map[123, 128] == 0.0, "Raise brush should not change value at this point (123,128).");
|
Assert.That(map[123, (int)((int)Constants.RegionSize * 0.5f)] == 0.0, "Raise brush should not change value at this point (123,128).");
|
||||||
Assert.That(map[128, 128] == 0.0, "Raise brush should not change value at this point (128,128).");
|
Assert.That(map[128, (int)((int)Constants.RegionSize * 0.5f)] == 0.0, "Raise brush should not change value at this point (128,128).");
|
||||||
Assert.That(map[0, 128] == 0.0, "Raise brush should not change value at this point (0,128).");
|
Assert.That(map[0, (int)((int)Constants.RegionSize * 0.5f)] == 0.0, "Raise brush should not change value at this point (0,128).");
|
||||||
|
|
||||||
//
|
//
|
||||||
// Test LowerSphere
|
// Test LowerSphere
|
||||||
//
|
//
|
||||||
map = new TerrainChannel(256, 256);
|
map = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
for (x=0; x<map.Width; x++)
|
for (x=0; x<map.Width; x++)
|
||||||
{
|
{
|
||||||
for (y=0; y<map.Height; y++)
|
for (y=0; y<map.Height; y++)
|
||||||
|
@ -75,19 +76,19 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
}
|
}
|
||||||
effect = new LowerSphere();
|
effect = new LowerSphere();
|
||||||
|
|
||||||
effect.PaintEffect(map, allowMask, 128.0, 128.0, -1.0, 2, 6.0);
|
effect.PaintEffect(map, allowMask, ((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), -1.0, 2, 6.0);
|
||||||
Assert.That(map[127, 128] >= 0.0, "Lower should not lowering value below 0.0 at this point (127,128).");
|
Assert.That(map[127, (int)((int)Constants.RegionSize * 0.5f)] >= 0.0, "Lower should not lowering value below 0.0 at this point (127,128).");
|
||||||
Assert.That(map[127, 128] == 0.0, "Lower brush should lowering value to 0.0 at this point (127,128).");
|
Assert.That(map[127, (int)((int)Constants.RegionSize * 0.5f)] == 0.0, "Lower brush should lowering value to 0.0 at this point (127,128).");
|
||||||
Assert.That(map[124, 128] < 1.0, "Lower brush should lowering value at this point (124,128).");
|
Assert.That(map[124, (int)((int)Constants.RegionSize * 0.5f)] < 1.0, "Lower brush should lowering value at this point (124,128).");
|
||||||
Assert.That(map[123, 128] == 1.0, "Lower brush should not change value at this point (123,128).");
|
Assert.That(map[123, (int)((int)Constants.RegionSize * 0.5f)] == 1.0, "Lower brush should not change value at this point (123,128).");
|
||||||
Assert.That(map[128, 128] == 1.0, "Lower brush should not change value at this point (128,128).");
|
Assert.That(map[128, (int)((int)Constants.RegionSize * 0.5f)] == 1.0, "Lower brush should not change value at this point (128,128).");
|
||||||
Assert.That(map[0, 128] == 1.0, "Lower brush should not change value at this point (0,128).");
|
Assert.That(map[0, (int)((int)Constants.RegionSize * 0.5f)] == 1.0, "Lower brush should not change value at this point (0,128).");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TerrainChannelTest()
|
public void TerrainChannelTest()
|
||||||
{
|
{
|
||||||
TerrainChannel x = new TerrainChannel(256, 256);
|
TerrainChannel x = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
Assert.That(x[0, 0] == 0.0, "Terrain not initialising correctly.");
|
Assert.That(x[0, 0] == 0.0, "Terrain not initialising correctly.");
|
||||||
|
|
||||||
x[0, 0] = 1.0;
|
x[0, 0] = 1.0;
|
||||||
|
|
|
@ -33,6 +33,7 @@ using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.Imaging;
|
using OpenMetaverse.Imaging;
|
||||||
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
@ -97,7 +98,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
}
|
}
|
||||||
terrainRenderer.Initialise(m_scene, m_config);
|
terrainRenderer.Initialise(m_scene, m_config);
|
||||||
|
|
||||||
Bitmap mapbmp = new Bitmap(256, 256);
|
Bitmap mapbmp = new Bitmap((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
//long t = System.Environment.TickCount;
|
//long t = System.Environment.TickCount;
|
||||||
//for (int i = 0; i < 10; ++i) {
|
//for (int i = 0; i < 10; ++i) {
|
||||||
terrainRenderer.TerrainToBitmap(mapbmp);
|
terrainRenderer.TerrainToBitmap(mapbmp);
|
||||||
|
|
|
@ -30,6 +30,7 @@ using System.Drawing;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.World.WorldMap
|
namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
@ -60,9 +61,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
|
||||||
float low = 255;
|
float low = 255;
|
||||||
float high = 0;
|
float high = 0;
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
float hmval = (float)hm[x, y];
|
float hmval = (float)hm[x, y];
|
||||||
if (hmval < low)
|
if (hmval < low)
|
||||||
|
@ -74,12 +75,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
|
||||||
float waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight;
|
float waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight;
|
||||||
|
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
// Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left
|
// Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left
|
||||||
int yr = 255 - y;
|
int yr = ((int)Constants.RegionSize - 1) - y;
|
||||||
|
|
||||||
float heightvalue = (float)hm[x, y];
|
float heightvalue = (float)hm[x, y];
|
||||||
|
|
||||||
|
@ -111,7 +112,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
float hfvalue = (float)hm[x, y];
|
float hfvalue = (float)hm[x, y];
|
||||||
float hfvaluecompare = 0f;
|
float hfvaluecompare = 0f;
|
||||||
|
|
||||||
if ((x + 1 < 256) && (y + 1 < 256))
|
if ((x + 1 < (int)Constants.RegionSize) && (y + 1 < (int)Constants.RegionSize))
|
||||||
{
|
{
|
||||||
hfvaluecompare = (float)hm[x + 1, y + 1]; // light from north-east => look at land height there
|
hfvaluecompare = (float)hm[x + 1, y + 1]; // light from north-east => look at land height there
|
||||||
}
|
}
|
||||||
|
@ -176,7 +177,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
|
||||||
if (ShadowDebugContinue)
|
if (ShadowDebugContinue)
|
||||||
{
|
{
|
||||||
if ((x - 1 > 0) && (yr + 1 < 256))
|
if ((x - 1 > 0) && (yr + 1 < (int)Constants.RegionSize))
|
||||||
{
|
{
|
||||||
color = mapbmp.GetPixel(x - 1, yr + 1);
|
color = mapbmp.GetPixel(x - 1, yr + 1);
|
||||||
int r = color.R;
|
int r = color.R;
|
||||||
|
@ -231,7 +232,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
terraincorruptedwarningsaid = true;
|
terraincorruptedwarningsaid = true;
|
||||||
}
|
}
|
||||||
Color black = Color.Black;
|
Color black = Color.Black;
|
||||||
mapbmp.SetPixel(x, (256 - y) - 1, black);
|
mapbmp.SetPixel(x, ((int)Constants.RegionSize - y) - 1, black);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -306,15 +306,15 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
|
||||||
double[,] hm = m_scene.Heightmap.GetDoubles();
|
double[,] hm = m_scene.Heightmap.GetDoubles();
|
||||||
|
|
||||||
for (int x = 0; x < 256; x++)
|
for (int x = 0; x < (int)Constants.RegionSize; x++)
|
||||||
{
|
{
|
||||||
float columnRatio = x / 255f; // 0 - 1, for interpolation
|
float columnRatio = x / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation
|
||||||
for (int y = 0; y < 256; y++)
|
for (int y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
float rowRatio = y / 255f; // 0 - 1, for interpolation
|
float rowRatio = y / ((float)Constants.RegionSize - 1); // 0 - 1, for interpolation
|
||||||
|
|
||||||
// Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left
|
// Y flip the cordinates for the bitmap: hf origin is lower left, bm origin is upper left
|
||||||
int yr = 255 - y;
|
int yr = ((int)Constants.RegionSize - 1) - y;
|
||||||
|
|
||||||
float heightvalue = getHeight(hm, x, y);
|
float heightvalue = getHeight(hm, x, y);
|
||||||
if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue))
|
if (Single.IsInfinity(heightvalue) || Single.IsNaN(heightvalue))
|
||||||
|
@ -366,7 +366,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shade the terrain for shadows
|
// Shade the terrain for shadows
|
||||||
if (x < 255 && y < 255)
|
if (x < ((int)Constants.RegionSize - 1) && y < ((int)Constants.RegionSize - 1))
|
||||||
{
|
{
|
||||||
float hfvaluecompare = getHeight(hm, x + 1, y + 1); // light from north-east => look at land height there
|
float hfvaluecompare = getHeight(hm, x + 1, y + 1); // light from north-east => look at land height there
|
||||||
if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare))
|
if (Single.IsInfinity(hfvaluecompare) || Single.IsNaN(hfvaluecompare))
|
||||||
|
|
|
@ -1192,6 +1192,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Heightmap = new TerrainChannel(map);
|
Heightmap = new TerrainChannel(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
|
||||||
|
m_log.Warn("[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception " + e.ToString() + " Regenerating");
|
||||||
|
|
||||||
|
// Non standard region size. If there's an old terrain in the database, it might read past the buffer
|
||||||
|
if ((int)Constants.RegionSize != 256)
|
||||||
|
{
|
||||||
|
Heightmap = new TerrainChannel();
|
||||||
|
|
||||||
|
m_storageManager.DataStore.StoreTerrain(Heightmap.GetDoubles(), RegionInfo.RegionID);
|
||||||
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.Warn("[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception " + e.ToString());
|
m_log.Warn("[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception " + e.ToString());
|
||||||
|
|
|
@ -216,8 +216,14 @@ namespace OpenSim.Region.Physics.BulletDotNETPlugin
|
||||||
tempMotionState2 = new btDefaultMotionState(_parent_scene.TransZero);
|
tempMotionState2 = new btDefaultMotionState(_parent_scene.TransZero);
|
||||||
tempMotionState3 = new btDefaultMotionState(_parent_scene.TransZero);
|
tempMotionState3 = new btDefaultMotionState(_parent_scene.TransZero);
|
||||||
|
|
||||||
AxisLockLinearLow = new btVector3(-256,-256,-256);
|
|
||||||
AxisLockLinearHigh = new btVector3(512, 512, 512);
|
AxisLockLinearLow = new btVector3(-1 * (int)Constants.RegionSize, -1 * (int)Constants.RegionSize, -1 * (int)Constants.RegionSize);
|
||||||
|
int regionsize = (int) Constants.RegionSize;
|
||||||
|
|
||||||
|
if (regionsize == 256)
|
||||||
|
regionsize = 512;
|
||||||
|
|
||||||
|
AxisLockLinearHigh = new btVector3((int)Constants.RegionSize, (int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
|
|
||||||
_target_velocity = new PhysicsVector(0, 0, 0);
|
_target_velocity = new PhysicsVector(0, 0, 0);
|
||||||
_velocity = new PhysicsVector();
|
_velocity = new PhysicsVector();
|
||||||
|
|
|
@ -1096,8 +1096,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
// kluge to keep things in bounds. ODE lets dead avatars drift away (they should be removed!)
|
// kluge to keep things in bounds. ODE lets dead avatars drift away (they should be removed!)
|
||||||
if (vec.X < 0.0f) vec.X = 0.0f;
|
if (vec.X < 0.0f) vec.X = 0.0f;
|
||||||
if (vec.Y < 0.0f) vec.Y = 0.0f;
|
if (vec.Y < 0.0f) vec.Y = 0.0f;
|
||||||
if (vec.X > 255.95f) vec.X = 255.95f;
|
if (vec.X > (int)Constants.RegionSize - 0.05f) vec.X = (int)Constants.RegionSize - 0.05f;
|
||||||
if (vec.Y > 255.95f) vec.Y = 255.95f;
|
if (vec.Y > (int)Constants.RegionSize - 0.05f) vec.Y = (int)Constants.RegionSize - 0.05f;
|
||||||
|
|
||||||
_position.X = vec.X;
|
_position.X = vec.X;
|
||||||
_position.Y = vec.Y;
|
_position.Y = vec.Y;
|
||||||
|
|
|
@ -304,6 +304,13 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
|
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
|
||||||
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
|
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
|
||||||
|
|
||||||
|
private uint heightmapWidth = m_regionWidth + 1;
|
||||||
|
private uint heightmapHeight = m_regionHeight + 1;
|
||||||
|
|
||||||
|
private uint heightmapWidthSamples;
|
||||||
|
|
||||||
|
private uint heightmapHeightSamples;
|
||||||
|
|
||||||
private volatile int m_global_contactcount = 0;
|
private volatile int m_global_contactcount = 0;
|
||||||
|
|
||||||
private ODERayCastRequestManager m_rayCastManager;
|
private ODERayCastRequestManager m_rayCastManager;
|
||||||
|
@ -3271,27 +3278,49 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
// this._heightmap[i] = (double)heightMap[i];
|
// this._heightmap[i] = (double)heightMap[i];
|
||||||
// dbm (danx0r) -- creating a buffer zone of one extra sample all around
|
// dbm (danx0r) -- creating a buffer zone of one extra sample all around
|
||||||
_origheightmap = heightMap; // Used for Fly height. Kitto Flora
|
_origheightmap = heightMap; // Used for Fly height. Kitto Flora
|
||||||
const uint heightmapWidth = m_regionWidth + 2;
|
uint heightmapWidth = m_regionWidth + 1;
|
||||||
const uint heightmapHeight = m_regionHeight + 2;
|
uint heightmapHeight = m_regionHeight + 1;
|
||||||
const uint heightmapWidthSamples = 2*m_regionWidth + 2;
|
|
||||||
const uint heightmapHeightSamples = 2*m_regionHeight + 2;
|
uint heightmapWidthSamples;
|
||||||
|
|
||||||
|
uint heightmapHeightSamples;
|
||||||
|
if (((int)Constants.RegionSize) == 256)
|
||||||
|
{
|
||||||
|
heightmapWidthSamples = 2*m_regionWidth + 2;
|
||||||
|
heightmapHeightSamples = 2*m_regionHeight + 2;
|
||||||
|
heightmapWidth++;
|
||||||
|
heightmapHeight++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
heightmapWidthSamples = m_regionWidth + 1;
|
||||||
|
heightmapHeightSamples = m_regionHeight + 1;
|
||||||
|
}
|
||||||
|
|
||||||
const float scale = 1.0f;
|
const float scale = 1.0f;
|
||||||
const float offset = 0.0f;
|
const float offset = 0.0f;
|
||||||
const float thickness = 0.2f;
|
const float thickness = 0.2f;
|
||||||
const int wrap = 0;
|
const int wrap = 0;
|
||||||
|
|
||||||
|
|
||||||
//Double resolution
|
//Double resolution
|
||||||
heightMap = ResizeTerrain512Interpolation(heightMap);
|
if (((int)Constants.RegionSize) == 256)
|
||||||
|
heightMap = ResizeTerrain512Interpolation(heightMap);
|
||||||
|
|
||||||
|
int regionsize = (int)Constants.RegionSize;
|
||||||
|
if (regionsize == 256)
|
||||||
|
regionsize = 512;
|
||||||
|
|
||||||
float hfmin = 2000;
|
float hfmin = 2000;
|
||||||
float hfmax = -2000;
|
float hfmax = -2000;
|
||||||
for (int x = 0; x < heightmapWidthSamples; x++)
|
for (int x = 0; x < heightmapWidthSamples; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < heightmapHeightSamples; y++)
|
for (int y = 0; y < heightmapHeightSamples; y++)
|
||||||
{
|
{
|
||||||
int xx = Util.Clip(x - 1, 0, 511);
|
int xx = Util.Clip(x - 1, 0, regionsize - 1);
|
||||||
int yy = Util.Clip(y - 1, 0, 511);
|
int yy = Util.Clip(y - 1, 0, regionsize - 1);
|
||||||
|
|
||||||
float val = heightMap[yy*512 + xx];
|
float val = heightMap[yy*regionsize + xx];
|
||||||
_heightmap[x*heightmapHeightSamples + y] = val;
|
_heightmap[x*heightmapHeightSamples + y] = val;
|
||||||
hfmin = (val < hfmin) ? val : hfmin;
|
hfmin = (val < hfmin) ? val : hfmin;
|
||||||
hfmax = (val > hfmax) ? val : hfmax;
|
hfmax = (val > hfmax) ? val : hfmax;
|
||||||
|
@ -3332,7 +3361,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
d.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle);
|
d.RFromAxisAndAngle(out R, v3.X, v3.Y, v3.Z, angle);
|
||||||
d.GeomSetRotation(LandGeom, ref R);
|
d.GeomSetRotation(LandGeom, ref R);
|
||||||
d.GeomSetPosition(LandGeom, 128, 128, 0);
|
d.GeomSetPosition(LandGeom, (int)Constants.RegionSize * 0.5f, (int)Constants.RegionSize * 0.5f, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,8 +56,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
ps = cbt.GetScene("test");
|
ps = cbt.GetScene("test");
|
||||||
// Initializing Physics Scene.
|
// Initializing Physics Scene.
|
||||||
ps.Initialise(imp.GetMesher(),null);
|
ps.Initialise(imp.GetMesher(),null);
|
||||||
float[] _heightmap = new float[256 * 256];
|
float[] _heightmap = new float[(int)Constants.RegionSize * (int)Constants.RegionSize];
|
||||||
for (int i = 0; i<(256*256);i++)
|
for (int i = 0; i < ((int)Constants.RegionSize * (int)Constants.RegionSize); i++)
|
||||||
{
|
{
|
||||||
_heightmap[i] = 21f;
|
_heightmap[i] = 21f;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue