diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.API.cs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index 9650b42..e683db2 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -34,6 +34,7 @@ using OpenSim.Framework.Types; | |||
34 | 34 | ||
35 | using libsecondlife; | 35 | using libsecondlife; |
36 | using libsecondlife.Packets; | 36 | using libsecondlife.Packets; |
37 | using System.Net; | ||
37 | 38 | ||
38 | namespace OpenSim.Region.ClientStack | 39 | namespace OpenSim.Region.ClientStack |
39 | { | 40 | { |
@@ -293,8 +294,11 @@ namespace OpenSim.Region.ClientStack | |||
293 | /// <param name="neighbourHandle"></param> | 294 | /// <param name="neighbourHandle"></param> |
294 | /// <param name="neighbourIP"></param> | 295 | /// <param name="neighbourIP"></param> |
295 | /// <param name="neighbourPort"></param> | 296 | /// <param name="neighbourPort"></param> |
296 | public void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort) | 297 | public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint ) |
297 | { | 298 | { |
299 | System.Net.IPAddress neighbourIP = neighbourEndPoint.Address; | ||
300 | ushort neighbourPort = (ushort) neighbourEndPoint.Port; | ||
301 | |||
298 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); | 302 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); |
299 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); | 303 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); |
300 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; | 304 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; |
@@ -326,7 +330,7 @@ namespace OpenSim.Region.ClientStack | |||
326 | return agentData; | 330 | return agentData; |
327 | } | 331 | } |
328 | 332 | ||
329 | public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, System.Net.IPAddress newRegionIP, ushort newRegionPort) | 333 | public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint externalIPEndPoint) |
330 | { | 334 | { |
331 | LLVector3 look = new LLVector3(lookAt.X * 10, lookAt.Y * 10, lookAt.Z * 10); | 335 | LLVector3 look = new LLVector3(lookAt.X * 10, lookAt.Y * 10, lookAt.Z * 10); |
332 | 336 | ||
@@ -339,12 +343,12 @@ namespace OpenSim.Region.ClientStack | |||
339 | newSimPack.Info.LookAt = look; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! | 343 | newSimPack.Info.LookAt = look; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! |
340 | newSimPack.RegionData = new libsecondlife.Packets.CrossedRegionPacket.RegionDataBlock(); | 344 | newSimPack.RegionData = new libsecondlife.Packets.CrossedRegionPacket.RegionDataBlock(); |
341 | newSimPack.RegionData.RegionHandle = newRegionHandle; | 345 | newSimPack.RegionData.RegionHandle = newRegionHandle; |
342 | byte[] byteIP = newRegionIP.GetAddressBytes(); | 346 | byte[] byteIP = externalIPEndPoint.Address.GetAddressBytes(); |
343 | newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24; | 347 | newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24; |
344 | newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16; | 348 | newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16; |
345 | newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8; | 349 | newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8; |
346 | newSimPack.RegionData.SimIP += (uint)byteIP[0]; | 350 | newSimPack.RegionData.SimIP += (uint)byteIP[0]; |
347 | newSimPack.RegionData.SimPort = newRegionPort; | 351 | newSimPack.RegionData.SimPort = (ushort)externalIPEndPoint.Port; |
348 | newSimPack.RegionData.SeedCapability = new byte[0]; | 352 | newSimPack.RegionData.SeedCapability = new byte[0]; |
349 | 353 | ||
350 | this.OutPacket(newSimPack); | 354 | this.OutPacket(newSimPack); |
@@ -386,7 +390,7 @@ namespace OpenSim.Region.ClientStack | |||
386 | OutPacket(tpLocal); | 390 | OutPacket(tpLocal); |
387 | } | 391 | } |
388 | 392 | ||
389 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, string ipAddress, ushort ipPort, uint locationID, uint flags) | 393 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags) |
390 | { | 394 | { |
391 | TeleportFinishPacket teleport = new TeleportFinishPacket(); | 395 | TeleportFinishPacket teleport = new TeleportFinishPacket(); |
392 | teleport.Info.AgentID = this.AgentID; | 396 | teleport.Info.AgentID = this.AgentID; |
@@ -394,7 +398,7 @@ namespace OpenSim.Region.ClientStack | |||
394 | teleport.Info.SimAccess = simAccess; | 398 | teleport.Info.SimAccess = simAccess; |
395 | teleport.Info.SeedCapability = new byte[0]; | 399 | teleport.Info.SeedCapability = new byte[0]; |
396 | 400 | ||
397 | System.Net.IPAddress oIP = System.Net.IPAddress.Parse(ipAddress); | 401 | IPAddress oIP = newRegionEndPoint.Address; |
398 | byte[] byteIP = oIP.GetAddressBytes(); | 402 | byte[] byteIP = oIP.GetAddressBytes(); |
399 | uint ip = (uint)byteIP[3] << 24; | 403 | uint ip = (uint)byteIP[3] << 24; |
400 | ip += (uint)byteIP[2] << 16; | 404 | ip += (uint)byteIP[2] << 16; |
@@ -402,7 +406,7 @@ namespace OpenSim.Region.ClientStack | |||
402 | ip += (uint)byteIP[0]; | 406 | ip += (uint)byteIP[0]; |
403 | 407 | ||
404 | teleport.Info.SimIP = ip; | 408 | teleport.Info.SimIP = ip; |
405 | teleport.Info.SimPort = ipPort; | 409 | teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; |
406 | teleport.Info.LocationID = 4; | 410 | teleport.Info.LocationID = 4; |
407 | teleport.Info.TeleportFlags = 1 << 4; | 411 | teleport.Info.TeleportFlags = 1 << 4; |
408 | OutPacket(teleport); | 412 | OutPacket(teleport); |