The map is seriously broken. This doesn't fix it, but at least provides one more piece of data that seems to be required -- agent flags, which seem to be different in Viewer 2. WARNING: changes IClientAPI.
parent
fd66903f74
commit
c0a69bfaab
|
@ -77,7 +77,7 @@ namespace OpenSim.Framework
|
|||
|
||||
public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY, uint flag);
|
||||
|
||||
public delegate void RequestMapName(IClientAPI remoteClient, string mapName);
|
||||
public delegate void RequestMapName(IClientAPI remoteClient, string mapName, uint flags);
|
||||
|
||||
public delegate void TeleportLocationRequest(
|
||||
IClientAPI remoteClient, ulong regionHandle, Vector3 position, Vector3 lookAt, uint flags);
|
||||
|
|
|
@ -8264,13 +8264,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
string mapName = Util.UTF8.GetString(map.NameData.Name, 0,
|
||||
map.NameData.Name.Length - 1);
|
||||
RequestMapName handlerMapNameRequest = OnMapNameRequest;
|
||||
if (handlerMapNameRequest != null)
|
||||
{
|
||||
handlerMapNameRequest(this, mapName);
|
||||
handlerMapNameRequest(this, mapName, map.AgentData.Flags);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
client.OnMapNameRequest += OnMapNameRequest;
|
||||
}
|
||||
|
||||
private void OnMapNameRequest(IClientAPI remoteClient, string mapName)
|
||||
private void OnMapNameRequest(IClientAPI remoteClient, string mapName, uint flags)
|
||||
{
|
||||
if (mapName.Length < 3)
|
||||
{
|
||||
|
@ -139,9 +139,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
data.Y = 0;
|
||||
blocks.Add(data);
|
||||
|
||||
// not sure what the flags do here, but seems to be necessary
|
||||
// to set to "2" for viewer 2
|
||||
remoteClient.SendMapBlock(blocks, 2);
|
||||
// flags are agent flags sent from the viewer.
|
||||
// they have different values depending on different viewers, apparently
|
||||
remoteClient.SendMapBlock(blocks, flags);
|
||||
}
|
||||
|
||||
// private Scene GetClientScene(IClientAPI client)
|
||||
|
|
Loading…
Reference in New Issue