diff options
Very Preliminary local teleporting added (currently only can teleport within the current region).
Now need to add teleporting between regions and use of the dynamic texture for the terrain.
Diffstat (limited to 'OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs')
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs index 4cf6ac2..f8425da 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | |||
@@ -158,7 +158,6 @@ namespace OpenSim | |||
158 | } | 158 | } |
159 | break; | 159 | break; |
160 | case PacketType.CompleteAgentMovement: | 160 | case PacketType.CompleteAgentMovement: |
161 | if (this.m_child) this.UpgradeClient(); | ||
162 | if (OnCompleteMovementToRegion != null) | 161 | if (OnCompleteMovementToRegion != null) |
163 | { | 162 | { |
164 | OnCompleteMovementToRegion(); | 163 | OnCompleteMovementToRegion(); |
@@ -396,8 +395,11 @@ namespace OpenSim | |||
396 | break; | 395 | break; |
397 | case PacketType.MapBlockRequest: | 396 | case PacketType.MapBlockRequest: |
398 | MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack; | 397 | MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack; |
399 | 398 | if (OnRequestMapBlocks != null) | |
400 | this.RequestMapBlocks(MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | 399 | { |
400 | OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | ||
401 | } | ||
402 | //this.RequestMapBlocks(MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | ||
401 | break; | 403 | break; |
402 | case PacketType.TeleportLandmarkRequest: | 404 | case PacketType.TeleportLandmarkRequest: |
403 | TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack; | 405 | TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack; |
@@ -449,16 +451,25 @@ namespace OpenSim | |||
449 | break; | 451 | break; |
450 | case PacketType.TeleportLocationRequest: | 452 | case PacketType.TeleportLocationRequest: |
451 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; | 453 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; |
452 | Console.WriteLine(tpLocReq.ToString()); | 454 | // Console.WriteLine(tpLocReq.ToString()); |
453 | 455 | ||
454 | tpStart = new TeleportStartPacket(); | 456 | if (OnTeleportLocationRequest != null) |
455 | tpStart.Info.TeleportFlags = 16; // Teleport via location | 457 | { |
456 | Console.WriteLine(tpStart.ToString()); | 458 | OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, tpLocReq.Info.LookAt, 16); |
457 | OutPacket(tpStart); | 459 | } |
460 | else | ||
461 | { | ||
462 | //no event handler so cancel request | ||
463 | TeleportCancelPacket tpCancel = new TeleportCancelPacket(); | ||
464 | tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID; | ||
465 | tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID; | ||
458 | 466 | ||
459 | if (m_regionData.RegionHandle != tpLocReq.Info.RegionHandle) | 467 | OutPacket(tpCancel); |
468 | } | ||
469 | |||
470 | /* if (m_regionData.RegionHandle != tpLocReq.Info.RegionHandle) | ||
460 | { | 471 | { |
461 | /* m_gridServer.getRegion(tpLocReq.Info.RegionHandle); */ | 472 | // m_gridServer.getRegion(tpLocReq.Info.RegionHandle); |
462 | Console.WriteLine("Inter-sim teleport not yet implemented"); | 473 | Console.WriteLine("Inter-sim teleport not yet implemented"); |
463 | TeleportCancelPacket tpCancel = new TeleportCancelPacket(); | 474 | TeleportCancelPacket tpCancel = new TeleportCancelPacket(); |
464 | tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID; | 475 | tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID; |
@@ -469,15 +480,15 @@ namespace OpenSim | |||
469 | else | 480 | else |
470 | { | 481 | { |
471 | Console.WriteLine("Local teleport"); | 482 | Console.WriteLine("Local teleport"); |
472 | TeleportLocalPacket tpLocal = new TeleportLocalPacket(); | 483 | TeleportLocalPacket tpLocal2 = new TeleportLocalPacket(); |
473 | tpLocal.Info.AgentID = tpLocReq.AgentData.AgentID; | 484 | tpLocal2.Info.AgentID = tpLocReq.AgentData.AgentID; |
474 | tpLocal.Info.TeleportFlags = tpStart.Info.TeleportFlags; | 485 | tpLocal2.Info.TeleportFlags = tpStart.Info.TeleportFlags; |
475 | tpLocal.Info.LocationID = 2; | 486 | tpLocal2.Info.LocationID = 2; |
476 | tpLocal.Info.LookAt = tpLocReq.Info.LookAt; | 487 | tpLocal2.Info.LookAt = tpLocReq.Info.LookAt; |
477 | tpLocal.Info.Position = tpLocReq.Info.Position; | 488 | tpLocal2.Info.Position = tpLocReq.Info.Position; |
478 | OutPacket(tpLocal); | 489 | OutPacket(tpLocal2); |
479 | 490 | ||
480 | } | 491 | }*/ |
481 | break; | 492 | break; |
482 | #endregion | 493 | #endregion |
483 | 494 | ||