diff options
Diffstat (limited to 'OpenSim/Region')
10 files changed, 45 insertions, 23 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index c11b9a2..1d3bdf3 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -1432,16 +1432,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1432 | /// <summary> | 1432 | /// <summary> |
1433 | /// | 1433 | /// |
1434 | /// </summary> | 1434 | /// </summary> |
1435 | public void SendTeleportLocationStart() | 1435 | public void SendTeleportStart(uint flags) |
1436 | { | 1436 | { |
1437 | //TeleportStartPacket tpStart = (TeleportStartPacket)PacketPool.Instance.GetPacket(PacketType.TeleportStart); | 1437 | TeleportStartPacket tpStart = (TeleportStartPacket)PacketPool.Instance.GetPacket(PacketType.TeleportStart); |
1438 | TeleportStartPacket tpStart = new TeleportStartPacket(); | 1438 | //TeleportStartPacket tpStart = new TeleportStartPacket(); |
1439 | tpStart.Info.TeleportFlags = 16; // Teleport via location | 1439 | tpStart.Info.TeleportFlags = flags; //16; // Teleport via location |
1440 | 1440 | ||
1441 | // Hack to get this out immediately and skip throttles | 1441 | // Hack to get this out immediately and skip throttles |
1442 | OutPacket(tpStart, ThrottleOutPacketType.Unknown); | 1442 | OutPacket(tpStart, ThrottleOutPacketType.Unknown); |
1443 | } | 1443 | } |
1444 | 1444 | ||
1445 | public void SendTeleportProgress(uint flags, string message) | ||
1446 | { | ||
1447 | TeleportProgressPacket tpProgress = (TeleportProgressPacket)PacketPool.Instance.GetPacket(PacketType.TeleportProgress); | ||
1448 | tpProgress.AgentData.AgentID = this.AgentId; | ||
1449 | tpProgress.Info.TeleportFlags = flags; | ||
1450 | tpProgress.Info.Message = Util.StringToBytes256(message); | ||
1451 | |||
1452 | // Hack to get this out immediately and skip throttles | ||
1453 | OutPacket(tpProgress, ThrottleOutPacketType.Unknown); | ||
1454 | } | ||
1455 | |||
1445 | public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) | 1456 | public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) |
1446 | { | 1457 | { |
1447 | MoneyBalanceReplyPacket money = (MoneyBalanceReplyPacket)PacketPool.Instance.GetPacket(PacketType.MoneyBalanceReply); | 1458 | MoneyBalanceReplyPacket money = (MoneyBalanceReplyPacket)PacketPool.Instance.GetPacket(PacketType.MoneyBalanceReply); |
@@ -3022,7 +3033,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3022 | { | 3033 | { |
3023 | OSDMap GroupDataMap = new OSDMap(6); | 3034 | OSDMap GroupDataMap = new OSDMap(6); |
3024 | OSDMap NewGroupDataMap = new OSDMap(1); | 3035 | OSDMap NewGroupDataMap = new OSDMap(1); |
3025 | GroupDataMap.Add("GroupPowers", OSD.FromBinary(m.GroupPowers)); | 3036 | GroupDataMap.Add("GroupPowers", OSD.FromULong(m.GroupPowers)); |
3026 | GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(m.AcceptNotices)); | 3037 | GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(m.AcceptNotices)); |
3027 | GroupDataMap.Add("GroupTitle", OSD.FromString(m.GroupTitle)); | 3038 | GroupDataMap.Add("GroupTitle", OSD.FromString(m.GroupTitle)); |
3028 | GroupDataMap.Add("GroupID", OSD.FromUUID(m.GroupID)); | 3039 | GroupDataMap.Add("GroupID", OSD.FromUUID(m.GroupID)); |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 607219e..bb98dba 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -174,9 +174,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
174 | position.Z = newPosZ; | 174 | position.Z = newPosZ; |
175 | } | 175 | } |
176 | 176 | ||
177 | // Only send this if the event queue is null | 177 | sp.ControllingClient.SendTeleportStart(teleportFlags); |
178 | if (eq == null) | ||
179 | sp.ControllingClient.SendTeleportLocationStart(); | ||
180 | 178 | ||
181 | sp.ControllingClient.SendLocalTeleport(position, lookAt, teleportFlags); | 179 | sp.ControllingClient.SendLocalTeleport(position, lookAt, teleportFlags); |
182 | sp.Teleport(position); | 180 | sp.Teleport(position); |
@@ -257,9 +255,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
257 | 255 | ||
258 | ulong destinationHandle = finalDestination.RegionHandle; | 256 | ulong destinationHandle = finalDestination.RegionHandle; |
259 | 257 | ||
260 | if (eq == null) | ||
261 | sp.ControllingClient.SendTeleportLocationStart(); | ||
262 | |||
263 | // Let's do DNS resolution only once in this process, please! | 258 | // Let's do DNS resolution only once in this process, please! |
264 | // This may be a costly operation. The reg.ExternalEndPoint field is not a passive field, | 259 | // This may be a costly operation. The reg.ExternalEndPoint field is not a passive field, |
265 | // it's actually doing a lot of work. | 260 | // it's actually doing a lot of work. |
@@ -277,6 +272,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
277 | return; | 272 | return; |
278 | } | 273 | } |
279 | 274 | ||
275 | sp.ControllingClient.SendTeleportStart(teleportFlags); | ||
276 | |||
280 | // the avatar.Close below will clear the child region list. We need this below for (possibly) | 277 | // the avatar.Close below will clear the child region list. We need this below for (possibly) |
281 | // closing the child agents, so save it here (we need a copy as it is Clear()-ed). | 278 | // closing the child agents, so save it here (we need a copy as it is Clear()-ed). |
282 | //List<ulong> childRegions = new List<ulong>(avatar.GetKnownRegionList()); | 279 | //List<ulong> childRegions = new List<ulong>(avatar.GetKnownRegionList()); |
@@ -320,6 +317,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
320 | 317 | ||
321 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) | 318 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) |
322 | { | 319 | { |
320 | //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); | ||
321 | |||
323 | #region IP Translation for NAT | 322 | #region IP Translation for NAT |
324 | IClientIPEndpoint ipepClient; | 323 | IClientIPEndpoint ipepClient; |
325 | if (sp.ClientView.TryGet(out ipepClient)) | 324 | if (sp.ClientView.TryGet(out ipepClient)) |
@@ -397,6 +396,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
397 | agent.Position = position; | 396 | agent.Position = position; |
398 | SetCallbackURL(agent, sp.Scene.RegionInfo); | 397 | SetCallbackURL(agent, sp.Scene.RegionInfo); |
399 | 398 | ||
399 | //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Updating agent..."); | ||
400 | |||
400 | if (!UpdateAgent(reg, finalDestination, agent)) | 401 | if (!UpdateAgent(reg, finalDestination, agent)) |
401 | { | 402 | { |
402 | // Region doesn't take it | 403 | // Region doesn't take it |
diff --git a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs index 53a2a7d..e9bcae3 100644 --- a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs +++ b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs | |||
@@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue | |||
158 | info.Add("SimAccess", OSD.FromInteger(simAccess)); | 158 | info.Add("SimAccess", OSD.FromInteger(simAccess)); |
159 | info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); | 159 | info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); |
160 | info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); | 160 | info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); |
161 | info.Add("TeleportFlags", OSD.FromBinary(1L << 4)); // AgentManager.TeleportFlags.ViaLocation | 161 | info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation |
162 | 162 | ||
163 | OSDArray infoArr = new OSDArray(); | 163 | OSDArray infoArr = new OSDArray(); |
164 | infoArr.Add(info); | 164 | infoArr.Add(info); |
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 940b535..51f2c41 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -343,7 +343,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
343 | { | 343 | { |
344 | if (!s.IsChildAgent) | 344 | if (!s.IsChildAgent) |
345 | { | 345 | { |
346 | s.ControllingClient.SendTeleportLocationStart(); | ||
347 | m_scene.TeleportClientHome(user, s.ControllingClient); | 346 | m_scene.TeleportClientHome(user, s.ControllingClient); |
348 | } | 347 | } |
349 | } | 348 | } |
@@ -478,7 +477,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
478 | ScenePresence s = m_scene.GetScenePresence(prey); | 477 | ScenePresence s = m_scene.GetScenePresence(prey); |
479 | if (s != null) | 478 | if (s != null) |
480 | { | 479 | { |
481 | s.ControllingClient.SendTeleportLocationStart(); | ||
482 | m_scene.TeleportClientHome(prey, s.ControllingClient); | 480 | m_scene.TeleportClientHome(prey, s.ControllingClient); |
483 | } | 481 | } |
484 | } | 482 | } |
@@ -498,7 +496,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
498 | // Also make sure they are actually in the region | 496 | // Also make sure they are actually in the region |
499 | if (p != null && !p.IsChildAgent) | 497 | if (p != null && !p.IsChildAgent) |
500 | { | 498 | { |
501 | p.ControllingClient.SendTeleportLocationStart(); | ||
502 | m_scene.TeleportClientHome(p.UUID, p.ControllingClient); | 499 | m_scene.TeleportClientHome(p.UUID, p.ControllingClient); |
503 | } | 500 | } |
504 | } | 501 | } |
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index f6e6163..268612e 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -520,7 +520,11 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
520 | { | 520 | { |
521 | } | 521 | } |
522 | 522 | ||
523 | public virtual void SendTeleportLocationStart() | 523 | public virtual void SendTeleportStart(uint flags) |
524 | { | ||
525 | } | ||
526 | |||
527 | public virtual void SendTeleportProgress(uint flags, string message) | ||
524 | { | 528 | { |
525 | } | 529 | } |
526 | 530 | ||
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index ee7aa2da..6793ef6 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -1035,11 +1035,15 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
1035 | 1035 | ||
1036 | } | 1036 | } |
1037 | 1037 | ||
1038 | public void SendTeleportLocationStart() | 1038 | public void SendTeleportStart(uint flags) |
1039 | { | 1039 | { |
1040 | 1040 | ||
1041 | } | 1041 | } |
1042 | 1042 | ||
1043 | public void SendTeleportProgress(uint flags, string message) | ||
1044 | { | ||
1045 | } | ||
1046 | |||
1043 | public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) | 1047 | public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) |
1044 | { | 1048 | { |
1045 | 1049 | ||
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs index 3f15b69..2969503 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | |||
@@ -1129,7 +1129,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
1129 | OSDMap NewGroupDataMap = new OSDMap(1); | 1129 | OSDMap NewGroupDataMap = new OSDMap(1); |
1130 | 1130 | ||
1131 | GroupDataMap.Add("GroupID", OSD.FromUUID(membership.GroupID)); | 1131 | GroupDataMap.Add("GroupID", OSD.FromUUID(membership.GroupID)); |
1132 | GroupDataMap.Add("GroupPowers", OSD.FromBinary(membership.GroupPowers)); | 1132 | GroupDataMap.Add("GroupPowers", OSD.FromULong(membership.GroupPowers)); |
1133 | GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(membership.AcceptNotices)); | 1133 | GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(membership.AcceptNotices)); |
1134 | GroupDataMap.Add("GroupInsigniaID", OSD.FromUUID(membership.GroupPicture)); | 1134 | GroupDataMap.Add("GroupInsigniaID", OSD.FromUUID(membership.GroupPicture)); |
1135 | GroupDataMap.Add("Contribution", OSD.FromInteger(membership.Contribution)); | 1135 | GroupDataMap.Add("Contribution", OSD.FromInteger(membership.Contribution)); |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 2e0450c..fae12b6 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -611,7 +611,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
611 | { | 611 | { |
612 | } | 612 | } |
613 | 613 | ||
614 | public virtual void SendTeleportLocationStart() | 614 | public virtual void SendTeleportStart(uint flags) |
615 | { | ||
616 | } | ||
617 | |||
618 | public virtual void SendTeleportProgress(uint flags, string message) | ||
615 | { | 619 | { |
616 | } | 620 | } |
617 | 621 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 32e46ec..d38fe9f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3505,6 +3505,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3505 | { | 3505 | { |
3506 | m_host.AddScriptLPS(1); | 3506 | m_host.AddScriptLPS(1); |
3507 | UUID invItemID = InventorySelf(); | 3507 | UUID invItemID = InventorySelf(); |
3508 | UUID targetID; | ||
3509 | |||
3510 | if (!UUID.TryParse(target, out targetID)) | ||
3511 | return; | ||
3508 | 3512 | ||
3509 | TaskInventoryItem item; | 3513 | TaskInventoryItem item; |
3510 | lock (m_host.TaskInventory) | 3514 | lock (m_host.TaskInventory) |
@@ -3524,7 +3528,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3524 | if (sp != null) | 3528 | if (sp != null) |
3525 | client = sp.ControllingClient; | 3529 | client = sp.ControllingClient; |
3526 | 3530 | ||
3527 | SceneObjectPart targetPart = World.GetSceneObjectPart((UUID)target); | 3531 | SceneObjectPart targetPart = World.GetSceneObjectPart((UUID)targetID); |
3528 | 3532 | ||
3529 | if (targetPart.ParentGroup.RootPart.AttachmentPoint != 0) | 3533 | if (targetPart.ParentGroup.RootPart.AttachmentPoint != 0) |
3530 | return; // Fail silently if attached | 3534 | return; // Fail silently if attached |
@@ -4070,7 +4074,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4070 | if (m_host.OwnerID == World.LandChannel.GetLandObject( | 4074 | if (m_host.OwnerID == World.LandChannel.GetLandObject( |
4071 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) | 4075 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) |
4072 | { | 4076 | { |
4073 | presence.ControllingClient.SendTeleportLocationStart(); | ||
4074 | World.TeleportClientHome(agentId, presence.ControllingClient); | 4077 | World.TeleportClientHome(agentId, presence.ControllingClient); |
4075 | } | 4078 | } |
4076 | } | 4079 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 01b64eb..a529a94 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -664,7 +664,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
664 | regionName = regInfo.RegionName; | 664 | regionName = regInfo.RegionName; |
665 | } | 665 | } |
666 | } | 666 | } |
667 | presence.ControllingClient.SendTeleportLocationStart(); | ||
668 | World.RequestTeleportLocation(presence.ControllingClient, regionName, | 667 | World.RequestTeleportLocation(presence.ControllingClient, regionName, |
669 | new Vector3((float)position.x, (float)position.y, (float)position.z), | 668 | new Vector3((float)position.x, (float)position.y, (float)position.z), |
670 | new Vector3((float)lookat.x, (float)lookat.y, (float)lookat.z), (uint)TPFlags.ViaLocation); | 669 | new Vector3((float)lookat.x, (float)lookat.y, (float)lookat.z), (uint)TPFlags.ViaLocation); |
@@ -696,7 +695,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
696 | == World.LandChannel.GetLandObject( | 695 | == World.LandChannel.GetLandObject( |
697 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) | 696 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) |
698 | { | 697 | { |
699 | presence.ControllingClient.SendTeleportLocationStart(); | ||
700 | World.RequestTeleportLocation(presence.ControllingClient, regionHandle, | 698 | World.RequestTeleportLocation(presence.ControllingClient, regionHandle, |
701 | new Vector3((float)position.x, (float)position.y, (float)position.z), | 699 | new Vector3((float)position.x, (float)position.y, (float)position.z), |
702 | new Vector3((float)lookat.x, (float)lookat.y, (float)lookat.z), (uint)TPFlags.ViaLocation); | 700 | new Vector3((float)lookat.x, (float)lookat.y, (float)lookat.z), (uint)TPFlags.ViaLocation); |