mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 08:55:56 +08:00
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.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user