One more run at fixing the sun module. Parameter setting fixed to
work through the OSSL interface. And setting the parameters now adjusts all the dependent variables correctly so the sun moves at the modified rate.0.8.0.3
parent
678c107915
commit
3f5c6c897f
|
@ -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,57 +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]));
|
||||||
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (args[1].ToLower())
|
SetSunParameter(args[1].ToLower(), value);
|
||||||
{
|
|
||||||
case "year_length":
|
|
||||||
m_YearLengthDays = (int)value;
|
|
||||||
SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "day_length":
|
|
||||||
m_DayLengthHours = value;
|
|
||||||
SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60);
|
|
||||||
SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
|
|
||||||
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":
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue