Exemplo n.º 1
0
        public virtual void CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt,
                                        IPEndPoint newRegionExternalEndPoint,
                                        string capsURL, UUID avatarID, UUID sessionID, int regionSizeX, int regionSizeY)
        {
            if (DebugLevel > 0)
            {
                m_log.DebugFormat("{0} CrossRegion. handle={1}, avatarID={2}, regionSize={3},{4}>",
                                  LogHeader, handle, avatarID, regionSizeX, regionSizeY);
            }

            osUTF8 sb = StartEvent("CrossedRegion");

            LLSDxmlEncode2.AddArrayAndMap("AgentData", sb);
            LLSDxmlEncode2.AddElem("AgentID", avatarID, sb);
            LLSDxmlEncode2.AddElem("SessionID", sessionID, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            LLSDxmlEncode2.AddArrayAndMap("Info", sb);
            LLSDxmlEncode2.AddElem("LookAt", lookAt, sb);
            LLSDxmlEncode2.AddElem("Position", pos, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            LLSDxmlEncode2.AddArrayAndMap("RegionData", sb);
            LLSDxmlEncode2.AddElem("RegionHandle", handle, sb);
            LLSDxmlEncode2.AddElem("SeedCapability", capsURL, sb);
            LLSDxmlEncode2.AddElem("SimIP", newRegionExternalEndPoint.Address.GetAddressBytes(), sb);
            LLSDxmlEncode2.AddElem("SimPort", newRegionExternalEndPoint.Port, sb);
            LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb);
            LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            Enqueue(EndEventToBytes(sb), avatarID);
        }
        public void SendBulkUpdateInventoryItem(InventoryItemBase item, UUID avatarID, UUID?transationID = null)
        {
            const uint FULL_MASK_PERMISSIONS = (uint)0x7ffffff;

            osUTF8 sb = StartEvent("BulkUpdateInventory");

            LLSDxmlEncode2.AddArray("AgentData", sb);
            LLSDxmlEncode2.AddMap(sb);
            LLSDxmlEncode2.AddElem("AgentID", avatarID, sb);
            LLSDxmlEncode2.AddElem("TransactionID", transationID ?? UUID.Random(), sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            LLSDxmlEncode2.AddRawElem("<key>FolderData</key><array><map><key>FolderID</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>Name</key><string></string><key>ParentID</key><uuid>00000000-0000-0000-0000-000000000000</uuid ><key>Type</key ><integer>-1</integer></map ></array>", sb);

            osUTF8 osName = new osUTF8(Util.StringToBytesNoTerm(item.Name, 255));
            osUTF8 osDesc = new osUTF8(Util.StringToBytesNoTerm(item.Description, 255));

            LLSDxmlEncode2.AddArray("ItemData", sb);
            LLSDxmlEncode2.AddMap(sb);
            LLSDxmlEncode2.AddElem("ItemID", item.ID, sb);
            LLSDxmlEncode2.AddElem("AssetID", item.AssetID, sb);
            LLSDxmlEncode2.AddElem("CreatorID", item.CreatorIdAsUuid, sb);
            LLSDxmlEncode2.AddElem("BaseMask", item.BasePermissions, sb);
            LLSDxmlEncode2.AddElem("CreationDate", item.CreationDate, sb);
            LLSDxmlEncode2.AddElem("Description", osDesc, sb);
            LLSDxmlEncode2.AddElem("EveryoneMask", item.EveryOnePermissions, sb);
            LLSDxmlEncode2.AddElem("FolderID", item.Folder, sb);
            LLSDxmlEncode2.AddElem("InvType", (sbyte)item.InvType, sb);
            LLSDxmlEncode2.AddElem("Name", osName, sb);
            LLSDxmlEncode2.AddElem("NextOwnerMask", item.NextPermissions, sb);
            LLSDxmlEncode2.AddElem("GroupID", item.GroupID, sb);
            LLSDxmlEncode2.AddElem("GroupMask", item.GroupPermissions, sb);
            LLSDxmlEncode2.AddElem("GroupOwned", item.GroupOwned, sb);
            LLSDxmlEncode2.AddElem("OwnerID", item.Owner, sb);
            LLSDxmlEncode2.AddElem("OwnerMask", item.CurrentPermissions, sb);
            LLSDxmlEncode2.AddElem("SalePrice", item.SalePrice, sb);
            LLSDxmlEncode2.AddElem("SaleType", item.SaleType, sb);
            LLSDxmlEncode2.AddElem("Type", (sbyte)item.AssetType, sb);
            LLSDxmlEncode2.AddElem("CallbackID", (uint)0, sb);
            LLSDxmlEncode2.AddElem("Flags", item.Flags & 0x2000ff, sb);

            uint iCRC =
                Helpers.InventoryCRC(1000, 0, (sbyte)item.InvType,
                                     (sbyte)item.AssetType, item.AssetID,
                                     item.GroupID, 100,
                                     item.Owner, item.CreatorIdAsUuid,
                                     item.ID, item.Folder,
                                     FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS,
                                     FULL_MASK_PERMISSIONS);

            LLSDxmlEncode2.AddElem("CRC", iCRC, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);
            Enqueue(EndEventToBytes(sb), avatarID);
        }
Exemplo n.º 3
0
        public void ScriptRunningEvent(UUID objectID, UUID itemID, bool running, UUID avatarID)
        {
            osUTF8 sb = StartEvent("ScriptRunningReply");

            LLSDxmlEncode2.AddArrayAndMap("Script", sb);
            LLSDxmlEncode2.AddElem("ObjectID", objectID, sb);
            LLSDxmlEncode2.AddElem("ItemID", itemID, sb);
            LLSDxmlEncode2.AddElem("Running", running, sb);
            LLSDxmlEncode2.AddElem("Mono", true, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            Enqueue(EndEventToBytes(sb), avatarID);
        }
Exemplo n.º 4
0
        public void partPhysicsProperties(uint localID, byte physhapetype,
                                          float density, float friction, float bounce, float gravmod, UUID avatarID)
        {
            osUTF8 sb = StartEvent("ObjectPhysicsProperties");

            LLSDxmlEncode2.AddArrayAndMap("ObjectData", sb);
            LLSDxmlEncode2.AddElem("LocalID", (int)localID, sb);
            LLSDxmlEncode2.AddElem("Density", density, sb);
            LLSDxmlEncode2.AddElem("Friction", friction, sb);
            LLSDxmlEncode2.AddElem("GravityMultiplier", gravmod, sb);
            LLSDxmlEncode2.AddElem("Restitution", bounce, sb);
            LLSDxmlEncode2.AddElem("PhysicsShapeType", (int)physhapetype, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            Enqueue(EndEventToBytes(sb), avatarID);
        }
Exemplo n.º 5
0
        public void GroupMembershipData(UUID AgentID, GroupMembershipData[] data)
        {
            osUTF8 sb = StartEvent("AgentGroupDataUpdate");

            LLSDxmlEncode2.AddArrayAndMap("AgentData", sb);
            LLSDxmlEncode2.AddElem("AgentID", AgentID, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            if (data.Length == 0)
            {
                LLSDxmlEncode2.AddEmptyArray("GroupData", sb);
                LLSDxmlEncode2.AddEmptyArray("NewGroupData", sb);
            }
            else
            {
                List <bool> lstInProfiles = new List <bool>(data.Length);
                LLSDxmlEncode2.AddArray("GroupData", sb);
                foreach (GroupMembershipData m in data)
                {
                    LLSDxmlEncode2.AddMap(sb);
                    LLSDxmlEncode2.AddElem("GroupID", m.GroupID, sb);
                    LLSDxmlEncode2.AddElem("GroupPowers", m.GroupPowers, sb);
                    LLSDxmlEncode2.AddElem("AcceptNotices", m.AcceptNotices, sb);
                    LLSDxmlEncode2.AddElem("GroupInsigniaID", m.GroupPicture, sb);
                    LLSDxmlEncode2.AddElem("Contribution", m.Contribution, sb);
                    LLSDxmlEncode2.AddElem("GroupName", m.GroupName, sb);
                    LLSDxmlEncode2.AddEndMap(sb);
                    lstInProfiles.Add(m.ListInProfile);
                }
                LLSDxmlEncode2.AddEndArray(sb);

                LLSDxmlEncode2.AddArray("NewGroupData", sb);
                foreach (bool b in lstInProfiles)
                {
                    LLSDxmlEncode2.AddMap(sb);
                    LLSDxmlEncode2.AddElem("ListInProfile", b, sb);
                    LLSDxmlEncode2.AddEndMap(sb);
                }
                LLSDxmlEncode2.AddEndArray(sb);
            }

            Enqueue(EndEventToBytes(sb), AgentID);
        }
Exemplo n.º 6
0
        public virtual void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY)
        {
            if (DebugLevel > 0)
            {
                m_log.DebugFormat("{0} EnableSimulator. handle={1}, endPoint={2}, avatarID={3}",
                                  LogHeader, handle, endPoint, avatarID, regionSizeX, regionSizeY);
            }

            osUTF8 sb = StartEvent("EnableSimulator");

            LLSDxmlEncode2.AddArrayAndMap("SimulatorInfo", sb);
            LLSDxmlEncode2.AddElem("Handle", handle, sb);
            LLSDxmlEncode2.AddElem("IP", endPoint.Address.GetAddressBytes(), sb);
            LLSDxmlEncode2.AddElem("Port", endPoint.Port, sb);
            LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb);
            LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            Enqueue(EndEventToBytes(sb), avatarID);
        }
Exemplo n.º 7
0
        public virtual void TeleportFinishEvent(ulong regionHandle, byte simAccess,
                                                IPEndPoint regionExternalEndPoint,
                                                uint locationID, uint flags, string capsURL,
                                                UUID avatarID, int regionSizeX, int regionSizeY)
        {
            if (DebugLevel > 0)
            {
                m_log.DebugFormat("{0} TeleportFinishEvent. handle={1}, endPoint={2}, avatarID={3}",
                                  LogHeader, regionHandle, regionExternalEndPoint, avatarID, regionSizeX, 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;
            }

            osUTF8 sb = StartEvent("TeleportFinish");

            LLSDxmlEncode2.AddArrayAndMap("Info", sb);
            LLSDxmlEncode2.AddElem("AgentID", avatarID, sb);
            LLSDxmlEncode2.AddElem("LocationID", (uint)4, sb);     // TODO what is this?
            LLSDxmlEncode2.AddElem("SimIP", regionExternalEndPoint.Address.GetAddressBytes(), sb);
            LLSDxmlEncode2.AddElem("SimPort", regionExternalEndPoint.Port, sb);
            LLSDxmlEncode2.AddElem("RegionHandle", regionHandle, sb);
            LLSDxmlEncode2.AddElem("SeedCapability", capsURL, sb);
            LLSDxmlEncode2.AddElem("SimAccess", (int)simAccess, sb);
            LLSDxmlEncode2.AddElem("TeleportFlags", flags, sb);
            LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb);
            LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb);
            LLSDxmlEncode2.AddEndMapAndArray(sb);

            Enqueue(EndEventToBytes(sb), avatarID);
        }