Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
b50e5704b8
|
@ -261,10 +261,8 @@ namespace OpenSim.Region.CoreModules
|
|||
|
||||
private float GetCurrentTimeAsLindenSunHour()
|
||||
{
|
||||
if (m_SunFixed)
|
||||
return m_SunFixedHour + 6;
|
||||
|
||||
return GetCurrentSunHour() + 6.0f;
|
||||
float curtime = m_SunFixed ? m_SunFixedHour : GetCurrentSunHour();
|
||||
return (curtime + 6.0f) % 24.0f;
|
||||
}
|
||||
|
||||
#region INonSharedRegion Methods
|
||||
|
@ -517,7 +515,7 @@ namespace OpenSim.Region.CoreModules
|
|||
return m_UpdateInterval;
|
||||
|
||||
case "current_time":
|
||||
return CurrentTime;
|
||||
return GetCurrentTimeAsLindenSunHour();
|
||||
|
||||
default:
|
||||
throw new Exception("Unknown sun parameter.");
|
||||
|
@ -526,7 +524,51 @@ namespace OpenSim.Region.CoreModules
|
|||
|
||||
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()
|
||||
|
@ -606,53 +648,15 @@ namespace OpenSim.Region.CoreModules
|
|||
}
|
||||
else if (args.Length == 3)
|
||||
{
|
||||
float value = 0.0f;
|
||||
if (!float.TryParse(args[2], out value))
|
||||
double value = 0.0;
|
||||
if (! double.TryParse(args[2], out value))
|
||||
{
|
||||
Output.Add(String.Format("The parameter value {0} is not a valid number.", args[2]));
|
||||
return Output;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
SetSunParameter(args[1].ToLower(), value);
|
||||
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;
|
||||
|
|
|
@ -40,10 +40,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
|||
[Test]
|
||||
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];
|
||||
int x;
|
||||
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++)
|
||||
{
|
||||
|
@ -57,13 +60,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
|||
TerrainChannel map = new TerrainChannel((int)Constants.RegionSize, (int)Constants.RegionSize);
|
||||
ITerrainPaintableEffect effect = new RaiseSphere();
|
||||
|
||||
effect.PaintEffect(map, allowMask, (int)Constants.RegionSize * 0.5f, (int)Constants.RegionSize * 0.5f, -1.0, 2, 0.1);
|
||||
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, (int)((int)Constants.RegionSize * 0.5f)] > 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[128, (int)((int)Constants.RegionSize * 0.5f)] == 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).");
|
||||
|
||||
effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0);
|
||||
Assert.That(map[127, midRegion] > 0.0, "Raise brush should raising value at this point (127,128).");
|
||||
Assert.That(map[125, midRegion] > 0.0, "Raise brush should raising value at this point (124,128).");
|
||||
Assert.That(map[120, midRegion] == 0.0, "Raise brush should not change value at this point (120,128).");
|
||||
Assert.That(map[128, midRegion] == 0.0, "Raise brush should not change value at this point (128,128).");
|
||||
Assert.That(map[0, midRegion] == 0.0, "Raise brush should not change value at this point (0,128).");
|
||||
//
|
||||
// Test LowerSphere
|
||||
//
|
||||
|
@ -77,13 +79,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests
|
|||
}
|
||||
effect = new LowerSphere();
|
||||
|
||||
effect.PaintEffect(map, allowMask, ((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), -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, (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, (int)((int)Constants.RegionSize * 0.5f)] < 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[128, (int)((int)Constants.RegionSize * 0.5f)] == 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).");
|
||||
effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0);
|
||||
Assert.That(map[127, midRegion] >= 0.0, "Lower should not lowering value below 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[125, midRegion] < 1.0, "Lower brush should lowering value at this point (124,128).");
|
||||
Assert.That(map[120, midRegion] == 1.0, "Lower brush should not change value at this point (120,128).");
|
||||
Assert.That(map[128, midRegion] == 1.0, "Lower brush should not change value at this point (128,128).");
|
||||
Assert.That(map[0, midRegion] == 1.0, "Lower brush should not change value at this point (0,128).");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -538,7 +538,7 @@ public static class BSParam
|
|||
(s,o) => { s.PE.SetContactProcessingThreshold(o.PhysBody, ContactProcessingThreshold); } ),
|
||||
|
||||
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" ,
|
||||
2 ),
|
||||
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
|
||||
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)
|
||||
PE = SelectUnderlyingBulletEngine(BulletEngineName);
|
||||
|
||||
|
|
|
@ -1001,10 +1001,10 @@
|
|||
|
||||
; Terrain implementation can use either Bullet's heightField or BulletSim can build
|
||||
; a mesh. 0=heightField, 1=mesh
|
||||
TerrainImplementation = 1
|
||||
TerrainImplementation = 0
|
||||
; For mesh terrain, the detail of the created mesh. '1' gives 256x256 (heightfield
|
||||
; resolution). '2' gives 512x512. Etc. Cannot be larger than '4'. Higher
|
||||
; magnification uses lots of memory.
|
||||
; magnifications use lots of memory.
|
||||
TerrainMeshMagnification = 2
|
||||
|
||||
; Avatar physics height adjustments.
|
||||
|
|
Loading…
Reference in New Issue