Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
b50e5704b8
|
@ -261,10 +261,8 @@ namespace OpenSim.Region.CoreModules
|
||||||
|
|
||||||
private float GetCurrentTimeAsLindenSunHour()
|
private float GetCurrentTimeAsLindenSunHour()
|
||||||
{
|
{
|
||||||
if (m_SunFixed)
|
float curtime = m_SunFixed ? m_SunFixedHour : GetCurrentSunHour();
|
||||||
return m_SunFixedHour + 6;
|
return (curtime + 6.0f) % 24.0f;
|
||||||
|
|
||||||
return GetCurrentSunHour() + 6.0f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region INonSharedRegion Methods
|
#region INonSharedRegion Methods
|
||||||
|
@ -517,7 +515,7 @@ namespace OpenSim.Region.CoreModules
|
||||||
return m_UpdateInterval;
|
return m_UpdateInterval;
|
||||||
|
|
||||||
case "current_time":
|
case "current_time":
|
||||||
return CurrentTime;
|
return GetCurrentTimeAsLindenSunHour();
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new Exception("Unknown sun parameter.");
|
throw new Exception("Unknown sun parameter.");
|
||||||
|
@ -526,7 +524,51 @@ namespace OpenSim.Region.CoreModules
|
||||||
|
|
||||||
public void SetSunParameter(string param, double value)
|
public void SetSunParameter(string param, double value)
|
||||||
{
|
{
|
||||||
HandleSunConsoleCommand("sun", new string[] {param, value.ToString() });
|
switch (param)
|
||||||
|
{
|
||||||
|
case "year_length":
|
||||||
|
m_YearLengthDays = (int)value;
|
||||||
|
SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
|
||||||
|
SeasonSpeed = m_SeasonalCycle/SecondsPerYear;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "day_length":
|
||||||
|
m_DayLengthHours = value;
|
||||||
|
SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60);
|
||||||
|
SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
|
||||||
|
SunSpeed = m_SunCycle/SecondsPerSunCycle;
|
||||||
|
SeasonSpeed = m_SeasonalCycle/SecondsPerYear;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "day_night_offset":
|
||||||
|
m_HorizonShift = value;
|
||||||
|
HorizonShift = m_HorizonShift;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "day_time_sun_hour_scale":
|
||||||
|
m_DayTimeSunHourScale = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "update_interval":
|
||||||
|
m_UpdateInterval = (int)value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "current_time":
|
||||||
|
value = (value + 18.0) % 24.0;
|
||||||
|
// set the current offset so that the effective sun time is the parameter
|
||||||
|
m_CurrentTimeOffset = 0; // clear this first so we use raw time
|
||||||
|
m_CurrentTimeOffset = (ulong)(SecondsPerSunCycle * value/ 24.0) - (CurrentTime % SecondsPerSunCycle);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new Exception("Unknown sun parameter.");
|
||||||
|
|
||||||
|
// Generate shared values
|
||||||
|
GenSunPos();
|
||||||
|
|
||||||
|
// When sun settings are updated, we should update all clients with new settings.
|
||||||
|
SunUpdateToAllClients();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public float GetCurrentSunHour()
|
public float GetCurrentSunHour()
|
||||||
|
@ -606,53 +648,15 @@ namespace OpenSim.Region.CoreModules
|
||||||
}
|
}
|
||||||
else if (args.Length == 3)
|
else if (args.Length == 3)
|
||||||
{
|
{
|
||||||
float value = 0.0f;
|
double value = 0.0;
|
||||||
if (!float.TryParse(args[2], out value))
|
if (! double.TryParse(args[2], out value))
|
||||||
{
|
{
|
||||||
Output.Add(String.Format("The parameter value {0} is not a valid number.", args[2]));
|
Output.Add(String.Format("The parameter value {0} is not a valid number.", args[2]));
|
||||||
}
|
|
||||||
|
|
||||||
switch (args[1].ToLower())
|
|
||||||
{
|
|
||||||
case "year_length":
|
|
||||||
m_YearLengthDays = (int)value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "day_length":
|
|
||||||
m_DayLengthHours = value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "day_night_offset":
|
|
||||||
m_HorizonShift = value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "day_time_sun_hour_scale":
|
|
||||||
m_DayTimeSunHourScale = value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "update_interval":
|
|
||||||
m_UpdateInterval = (int)value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "current_time":
|
|
||||||
// best to get the current time offset out of the currenttime equation then
|
|
||||||
// reset it
|
|
||||||
m_CurrentTimeOffset = 0;
|
|
||||||
m_CurrentTimeOffset = CurrentTime - (ulong)value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
Output.Add(String.Format("Unknown parameter {0}.", args[1]));
|
|
||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetSunParameter(args[1].ToLower(), value);
|
||||||
Output.Add(String.Format("Parameter {0} set to {1}.", args[1], value.ToString()));
|
Output.Add(String.Format("Parameter {0} set to {1}.", args[1], value.ToString()));
|
||||||
|
|
||||||
// Generate shared values
|
|
||||||
GenSunPos();
|
|
||||||
|
|
||||||
// When sun settings are updated, we should update all clients with new settings.
|
|
||||||
SunUpdateToAllClients();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Output;
|
return Output;
|
||||||
|
|
|
@ -40,10 +40,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
[Test]
|
[Test]
|
||||||
public void BrushTest()
|
public void BrushTest()
|
||||||
{
|
{
|
||||||
|
int midRegion = (int)Constants.RegionSize / 2;
|
||||||
|
|
||||||
|
// Create a mask that covers only the left half of the region
|
||||||
bool[,] allowMask = new bool[(int)Constants.RegionSize, 256];
|
bool[,] allowMask = new bool[(int)Constants.RegionSize, 256];
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
for (x = 0; x < (int)((int)Constants.RegionSize * 0.5f); x++)
|
for (x = 0; x < midRegion; x++)
|
||||||
{
|
{
|
||||||
for (y = 0; y < (int)Constants.RegionSize; y++)
|
for (y = 0; y < (int)Constants.RegionSize; y++)
|
||||||
{
|
{
|
||||||
|
@ -57,13 +60,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
TerrainChannel map = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
TerrainChannel map = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||||
ITerrainPaintableEffect effect = new RaiseSphere();
|
ITerrainPaintableEffect effect = new RaiseSphere();
|
||||||
|
|
||||||
effect.PaintEffect(map, allowMask, (int)Constants.RegionSize * 0.5f, (int)Constants.RegionSize * 0.5f, -1.0, 2, 0.1);
|
effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0);
|
||||||
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[127, midRegion] > 0.0, "Raise brush should raising value at this point (127,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[125, midRegion] > 0.0, "Raise brush should raising value at this point (124,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[120, midRegion] == 0.0, "Raise brush should not change value at this point (120,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[128, midRegion] == 0.0, "Raise brush should not change value at this point (128,128).");
|
||||||
Assert.That(map[0, (int)((int)Constants.RegionSize * 0.5f)] == 0.0, "Raise brush should not change value at this point (0,128).");
|
Assert.That(map[0, midRegion] == 0.0, "Raise brush should not change value at this point (0,128).");
|
||||||
|
|
||||||
//
|
//
|
||||||
// Test LowerSphere
|
// Test LowerSphere
|
||||||
//
|
//
|
||||||
|
@ -77,13 +79,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
||||||
}
|
}
|
||||||
effect = new LowerSphere();
|
effect = new LowerSphere();
|
||||||
|
|
||||||
effect.PaintEffect(map, allowMask, ((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), -1.0, 2, 6.0);
|
effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0);
|
||||||
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, midRegion] >= 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 brush should lowering value to 0.0 at this point (127,128).");
|
Assert.That(map[127, midRegion] == 0.0, "Lower brush should lowering value to 0.0 at this point (127,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[125, midRegion] < 1.0, "Lower brush should lowering value at this point (124,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[120, midRegion] == 1.0, "Lower brush should not change value at this point (120,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[128, midRegion] == 1.0, "Lower brush should not change value at this point (128,128).");
|
||||||
Assert.That(map[0, (int)((int)Constants.RegionSize * 0.5f)] == 1.0, "Lower brush should not change value at this point (0,128).");
|
Assert.That(map[0, midRegion] == 1.0, "Lower brush should not change value at this point (0,128).");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
|
@ -538,7 +538,7 @@ public static class BSParam
|
||||||
(s,o) => { s.PE.SetContactProcessingThreshold(o.PhysBody, ContactProcessingThreshold); } ),
|
(s,o) => { s.PE.SetContactProcessingThreshold(o.PhysBody, ContactProcessingThreshold); } ),
|
||||||
|
|
||||||
new ParameterDefn<float>("TerrainImplementation", "Type of shape to use for terrain (0=heightmap, 1=mesh)",
|
new ParameterDefn<float>("TerrainImplementation", "Type of shape to use for terrain (0=heightmap, 1=mesh)",
|
||||||
(float)BSTerrainPhys.TerrainImplementation.Mesh ),
|
(float)BSTerrainPhys.TerrainImplementation.Heightmap ),
|
||||||
new ParameterDefn<int>("TerrainMeshMagnification", "Number of times the 256x256 heightmap is multiplied to create the terrain mesh" ,
|
new ParameterDefn<int>("TerrainMeshMagnification", "Number of times the 256x256 heightmap is multiplied to create the terrain mesh" ,
|
||||||
2 ),
|
2 ),
|
||||||
new ParameterDefn<float>("TerrainFriction", "Factor to reduce movement against terrain surface" ,
|
new ParameterDefn<float>("TerrainFriction", "Factor to reduce movement against terrain surface" ,
|
||||||
|
|
|
@ -235,6 +235,14 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
// Set default values for physics parameters plus any overrides from the ini file
|
// Set default values for physics parameters plus any overrides from the ini file
|
||||||
GetInitialParameterValues(config);
|
GetInitialParameterValues(config);
|
||||||
|
|
||||||
|
// Force some parameters to values depending on other configurations
|
||||||
|
// Only use heightmap terrain implementation if terrain larger than legacy size
|
||||||
|
if ((uint)regionExtent.X > Constants.RegionSize || (uint)regionExtent.Y > Constants.RegionSize)
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("{0} Forcing terrain implementation to heightmap for large region", LogHeader);
|
||||||
|
BSParam.TerrainImplementation = (float)BSTerrainPhys.TerrainImplementation.Heightmap;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the connection to the physics engine (could be native or one of many DLLs)
|
// Get the connection to the physics engine (could be native or one of many DLLs)
|
||||||
PE = SelectUnderlyingBulletEngine(BulletEngineName);
|
PE = SelectUnderlyingBulletEngine(BulletEngineName);
|
||||||
|
|
||||||
|
|
|
@ -1001,10 +1001,10 @@
|
||||||
|
|
||||||
; Terrain implementation can use either Bullet's heightField or BulletSim can build
|
; Terrain implementation can use either Bullet's heightField or BulletSim can build
|
||||||
; a mesh. 0=heightField, 1=mesh
|
; a mesh. 0=heightField, 1=mesh
|
||||||
TerrainImplementation = 1
|
TerrainImplementation = 0
|
||||||
; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield
|
; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield
|
||||||
; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher
|
; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher
|
||||||
; magnification uses lots of memory.
|
; magnifications use lots of memory.
|
||||||
TerrainMeshMagnification = 2
|
TerrainMeshMagnification = 2
|
||||||
|
|
||||||
; Avatar physics height adjustments.
|
; Avatar physics height adjustments.
|
||||||
|
|
Loading…
Reference in New Issue