diff options
Diffstat (limited to 'OpenSim/Region')
4 files changed, 19 insertions, 3 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs index b9222e3..7dcf137 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs | |||
@@ -151,6 +151,12 @@ namespace OpenSim.Region.ClientStack.Linden | |||
151 | ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, | 151 | ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, |
152 | uint locationID, uint flags, string capsURL, UUID agentID) | 152 | uint locationID, uint flags, string capsURL, UUID agentID) |
153 | { | 153 | { |
154 | // not sure why flags get overwritten here | ||
155 | if ((flags & (uint)TeleportFlags.IsFlying) != 0) | ||
156 | flags = (uint)TeleportFlags.ViaLocation | (uint)TeleportFlags.IsFlying; | ||
157 | else | ||
158 | flags = (uint)TeleportFlags.ViaLocation; | ||
159 | |||
154 | OSDMap info = new OSDMap(); | 160 | OSDMap info = new OSDMap(); |
155 | info.Add("AgentID", OSD.FromUUID(agentID)); | 161 | info.Add("AgentID", OSD.FromUUID(agentID)); |
156 | info.Add("LocationID", OSD.FromInteger(4)); // TODO what is this? | 162 | info.Add("LocationID", OSD.FromInteger(4)); // TODO what is this? |
@@ -159,7 +165,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
159 | info.Add("SimAccess", OSD.FromInteger(simAccess)); | 165 | info.Add("SimAccess", OSD.FromInteger(simAccess)); |
160 | info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); | 166 | info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); |
161 | info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); | 167 | info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); |
162 | info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation | 168 | // info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation |
169 | info.Add("TeleportFlags", OSD.FromUInteger(flags)); | ||
163 | 170 | ||
164 | OSDArray infoArr = new OSDArray(); | 171 | OSDArray infoArr = new OSDArray(); |
165 | infoArr.Add(info); | 172 | infoArr.Add(info); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index ddd8f18..e78ebed 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -808,7 +808,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
808 | handshake.RegionInfo3.ProductName = Util.StringToBytes256(regionInfo.RegionType); | 808 | handshake.RegionInfo3.ProductName = Util.StringToBytes256(regionInfo.RegionType); |
809 | handshake.RegionInfo3.ProductSKU = Utils.EmptyBytes; | 809 | handshake.RegionInfo3.ProductSKU = Utils.EmptyBytes; |
810 | 810 | ||
811 | OutPacket(handshake, ThrottleOutPacketType.Task); | 811 | // OutPacket(handshake, ThrottleOutPacketType.Task); |
812 | // use same as MoveAgentIntoRegion (both should be task ) | ||
813 | OutPacket(handshake, ThrottleOutPacketType.Unknown); | ||
812 | } | 814 | } |
813 | 815 | ||
814 | public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look) | 816 | public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look) |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 1f884c8..9090f64 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -264,6 +264,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
264 | position.Z = newPosZ; | 264 | position.Z = newPosZ; |
265 | } | 265 | } |
266 | 266 | ||
267 | if (sp.Flying) | ||
268 | teleportFlags |= (uint)TeleportFlags.IsFlying; | ||
269 | |||
267 | m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.Transferring); | 270 | m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.Transferring); |
268 | 271 | ||
269 | sp.ControllingClient.SendTeleportStart(teleportFlags); | 272 | sp.ControllingClient.SendTeleportStart(teleportFlags); |
@@ -471,6 +474,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
471 | if (sp.ParentID != (uint)0) | 474 | if (sp.ParentID != (uint)0) |
472 | sp.StandUp(); | 475 | sp.StandUp(); |
473 | 476 | ||
477 | else if (sp.Flying) | ||
478 | teleportFlags |= (uint)TeleportFlags.IsFlying; | ||
479 | |||
474 | sp.ControllingClient.SendTeleportStart(teleportFlags); | 480 | sp.ControllingClient.SendTeleportStart(teleportFlags); |
475 | 481 | ||
476 | // the avatar.Close below will clear the child region list. We need this below for (possibly) | 482 | // the avatar.Close below will clear the child region list. We need this below for (possibly) |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 47b2ead..34ac7d4 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1264,7 +1264,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1264 | 1264 | ||
1265 | Vector3 look = Velocity; | 1265 | Vector3 look = Velocity; |
1266 | 1266 | ||
1267 | if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) | 1267 | // if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) |
1268 | if ((Math.Abs(look.X) < 0.1) && (Math.Abs(look.Y) < 0.1) && (Math.Abs(look.Z) < 0.1)) | ||
1268 | { | 1269 | { |
1269 | look = new Vector3(0.99f, 0.042f, 0); | 1270 | look = new Vector3(0.99f, 0.042f, 0); |
1270 | } | 1271 | } |