add some ossl

master
UbitUmarov 2020-06-11 19:55:12 +01:00
parent e407f69b2c
commit d1ecccfaca
3 changed files with 104 additions and 9 deletions

View File

@ -157,6 +157,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
internal TaskInventoryItem m_item; internal TaskInventoryItem m_item;
protected IUrlModule m_UrlModule = null; protected IUrlModule m_UrlModule = null;
protected ISoundModule m_SoundModule = null; protected ISoundModule m_SoundModule = null;
protected IEnvironmentModule m_envModule = null;
public void Initialize(IScriptEngine scriptEngine, SceneObjectPart host, TaskInventoryItem item) public void Initialize(IScriptEngine scriptEngine, SceneObjectPart host, TaskInventoryItem item)
{ {
@ -167,6 +168,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>(); m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>();
m_SoundModule = m_ScriptEngine.World.RequestModuleInterface<ISoundModule>(); m_SoundModule = m_ScriptEngine.World.RequestModuleInterface<ISoundModule>();
m_envModule = m_ScriptEngine.World.RequestModuleInterface<IEnvironmentModule>();
//private init //private init
lock (m_OSSLLock) lock (m_OSSLLock)
@ -1567,23 +1569,90 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
/// Return the current Sun Hour 0...24, with 0 being roughly sun-rise /// Return the current Sun Hour 0...24, with 0 being roughly sun-rise
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public double osGetCurrentSunHour() public LSL_Float osGetCurrentSunHour()
{ {
CheckThreatLevel(); CheckThreatLevel();
// Must adjust for the fact that Region Sun Settings are still LL offset if (m_envModule == null)
double sunHour = World.RegionInfo.RegionSettings.SunPosition - 6; return 0;
// See if the sun module has registered itself, if so it's authoritative float frac = m_envModule.GetRegionDayFractionTime();
ISunModule module = World.RequestModuleInterface<ISunModule>(); return 24 * frac;
if (module != null) }
public LSL_Float osGetApparentTime()
{
CheckThreatLevel();
if (m_envModule == null)
return 0;
float frac = m_envModule.GetRegionDayFractionTime();
return 86400 * frac;
}
private string timeToString(float frac, bool format24)
{
int h = (int)frac;
frac -= h;
frac *= 60;
int m = (int)frac;
frac -= m;
frac *= 60;
int s = (int)frac;
if (format24)
{ {
sunHour = module.GetCurrentSunHour(); return string.Format("{0:00}:{1:00}:{2:00}", h, m, s);
}
if (h > 12)
return string.Format("{0}:{1:00}:{2:00} PM", h - 12, m, s);
return string.Format("{0}:{1:00}:{2:00} AM", h, m, s);
}
public LSL_String osGetApparentTimeString(LSL_Integer format24)
{
CheckThreatLevel();
if (m_envModule == null)
{
if (format24 != 0)
return "00:00:00";
return "0:00:00 AM";
} }
return sunHour; float frac = 24 * m_envModule.GetRegionDayFractionTime();
return timeToString(frac, format24 != 0);
} }
public LSL_Float osGetApparentRegionTime()
{
CheckThreatLevel();
if (m_envModule == null)
return 0;
float frac = m_envModule.GetRegionDayFractionTime();
return 86400 * frac;
}
public LSL_String osGetApparentRegionTimeString(LSL_Integer format24)
{
CheckThreatLevel();
if (m_envModule == null)
{
if (format24 != 0)
return "00:00:00";
return "0:00:00 AM";
}
float frac = 24 * m_envModule.GetRegionDayFractionTime();
return timeToString(frac, format24 != 0);
}
public double osSunGetParam(string param) public double osSunGetParam(string param)
{ {
CheckThreatLevel(ThreatLevel.None, "osSunGetParam"); CheckThreatLevel(ThreatLevel.None, "osSunGetParam");

View File

@ -249,7 +249,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
void osSetRegionWaterHeight(double height); void osSetRegionWaterHeight(double height);
void osSetRegionSunSettings(bool useEstateSun, bool sunFixed, double sunHour); void osSetRegionSunSettings(bool useEstateSun, bool sunFixed, double sunHour);
void osSetEstateSunSettings(bool sunFixed, double sunHour); void osSetEstateSunSettings(bool sunFixed, double sunHour);
double osGetCurrentSunHour(); LSL_Float osGetCurrentSunHour();
double osGetSunParam(string param); double osGetSunParam(string param);
double osSunGetParam(string param); // Deprecated double osSunGetParam(string param); // Deprecated
void osSetSunParam(string param, double value); void osSetSunParam(string param, double value);
@ -573,5 +573,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
vector osGetStandTarget(); vector osGetStandTarget();
vector osGetLinkStandTarget(LSL_Integer linkNumber); vector osGetLinkStandTarget(LSL_Integer linkNumber);
LSL_Integer osClearObjectAnimations(); LSL_Integer osClearObjectAnimations();
LSL_Float osGetApparentTime();
LSL_String osGetApparentTimeString(LSL_Integer format24);
LSL_Float osGetApparentRegionTime();
LSL_String osGetApparentRegionTimeString(LSL_Integer format24);
} }
} }

View File

@ -1481,5 +1481,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{ {
return m_OSSL_Functions.osClearObjectAnimations(); return m_OSSL_Functions.osClearObjectAnimations();
} }
public LSL_Float osGetApparentTime()
{
return m_OSSL_Functions.osGetApparentTime();
}
public LSL_String osGetApparentTimeString(LSL_Integer format24)
{
return m_OSSL_Functions.osGetApparentTimeString(format24);
}
public LSL_Float osGetApparentRegionTime()
{
return m_OSSL_Functions.osGetApparentRegionTime();
}
public LSL_String osGetApparentRegionTimeString(LSL_Integer format24)
{
return m_OSSL_Functions.osGetApparentRegionTimeString(format24);
}
} }
} }