Now using region flags for llRequestSimulatorData DATA_SIM_POS.

If the region is not classed a hypergrid region, then the region secret is checked to make sure that it is a valid UUID.

Just a temporary fix at this time.
connector_plugin
TBG Renfold 2012-10-09 14:56:25 +01:00 committed by Justin Clark-Casey (justincc)
parent fba59d905c
commit f6e166cd0b
1 changed files with 19 additions and 10 deletions

View File

@ -56,6 +56,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using PrimType = OpenSim.Region.Framework.Scenes.PrimType; using PrimType = OpenSim.Region.Framework.Scenes.PrimType;
using AssetLandmark = OpenSim.Framework.AssetLandmark; using AssetLandmark = OpenSim.Framework.AssetLandmark;
using RegionFlags = OpenSim.Framework.RegionFlags;
using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat;
using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
@ -9327,12 +9328,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
ScriptSleep(1000); ScriptSleep(1000);
return UUID.Zero.ToString(); return UUID.Zero.ToString();
} }
if (m_ScriptEngine.World.RegionInfo.RegionName != simulator)
{
//Hypergrid Region co-ordinates
uint rx = 0, ry = 0;
Utils.LongToUInts(Convert.ToUInt64(info.RegionSecret), out rx, out ry);
RegionFlags regionFlags = (RegionFlags)m_ScriptEngine.World.GridService.GetRegionFlags(info.ScopeID, info.RegionID);
if ((regionFlags & RegionFlags.Hyperlink) != 0)
{
uint rx = 0, ry = 0;
//Hypergrid Region co-ordinates
Utils.LongToUInts(Convert.ToUInt64(info.RegionSecret), out rx, out ry);
reply = new LSL_Vector( reply = new LSL_Vector(
rx, rx,
ry, ry,
@ -9340,12 +9342,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
} }
else else
{ {
//Local-cooridnates UUID regionSecret = UUID.Zero;
if (UUID.TryParse(info.RegionSecret, out regionSecret))
{
if (regionSecret != UUID.Zero)
{
//Local co-oridnates
reply = new LSL_Vector( reply = new LSL_Vector(
info.RegionLocX, info.RegionLocX,
info.RegionLocY, info.RegionLocY,
0).ToString(); 0).ToString();
} }
}
}
break; break;
case ScriptBaseClass.DATA_SIM_STATUS: case ScriptBaseClass.DATA_SIM_STATUS:
if (info != null) if (info != null)