From 5e4d6cab00cb29cd088ab7b62ab13aff103b64cb Mon Sep 17 00:00:00 2001 From: onefang Date: Sun, 19 May 2019 21:24:15 +1000 Subject: Dump OpenSim 0.9.0.1 into it's own branch. --- .../Linden/Caps/EventQueue/EventQueueHelper.cs | 110 +++++++++++++-------- 1 file changed, 71 insertions(+), 39 deletions(-) (limited to 'OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs') diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs index 384af74..461f776 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs @@ -32,6 +32,8 @@ using OpenMetaverse.Packets; using OpenMetaverse.StructuredData; using OpenMetaverse.Messages.Linden; +using OpenSim.Framework; + namespace OpenSim.Region.ClientStack.Linden { public class EventQueueHelper @@ -76,9 +78,9 @@ namespace OpenSim.Region.ClientStack.Linden llsdSimInfo.Add("Handle", new OSDBinary(ulongToByteArray(handle))); llsdSimInfo.Add("IP", new OSDBinary(endPoint.Address.GetAddressBytes())); - llsdSimInfo.Add("Port", new OSDInteger(endPoint.Port)); - llsdSimInfo.Add("RegionSizeX", OSD.FromUInteger((uint) regionSizeX)); - llsdSimInfo.Add("RegionSizeY", OSD.FromUInteger((uint) regionSizeY)); + llsdSimInfo.Add("Port", OSD.FromInteger(endPoint.Port)); + llsdSimInfo.Add("RegionSizeX", OSD.FromUInteger((uint)regionSizeX)); + llsdSimInfo.Add("RegionSizeY", OSD.FromUInteger((uint)regionSizeY)); OSDArray arr = new OSDArray(1); arr.Add(llsdSimInfo); @@ -88,7 +90,7 @@ namespace OpenSim.Region.ClientStack.Linden return BuildEvent("EnableSimulator", llsdBody); } - +/* public static OSD DisableSimulator(ulong handle) { //OSDMap llsdSimInfo = new OSDMap(1); @@ -103,7 +105,7 @@ namespace OpenSim.Region.ClientStack.Linden return BuildEvent("DisableSimulator", llsdBody); } - +*/ public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL, UUID agentID, UUID sessionID, @@ -157,6 +159,12 @@ namespace OpenSim.Region.ClientStack.Linden uint locationID, uint flags, string capsURL, UUID agentID, int regionSizeX, int regionSizeY) { + // not sure why flags get overwritten here + if ((flags & (uint)TeleportFlags.IsFlying) != 0) + flags = (uint)TeleportFlags.ViaLocation | (uint)TeleportFlags.IsFlying; + else + flags = (uint)TeleportFlags.ViaLocation; + OSDMap info = new OSDMap(); info.Add("AgentID", OSD.FromUUID(agentID)); info.Add("LocationID", OSD.FromInteger(4)); // TODO what is this? @@ -165,7 +173,8 @@ namespace OpenSim.Region.ClientStack.Linden info.Add("SimAccess", OSD.FromInteger(simAccess)); info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); - info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation +// info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation + info.Add("TeleportFlags", OSD.FromUInteger(flags)); info.Add("RegionSizeX", OSD.FromUInteger((uint)regionSizeX)); info.Add("RegionSizeY", OSD.FromUInteger((uint)regionSizeY)); @@ -185,13 +194,13 @@ namespace OpenSim.Region.ClientStack.Linden script.Add("ItemID", OSD.FromUUID(itemID)); script.Add("Running", OSD.FromBoolean(running)); script.Add("Mono", OSD.FromBoolean(mono)); - + OSDArray scriptArr = new OSDArray(); scriptArr.Add(script); - + OSDMap body = new OSDMap(); body.Add("Script", scriptArr); - + return BuildEvent("ScriptRunningReply", body); } @@ -204,8 +213,8 @@ namespace OpenSim.Region.ClientStack.Linden {"sim-ip-and-port", new OSDString(simIpAndPort)}, {"seed-capability", new OSDString(seedcap)}, {"region-handle", OSD.FromULong(regionHandle)}, - {"region-size-x", OSD.FromInteger(regionSizeX)}, - {"region-size-y", OSD.FromInteger(regionSizeY)} + {"region-size-x", OSD.FromUInteger((uint)regionSizeX)}, + {"region-size-y", OSD.FromUInteger((uint)regionSizeY)} }; return BuildEvent("EstablishAgentCommunication", body); @@ -234,7 +243,7 @@ namespace OpenSim.Region.ClientStack.Linden { OSDMap messageParams = new OSDMap(15); messageParams.Add("type", new OSDInteger((int)dialog)); - + OSDArray positionArray = new OSDArray(3); positionArray.Add(OSD.FromReal(position.X)); positionArray.Add(OSD.FromReal(position.Y)); @@ -299,20 +308,29 @@ namespace OpenSim.Region.ClientStack.Linden } public static OSD ChatterBoxSessionAgentListUpdates(UUID sessionID, - UUID agentID, bool canVoiceChat, bool isModerator, bool textMute) + UUID agentID, bool canVoiceChat, bool isModerator, bool textMute, bool isEnterorLeave) { OSDMap body = new OSDMap(); OSDMap agentUpdates = new OSDMap(); OSDMap infoDetail = new OSDMap(); OSDMap mutes = new OSDMap(); + // this should be a list of agents and parameters + // foreach agent mutes.Add("text", OSD.FromBoolean(textMute)); infoDetail.Add("can_voice_chat", OSD.FromBoolean(canVoiceChat)); infoDetail.Add("is_moderator", OSD.FromBoolean(isModerator)); infoDetail.Add("mutes", mutes); OSDMap info = new OSDMap(); info.Add("info", infoDetail); + if(isEnterorLeave) + info.Add("transition",OSD.FromString("ENTER")); + else + info.Add("transition",OSD.FromString("LEAVE")); agentUpdates.Add(agentID.ToString(), info); + + // foreach end + body.Add("agent_updates", agentUpdates); body.Add("session_id", OSD.FromUUID(sessionID)); body.Add("updates", new OSD()); @@ -324,40 +342,54 @@ namespace OpenSim.Region.ClientStack.Linden return chatterBoxSessionAgentListUpdates; } - public static OSD GroupMembership(AgentGroupDataUpdatePacket groupUpdatePacket) + public static OSD ChatterBoxForceClose(UUID sessionID, string reason) { - OSDMap groupUpdate = new OSDMap(); - groupUpdate.Add("message", OSD.FromString("AgentGroupDataUpdate")); + OSDMap body = new OSDMap(2); + body.Add("session_id", new OSDUUID(sessionID)); + body.Add("reason", new OSDString(reason)); - OSDMap body = new OSDMap(); - OSDArray agentData = new OSDArray(); - OSDMap agentDataMap = new OSDMap(); - agentDataMap.Add("AgentID", OSD.FromUUID(groupUpdatePacket.AgentData.AgentID)); - agentData.Add(agentDataMap); - body.Add("AgentData", agentData); + OSDMap chatterBoxForceClose = new OSDMap(2); + chatterBoxForceClose.Add("message", new OSDString("ForceCloseChatterBoxSession")); + chatterBoxForceClose.Add("body", body); + return chatterBoxForceClose; + } - OSDArray groupData = new OSDArray(); + public static OSD GroupMembershipData(UUID receiverAgent, GroupMembershipData[] data) + { + OSDArray AgentData = new OSDArray(1); + OSDMap AgentDataMap = new OSDMap(1); + AgentDataMap.Add("AgentID", OSD.FromUUID(receiverAgent)); + AgentData.Add(AgentDataMap); - foreach (AgentGroupDataUpdatePacket.GroupDataBlock groupDataBlock in groupUpdatePacket.GroupData) + OSDArray GroupData = new OSDArray(data.Length); + OSDArray NewGroupData = new OSDArray(data.Length); + + foreach (GroupMembershipData membership in data) { - OSDMap groupDataMap = new OSDMap(); - groupDataMap.Add("ListInProfile", OSD.FromBoolean(false)); - groupDataMap.Add("GroupID", OSD.FromUUID(groupDataBlock.GroupID)); - groupDataMap.Add("GroupInsigniaID", OSD.FromUUID(groupDataBlock.GroupInsigniaID)); - groupDataMap.Add("Contribution", OSD.FromInteger(groupDataBlock.Contribution)); - groupDataMap.Add("GroupPowers", OSD.FromBinary(ulongToByteArray(groupDataBlock.GroupPowers))); - groupDataMap.Add("GroupName", OSD.FromString(Utils.BytesToString(groupDataBlock.GroupName))); - groupDataMap.Add("AcceptNotices", OSD.FromBoolean(groupDataBlock.AcceptNotices)); + OSDMap GroupDataMap = new OSDMap(6); + OSDMap NewGroupDataMap = new OSDMap(1); + + GroupDataMap.Add("GroupID", OSD.FromUUID(membership.GroupID)); + GroupDataMap.Add("GroupPowers", OSD.FromULong(membership.GroupPowers)); + GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(membership.AcceptNotices)); + GroupDataMap.Add("GroupInsigniaID", OSD.FromUUID(membership.GroupPicture)); + GroupDataMap.Add("Contribution", OSD.FromInteger(membership.Contribution)); + GroupDataMap.Add("GroupName", OSD.FromString(membership.GroupName)); + NewGroupDataMap.Add("ListInProfile", OSD.FromBoolean(membership.ListInProfile)); + + GroupData.Add(GroupDataMap); + NewGroupData.Add(NewGroupDataMap); + } - groupData.Add(groupDataMap); + OSDMap llDataStruct = new OSDMap(3); + llDataStruct.Add("AgentData", AgentData); + llDataStruct.Add("GroupData", GroupData); + llDataStruct.Add("NewGroupData", NewGroupData); - } - body.Add("GroupData", groupData); - groupUpdate.Add("body", body); + return BuildEvent("AgentGroupDataUpdate", llDataStruct); - return groupUpdate; } - + public static OSD PlacesQuery(PlacesReplyPacket PlacesReply) { OSDMap placesReply = new OSDMap(); @@ -391,7 +423,7 @@ namespace OpenSim.Region.ClientStack.Linden QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID)); QueryDataMap.Add("ProductSku", OSD.FromInteger(0)); QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price)); - + QueryData.Add(QueryDataMap); } body.Add("QueryData", QueryData); -- cgit v1.1