テレポート先のリージョンを見つけるところで,配列の添え字の範囲例外を起こしているようなのですが....
2016-05-05 14:52:32,127 ERROR (STP:Util:15) - OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule [ENTITY TRANSFER MODULE]: Exception on teleport of ab Resident from <140.8004, 166.6968, 29.46057>@JOG Center Sim to <321.7834, 49.00615, 29.46057>@(not found): Index was outside the bounds of the array. at System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[TKey,TValue].MoveNext () <0x422376f0 + 0x00041> in <filename unknown>:0
at OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.RegionCache.GetRegionByPosition (Int32 x, Int32 y) <0x42237230 + 0x0018f> in <filename unknown>:0
at OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.LocalGridServicesConnector.GetRegionByPosition (UUID scopeID, Int32 x, Int32 y) <0x42236a40 + 0x000cb> in <filename unknown>:0
at OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.RemoteGridServicesConnector.GetRegionByPosition (UUID scopeID, Int32 x, Int32 y) <0x42235af0 + 0x000ff> in <filename unknown>:0
at OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.GetRegionContainingWorldLocation (IGridService pGridService, UUID pScopeID, Double px, Double py, UInt32 pSizeHint) <0x4fcc4ef0 + 0x002a7> in <filename unknown>:0
at OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.GetRegionContainingWorldLocation (IGridService pGridService, UUID pScopeID, Double px, Double py) <0x4fcc4e90 + 0x0004f> in <filename unknown>:0
at OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.GetTeleportDestinationRegion (IGridService gridService, UUID scope, UInt64 regionHandle, OpenMetaverse.Vector3& position) <0x4fcc4c50 + 0x00117> in <filename unknown>:0
at OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.TeleportAgentToDifferentRegion (OpenSim.Region.Framework.Scenes.ScenePresence sp, UInt64 regionHandle, Vector3 position, Vector3 lookAt, UInt32 teleportFlags, OpenSim.Services.Interfaces.GridRegion& finalDestination, IClientAPI client) <0x4fcc4600 + 0x000db> in <filename unknown>:0
at OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.Teleport (OpenSim.Region.Framework.Scenes.ScenePresence sp, UInt64 regionHandle, Vector3 position, Vector3 lookAt, UInt32 teleportFlags, IClientAPI client) <0x4fcc3170 + 0x004eb> in <filename unknown>:0
例外発生関数は GetRegionByPosition (Int32 x, Int32 y) ですよね.
public GridRegion GetRegionByPosition(int x, int y)
{
// do actual search by position
// not the best, but this will not hold that many regions
GridRegion foundRegion = null;
foreach(GridRegion r in m_neighbours.Values)
{
if (x >= r.RegionLocX && x < r.RegionLocX + r.RegionSizeX
&& y >= r.RegionLocY && y < r.RegionLocY + r.RegionSizeY)
{
foundRegion = r;
break;
}
}
return foundRegion;
}
でもこれって,foreach なのになぜに範囲例外になるんだ???
mono のバグ?