Merge branch 'master' of /var/git/opensim/
commit
36495f6992
|
@ -2298,5 +2298,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert a unix time to a llGetTimestamp() like string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="unixTime"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public LSL_String osUnixTimeToTimestamp(long time)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.VeryLow, "osUnixTimeToTimestamp");
|
||||||
|
long baseTicks = 621355968000000000;
|
||||||
|
long tickResolution = 10000000;
|
||||||
|
long epochTicks = (time * tickResolution) + baseTicks;
|
||||||
|
DateTime date = new DateTime(epochTicks);
|
||||||
|
|
||||||
|
return date.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -184,5 +184,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
|
|
||||||
LSL_List osGetAvatarList();
|
LSL_List osGetAvatarList();
|
||||||
|
|
||||||
|
LSL_String osUnixTimeToTimestamp(long time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -678,26 +678,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osGetSimulatorMemory();
|
return m_OSSL_Functions.osGetSimulatorMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void osKickAvatar(string FirstName,string SurName,string alert)
|
public void osKickAvatar(string FirstName,string SurName,string alert)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osKickAvatar(FirstName, SurName, alert);
|
m_OSSL_Functions.osKickAvatar(FirstName, SurName, alert);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void osSetSpeed(string UUID, float SpeedModifier)
|
public void osSetSpeed(string UUID, float SpeedModifier)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osSetSpeed(UUID, SpeedModifier);
|
m_OSSL_Functions.osSetSpeed(UUID, SpeedModifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void osCauseDamage(string avatar, double damage)
|
public void osCauseDamage(string avatar, double damage)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osCauseDamage(avatar, damage);
|
m_OSSL_Functions.osCauseDamage(avatar, damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void osCauseHealing(string avatar, double healing)
|
public void osCauseHealing(string avatar, double healing)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osCauseHealing(avatar, healing);
|
m_OSSL_Functions.osCauseHealing(avatar, healing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules)
|
public LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules)
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osGetPrimitiveParams(prim, rules);
|
return m_OSSL_Functions.osGetPrimitiveParams(prim, rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void osSetPrimitiveParams(LSL_Key prim, LSL_List rules)
|
public void osSetPrimitiveParams(LSL_Key prim, LSL_List rules)
|
||||||
{
|
{
|
||||||
m_OSSL_Functions.osSetPrimitiveParams(prim, rules);
|
m_OSSL_Functions.osSetPrimitiveParams(prim, rules);
|
||||||
|
@ -717,5 +723,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osGetAvatarList();
|
return m_OSSL_Functions.osGetAvatarList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_String osUnixTimeToTimestamp(long time)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osUnixTimeToTimestamp(time);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -28,6 +28,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
@ -427,14 +428,11 @@ namespace OpenSim.Services.LLLoginService
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[LLOGIN SERVICE]: User {0} {1} does not have a valid home and this grid does not have default locations. Attempting to find random region",
|
m_log.WarnFormat("[LLOGIN SERVICE]: User {0} {1} does not have a valid home and this grid does not have default locations. Attempting to find random region",
|
||||||
account.FirstName, account.LastName);
|
account.FirstName, account.LastName);
|
||||||
defaults = m_GridService.GetRegionsByName(scopeID, "", 1);
|
region = FindAlternativeRegion(scopeID);
|
||||||
if (defaults != null && defaults.Count > 0)
|
if (region != null)
|
||||||
{
|
|
||||||
region = defaults[0];
|
|
||||||
where = "safe";
|
where = "safe";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return region;
|
return region;
|
||||||
}
|
}
|
||||||
|
@ -459,13 +457,10 @@ namespace OpenSim.Services.LLLoginService
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region");
|
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region");
|
||||||
defaults = m_GridService.GetRegionsByName(scopeID, "", 1);
|
region = FindAlternativeRegion(scopeID);
|
||||||
if (defaults != null && defaults.Count > 0)
|
if (region != null)
|
||||||
{
|
|
||||||
region = defaults[0];
|
|
||||||
where = "safe";
|
where = "safe";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -564,6 +559,31 @@ namespace OpenSim.Services.LLLoginService
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GridRegion FindAlternativeRegion(UUID scopeID)
|
||||||
|
{
|
||||||
|
List<GridRegion> hyperlinks = null;
|
||||||
|
List<GridRegion> regions = m_GridService.GetFallbackRegions(scopeID, 1000 * (int)Constants.RegionSize, 1000 * (int)Constants.RegionSize);
|
||||||
|
if (regions != null && regions.Count > 0)
|
||||||
|
{
|
||||||
|
hyperlinks = m_GridService.GetHyperlinks(scopeID);
|
||||||
|
IEnumerable<GridRegion> availableRegions = regions.Except(hyperlinks);
|
||||||
|
if (availableRegions.Count() > 0)
|
||||||
|
return availableRegions.ElementAt(0);
|
||||||
|
}
|
||||||
|
// No fallbacks, try to find an arbitrary region that is not a hyperlink
|
||||||
|
// maxNumber is fixed for now; maybe use some search pattern with increasing maxSize here?
|
||||||
|
regions = m_GridService.GetRegionsByName(scopeID, "", 10);
|
||||||
|
if (regions != null && regions.Count > 0)
|
||||||
|
{
|
||||||
|
if (hyperlinks == null)
|
||||||
|
hyperlinks = m_GridService.GetHyperlinks(scopeID);
|
||||||
|
IEnumerable<GridRegion> availableRegions = regions.Except(hyperlinks);
|
||||||
|
if (availableRegions.Count() > 0)
|
||||||
|
return availableRegions.ElementAt(0);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private GridRegion FindForeignRegion(string domainName, uint port, string regionName, out GridRegion gatekeeper)
|
private GridRegion FindForeignRegion(string domainName, uint port, string regionName, out GridRegion gatekeeper)
|
||||||
{
|
{
|
||||||
gatekeeper = new GridRegion();
|
gatekeeper = new GridRegion();
|
||||||
|
|
|
@ -1214,6 +1214,7 @@
|
||||||
|
|
||||||
<ReferencePath>../../../bin/</ReferencePath>
|
<ReferencePath>../../../bin/</ReferencePath>
|
||||||
<Reference name="System"/>
|
<Reference name="System"/>
|
||||||
|
<Reference name="System.Core"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
<Reference name="OpenSim.Framework.Capabilities"/>
|
<Reference name="OpenSim.Framework.Capabilities"/>
|
||||||
<Reference name="OpenSim.Framework.Console"/>
|
<Reference name="OpenSim.Framework.Console"/>
|
||||||
|
|
Loading…
Reference in New Issue