diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 11915a4318..d092ebe7e5 100755 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -1427,7 +1427,7 @@ namespace OpenSim.Framework void GroupMembershipAddReplace(UUID GroupID,ulong GroupPowers); void SendAvatarNotesReply(UUID targetID, string text); void SendAvatarPicksReply(UUID targetID, Dictionary picks); - void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled); + void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled); void SendAvatarClassifiedReply(UUID targetID, Dictionary classifieds); diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 454347fa55..c2157a74cd 100755 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -4323,7 +4323,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(muteListUpdate, ThrottleOutPacketType.Task); } - public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled) + public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled) { PickInfoReplyPacket pickInfoReply = (PickInfoReplyPacket)PacketPool.Instance.GetPacket(PacketType.PickInfoReply); @@ -4335,13 +4335,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP CreatorID = creatorID, TopPick = topPick, ParcelID = parcelID, - Name = Utils.StringToBytes(name), - Desc = Utils.StringToBytes(desc), + Name = Utils.StringToBytes(name, 128), + Desc = Utils.StringToBytes(desc, 1022), SnapshotID = snapshotID, - User = Utils.StringToBytes(user), - OriginalName = Utils.StringToBytes(originalName), + User = Utils.StringToBytes(user, 128), // 64? + OriginalName = Utils.StringToBytes(originalName, 128), SimName = Utils.StringToBytes(simName), - PosGlobal = new Vector3d(posGlobal), + PosGlobal = posGlobal, SortOrder = sortOrder, Enabled = enabled }; @@ -12094,13 +12094,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP private static void HandlePickInfoUpdate(LLClientView c, Packet Pack) { + if(c.OnPickInfoUpdate is null) + return; PickInfoUpdatePacket pickInfoUpdate = (PickInfoUpdatePacket)Pack; + string name = Utils.BytesToString(pickInfoUpdate.Data.Name); + if(name.Length > 128) + name = name[..128]; + string desc = Utils.BytesToString(pickInfoUpdate.Data.Desc); + if(desc.Length > 1022) + desc = desc[..1022]; c.OnPickInfoUpdate?.Invoke(c, pickInfoUpdate.Data.PickID, pickInfoUpdate.Data.CreatorID, pickInfoUpdate.Data.TopPick, - Utils.BytesToString(pickInfoUpdate.Data.Name), - Utils.BytesToString(pickInfoUpdate.Data.Desc), + name, + desc, pickInfoUpdate.Data.SnapshotID, pickInfoUpdate.Data.SortOrder, pickInfoUpdate.Data.Enabled); diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index 92b10f709c..2d3aff66c9 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs @@ -964,7 +964,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles if(uce.picks is not null && uce.picks.ContainsKey(pick.PickId)) { pick = uce.picks[pick.PickId]; - if(Vector3.TryParse(pick.GlobalPos, out Vector3 gPos)) + if(Vector3d.TryParse(pick.GlobalPos, out Vector3d gPos)) remoteClient.SendPickInfoReply(pick.PickId,pick.CreatorId,pick.TopPick,pick.ParcelId,pick.Name, pick.Desc,pick.SnapshotId,pick.ParcelName,pick.OriginalName,pick.SimName, gPos,pick.SortOrder,pick.Enabled); @@ -988,7 +988,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles if(foreign) cacheForeignImage(targetID, pick.SnapshotId); - if(!Vector3.TryParse(pick.GlobalPos, out Vector3 globalPos)) + if(!Vector3d.TryParse(pick.GlobalPos, out Vector3d globalPos)) return; if (m_thisGridInfo.IsLocalGrid(pick.Gatekeeper, true) == 0) @@ -1090,7 +1090,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles Vector3 avaPos = p.AbsolutePosition; // Getting the global position for the Avatar - Vector3 posGlobal = new(remoteClient.Scene.RegionInfo.WorldLocX + avaPos.X, + Vector3d posGlobal = new(remoteClient.Scene.RegionInfo.WorldLocX + avaPos.X, remoteClient.Scene.RegionInfo.WorldLocY + avaPos.Y, avaPos.Z); diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 8db57eb7d3..6de7376fca 100755 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -1665,7 +1665,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } - public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled) + public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled) { } diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index b83e369652..de93c2383b 100755 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -1330,7 +1330,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC { } - public void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled) + public void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled) { } #endregion