public void SendTeleportLureRequest(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     LSLKey lureID,
     int teleportFlags)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             viewerCircuit.SendMessage(new TeleportLureRequest
             {
                 AgentID       = viewerCircuit.AgentID,
                 SessionID     = viewerCircuit.SessionID,
                 LureID        = lureID,
                 TeleportFlags = (TeleportFlags)teleportFlags
             });
         }
     }
 }
Exemplo n.º 2
0
        public LSLKey GetFolderForType(
            ScriptInstance instance,
            ViewerAgentAccessor agent,
            int assetType)
        {
            UUID folderID = UUID.Zero;

            lock (instance)
            {
                ViewerConnection vc;
                ViewerCircuit    viewerCircuit;
                IAgent           actagent;
                InventoryFolder  folder;
                if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
                    vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit) &&
                    instance.Part.ObjectGroup.Scene.RootAgents.TryGetValue(agent.AgentID, out actagent) &&
                    actagent.InventoryService.Folder.TryGetValue(agent.AgentID, (AssetType)assetType, out folder))
                {
                    folderID = folder.ID;
                }
            }
            return(folderID);
        }
Exemplo n.º 3
0
 public void SendRevokePermissions(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     LSLKey objectID,
     int permissions)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             viewerCircuit.SendMessage(new RevokePermissions
             {
                 AgentID           = agent.AgentID,
                 SessionID         = viewerCircuit.SessionID,
                 ObjectID          = objectID.AsUUID,
                 ObjectPermissions = (ScriptPermissions)permissions
             });
         }
     }
 }
Exemplo n.º 4
0
 public void SendScriptReset(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     LSLKey objectID,
     LSLKey itemID)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             viewerCircuit.SendMessage(new ScriptReset
             {
                 AgentID   = agent.AgentID,
                 SessionID = viewerCircuit.SessionID,
                 ObjectID  = objectID,
                 ItemID    = itemID
             });
         }
     }
 }
Exemplo n.º 5
0
        public int GetInventoryItemNextOwnerPerm(
            ScriptInstance instance,
            ViewerAgentAccessor agent,
            LSLKey itemID)
        {
            int perm = 0;

            lock (instance)
            {
                ViewerConnection vc;
                ViewerCircuit    viewerCircuit;
                IAgent           actagent;
                InventoryItem    item;
                if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
                    vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit) &&
                    instance.Part.ObjectGroup.Scene.RootAgents.TryGetValue(agent.AgentID, out actagent) &&
                    actagent.InventoryService.Item.TryGetValue(agent.AgentID, itemID.AsUUID, out item))
                {
                    perm = (int)item.Permissions.NextOwner;
                }
            }
            return(perm);
        }
        public void SendParcelReturnObjects(
            ScriptInstance instance,
            ViewerAgentAccessor agent,
            int localID,
            int returnType,
            AnArray objectIds,
            AnArray ownerIds)
        {
            lock (instance)
            {
                ViewerConnection vc;
                ViewerCircuit    viewerCircuit;
                if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
                    vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
                {
                    var msg = new ParcelReturnObjects
                    {
                        AgentID    = agent.AgentID,
                        SessionID  = viewerCircuit.SessionID,
                        LocalID    = localID,
                        ReturnType = (ObjectReturnType)returnType
                    };

                    foreach (IValue iv in objectIds)
                    {
                        msg.TaskIDs.Add(iv.AsUUID);
                    }

                    foreach (IValue iv in ownerIds)
                    {
                        msg.OwnerIDs.Add(iv.AsUUID);
                    }

                    viewerCircuit.SendMessage(msg);
                }
            }
        }
 public void SendObjectDeGrab(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     int objectLocalID,
     AnArray objectData)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit) &&
             objectData.Count % 6 == 0)
         {
             var msg = new ObjectDeGrab
             {
                 AgentID       = viewerCircuit.AgentID,
                 SessionID     = viewerCircuit.SessionID,
                 ObjectLocalID = (uint)objectLocalID
             };
             for (int i = 0; i < objectData.Count; i += 6)
             {
                 msg.ObjectData.Add(new ObjectDeGrab.Data
                 {
                     UVCoord   = objectData[i + 0].AsVector3,
                     STCoord   = objectData[i + 1].AsVector3,
                     FaceIndex = objectData[i + 2].AsInt,
                     Position  = objectData[i + 3].AsVector3,
                     Normal    = objectData[i + 4].AsVector3,
                     Binormal  = objectData[i + 5].AsVector3
                 });
             }
             viewerCircuit.SendMessage(msg);
         }
     }
 }
Exemplo n.º 8
0
 private void SendEstateExperienceAccess(ScriptInstance instance, ViewerAgentAccessor agent, LSLKey transactionid, LSLKey invoice, EstateExperienceDeltaFlags flags, LSLKey experience)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             var msg = new EstateOwnerMessage
             {
                 AgentID       = agent.AgentID,
                 SessionID     = viewerCircuit.SessionID,
                 Method        = "estateexperiencedelta",
                 TransactionID = transactionid,
                 Invoice       = invoice
             };
             msg.ParamList.Add("0".ToUTF8Bytes());
             msg.ParamList.Add(((uint)flags).ToString().ToUTF8Bytes());
             msg.ParamList.Add(experience.AsUUID.ToString().ToUTF8Bytes());
             viewerCircuit.SendMessage(msg);
         }
     }
 }
        public int AbortTextureViaCircuit(
            ScriptInstance instance,
            ViewerAgentAccessor agent,
            LSLKey textureID,
            int type)
        {
            lock (instance)
            {
                ViewerConnection vc;
                ViewerCircuit    viewerCircuit;
                if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
                    vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit) &&
                    m_ActiveImageTransfers.ContainsKey(textureID.AsUUID))
                {
                    m_ActiveImageTransfers.Remove(textureID.AsUUID);
                    var reqImage = new RequestImage
                    {
                        AgentID   = viewerCircuit.AgentID,
                        SessionID = viewerCircuit.SessionID,
                    };
                    reqImage.RequestImageList.Add(new RequestImage.RequestImageEntry
                    {
                        DiscardLevel     = -1,
                        ImageID          = textureID.AsUUID,
                        Type             = (RequestImage.ImageType)type,
                        Packet           = 0,
                        DownloadPriority = 0
                    });

                    viewerCircuit.SendMessage(reqImage);

                    return(1);
                }
                return(0);
            }
        }
Exemplo n.º 10
0
        private void TranslateEstateOwnerMessageSetExperience(EstateOwnerMessage m, ViewerConnection vc, ViewerAgentAccessor agent)
        {
            if (m.ParamList.Count < 5)
            {
                return;
            }
            var ev = new EstateOwnerMessageSetExperienceReceivedEvent
            {
                Agent         = agent,
                TransactionID = m.TransactionID,
                Invoice       = m.Invoice,
            };

            int blockedCount;
            int trustedCount;
            int allowedCount;

            if (!int.TryParse(m.ParamList[0].FromUTF8Bytes(), out ev.EstateID) ||
                !int.TryParse(m.ParamList[2].FromUTF8Bytes(), out blockedCount) ||
                !int.TryParse(m.ParamList[3].FromUTF8Bytes(), out trustedCount) ||
                !int.TryParse(m.ParamList[4].FromUTF8Bytes(), out allowedCount))
            {
                return;
            }
            if (m.ParamList.Count < 5 + blockedCount + trustedCount + allowedCount)
            {
                return;
            }

            int offset = 5;

            while (blockedCount-- > 0)
            {
                ev.Blocked.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            while (trustedCount-- > 0)
            {
                ev.Trusted.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            while (allowedCount-- > 0)
            {
                ev.Allowed.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }

            vc.PostEvent(ev);
        }
Exemplo n.º 11
0
        private void TranslateEstateOwnerMessageEstateUpdateInfo(EstateOwnerMessage m, ViewerConnection vc, ViewerAgentAccessor agent)
        {
            if (m.ParamList.Count < 10)
            {
                return;
            }

            vc.PostEvent(new EstateOwnerMessageEstateUpdateInfoReceivedEvent
            {
                Agent             = agent,
                TransactionID     = m.TransactionID,
                Invoice           = m.Invoice,
                EstateName        = m.ParamList[0].FromUTF8Bytes(),
                EstateOwner       = UUID.Parse(m.ParamList[1].FromUTF8Bytes()),
                EstateID          = int.Parse(m.ParamList[2].FromUTF8Bytes()),
                Flags             = (int)uint.Parse(m.ParamList[3].FromUTF8Bytes()),
                SunPosition       = int.Parse(m.ParamList[4].FromUTF8Bytes()) / 1024.0 - 6,
                ParentEstateID    = int.Parse(m.ParamList[5].FromUTF8Bytes()),
                CovenantID        = UUID.Parse(m.ParamList[6].FromUTF8Bytes()),
                CovenantTimestamp = (long)ulong.Parse(m.ParamList[7].FromUTF8Bytes()),
                SendToAgentOnly   = int.Parse(m.ParamList[8].FromUTF8Bytes()),
                AbuseEmail        = m.ParamList[9].FromUTF8Bytes()
            });
        }
Exemplo n.º 12
0
        private void TranslateEstateOwnerMessageSetAccess(EstateOwnerMessage m, ViewerConnection vc, ViewerAgentAccessor agent)
        {
            if (m.ParamList.Count < 6)
            {
                return;
            }
            var res = new EstateOwnerMessageSetAccessReceivedEvent
            {
                Agent         = agent,
                TransactionID = m.TransactionID,
                Invoice       = m.Invoice
            };

            int offset        = 6;
            int allowedAgents = int.Parse(m.ParamList[2].FromUTF8Bytes());
            int allowedGroups = int.Parse(m.ParamList[3].FromUTF8Bytes());
            int bannedAgents  = int.Parse(m.ParamList[4].FromUTF8Bytes());
            int managers      = int.Parse(m.ParamList[5].FromUTF8Bytes());

            while (allowedAgents-- > 0)
            {
                res.AllowedAgents.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            while (allowedGroups-- > 0)
            {
                res.AllowedGroups.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            while (bannedAgents-- > 0)
            {
                res.BannedAgents.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            while (managers-- > 0)
            {
                res.Managers.Add(new LSLKey(new UUID(m.ParamList[offset++], 0)));
            }
            vc.PostEvent(res);
        }
Exemplo n.º 13
0
        private void HandleEstateOwnerMessage(EstateOwnerMessage m, ViewerConnection vc, ViewerAgentAccessor agent)
        {
            try
            {
                switch (m.Method)
                {
                case "setaccess":
                    TranslateEstateOwnerMessageSetAccess(m, vc, agent);
                    break;

                case "estateupdateinfo":
                    TranslateEstateOwnerMessageEstateUpdateInfo(m, vc, agent);
                    break;

                case "setexperience":
                    TranslateEstateOwnerMessageSetExperience(m, vc, agent);
                    break;
                }
            }
            catch (Exception e)
            {
                m_Log.Error("EstateOwnerMessage decode failed", e);
            }
        }
Exemplo n.º 14
0
 public void SendObjectExtraParams(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     VcExtraParamsDataList objectData)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             var m = new ObjectExtraParams
             {
                 AgentID   = agent.AgentID,
                 SessionID = viewerCircuit.SessionID,
             };
             foreach (VcExtraParamsData d in objectData)
             {
                 if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_FLEXI_EP) != 0)
                 {
                     byte[] data = d.ExtraParams.GetFlexibleData();
                     m.ObjectData.Add(new ObjectExtraParams.Data
                     {
                         ObjectLocalID = (uint)d.LocalID,
                         ParamType     = 0x0010,
                         ParamInUse    = data != null,
                         ParamSize     = data != null ? (uint)data.Length : 0,
                         ParamData     = data ?? new byte[0]
                     });
                 }
                 if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_LIGHT_EP) != 0)
                 {
                     byte[] data = d.ExtraParams.GetLightData();
                     m.ObjectData.Add(new ObjectExtraParams.Data
                     {
                         ObjectLocalID = (uint)d.LocalID,
                         ParamType     = 0x0020,
                         ParamInUse    = data != null,
                         ParamSize     = data != null ? (uint)data.Length : 0,
                         ParamData     = data ?? new byte[0]
                     });
                 }
                 if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_SCULPT_EP) != 0)
                 {
                     byte[] data = d.ExtraParams.GetSculptData();
                     m.ObjectData.Add(new ObjectExtraParams.Data
                     {
                         ObjectLocalID = (uint)d.LocalID,
                         ParamType     = 0x0030,
                         ParamInUse    = data != null,
                         ParamSize     = data != null ? (uint)data.Length : 0,
                         ParamData     = data ?? new byte[0]
                     });
                 }
                 if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_PROJECTION_EP) != 0)
                 {
                     byte[] data = d.ExtraParams.GetProjectData();
                     m.ObjectData.Add(new ObjectExtraParams.Data
                     {
                         ObjectLocalID = (uint)d.LocalID,
                         ParamType     = 0x0040,
                         ParamInUse    = data != null,
                         ParamSize     = data != null ? (uint)data.Length : 0,
                         ParamData     = data ?? new byte[0]
                     });
                 }
                 if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_EXTENDEDMESH_EP) != 0)
                 {
                     byte[] data = d.ExtraParams.GetEMeshData();
                     m.ObjectData.Add(new ObjectExtraParams.Data
                     {
                         ObjectLocalID = (uint)d.LocalID,
                         ParamType     = 0x0070,
                         ParamInUse    = data != null,
                         ParamSize     = data != null ? (uint)data.Length : 0,
                         ParamData     = data ?? new byte[0]
                     });
                 }
             }
             viewerCircuit.SendMessage(m);
         }
     }
 }
Exemplo n.º 15
0
 public AgentInventoryApi.AgentInventory GetAgentInventory(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     LSLKey rootFolderID,
     HashtableApi.Hashtable seedResponse) =>
 GetAgentInventory(instance, agent, rootFolderID, seedResponse, VC_AGENT_INVENTORY_FULL_AISV3);
        public ViewerAgentAccessor LoginAgent(
            ScriptInstance instance,
            int circuitCode,
            LSLKey regionId,
            LSLKey agentId,
            LSLKey sessionId,
            LSLKey secureSessionId,
            string viewerChannel,
            string viewerVersion,
            string id0,
            string mac,
            int teleportFlags,
            Vector3 position,
            Vector3 lookAt)
        {
            lock (instance)
            {
                string      externalHostName = m_CapsRedirector.ExternalHostName;
                IPAddress[] addresses        = DnsNameCache.GetHostAddresses(externalHostName);

                string clientIP = string.Empty;

                if (addresses.Length == 0)
                {
                    m_Log.InfoFormat("ExternalHostName \"{0}\" does not resolve", externalHostName);
                    return(new ViewerAgentAccessor());
                }

                foreach (IPAddress addr in addresses)
                {
                    if (addr.AddressFamily == AddressFamily.InterNetwork)
                    {
                        clientIP = addr.ToString();
                    }
                }

                if (string.IsNullOrEmpty(clientIP))
                {
                    m_Log.InfoFormat("ExternalHostName \"{0}\" does not resolve", externalHostName);
                    return(new ViewerAgentAccessor());
                }

                UUID           capsId   = UUID.Random;
                string         capsPath = m_CapsRedirector.ServerURI + "CAPS/" + capsId.ToString() + "0000/";
                SceneInterface scene;
                if (!m_Scenes.TryGetValue(regionId, out scene))
                {
                    return(new ViewerAgentAccessor());
                }
                var clientInfo = new ClientInfo
                {
                    ClientIP      = clientIP,
                    Channel       = viewerChannel,
                    ClientVersion = viewerVersion,
                    ID0           = id0,
                    Mac           = mac
                };
                UserAccount userAccount;
                if (!m_UserAccountService.TryGetValue(agentId, out userAccount))
                {
                    m_Log.InfoFormat("User account {0} does not exist", agentId.ToString());
                    return(new ViewerAgentAccessor());
                }

                var presenceInfo = m_UserSessionService.CreateSession(userAccount.Principal, clientIP, sessionId.AsUUID, secureSessionId.AsUUID);
                var serviceList  = new AgentServiceList
                {
                    m_AgentAssetService,
                    m_AgentInventoryService,
                    m_AgentFriendsService,
                    m_AgentUserAgentService,
                    new StandalonePresenceService(m_UserAccountService, userAccount.Principal, m_UserSessionService, presenceInfo.SessionID, new List <IUserSessionStatusHandler>()),
                    m_GridService
                };
                if (m_AgentProfileService != null)
                {
                    serviceList.Add(m_AgentProfileService);
                }
                if (m_OfflineIMService != null)
                {
                    serviceList.Add(m_OfflineIMService);
                }
                if (m_AgentExperienceService != null)
                {
                    serviceList.Add(m_AgentExperienceService);
                }
                if (m_AgentGroupsService != null)
                {
                    serviceList.Add(m_AgentGroupsService);
                }

                var agent = new ViewerAgent(
                    m_Scenes,
                    agentId,
                    userAccount.Principal.FirstName,
                    userAccount.Principal.LastName,
                    userAccount.Principal.HomeURI,
                    presenceInfo.SessionID,
                    presenceInfo.SecureSessionID,
                    clientInfo,
                    userAccount,
                    serviceList);

                try
                {
                    scene.DetermineInitialAgentLocation(agent, (TeleportFlags)teleportFlags, position, lookAt);
                }
                catch (Exception e)
                {
                    m_Log.InfoFormat("Failed to determine initial location for agent {0}: {1}: {2}", userAccount.Principal.FullName, e.GetType().FullName, e.Message);
                    return(new ViewerAgentAccessor());
                }

                var udpServer = (UDPCircuitsManager)scene.UDPServer;

                IPAddress ipAddr;
                if (!IPAddress.TryParse(clientInfo.ClientIP, out ipAddr))
                {
                    m_Log.InfoFormat("Invalid IP address for agent {0}", userAccount.Principal.FullName);
                    return(new ViewerAgentAccessor());
                }

                ViewerConnection vc = AddAgent(instance, userAccount.Principal.ID);

                var ep             = new IPEndPoint(ipAddr, vc.ClientUDP.LocalPort);
                var regionEndPoint = new IPEndPoint(ipAddr, (int)scene.RegionPort);
                var circuit        = new AgentCircuit(
                    m_Commands,
                    agent,
                    udpServer,
                    (uint)circuitCode,
                    m_CapsRedirector,
                    capsId,
                    agent.ServiceURLs,
                    string.Empty,
                    m_PacketHandlerPlugins,
                    ep)
                {
                    LastTeleportFlags   = (TeleportFlags)teleportFlags,
                    Agent               = agent,
                    AgentID             = userAccount.Principal.ID,
                    SessionID           = sessionId.AsUUID,
                    ForceUseCircuitCode = true
                };
                agent.Circuits.Add(circuit.Scene.ID, circuit);

                try
                {
                    scene.Add(agent);
                    try
                    {
                        udpServer.AddCircuit(circuit);
                    }
                    catch
                    {
                        scene.Remove(agent);
                        throw;
                    }
                }
                catch (Exception e)
                {
                    m_Log.Debug("Failed agent post", e);
                    agent.Circuits.Clear();
                    return(new ViewerAgentAccessor());
                }
                /* make agent a root agent */
                agent.SceneID = scene.ID;
                try
                {
                    agent.UserAgentService.SetLastRegion(agent.Owner, new UserRegionData
                    {
                        RegionID      = scene.ID,
                        Position      = agent.GlobalPosition,
                        LookAt        = agent.LookAt,
                        GatekeeperURI = new URI(scene.GatekeeperURI)
                    });
                }
                catch (Exception e)
                {
                    m_Log.Warn("Could not contact UserAgentService", e);
                }

                try
                {
                    m_UserAccountService.SetPosition(agent.Owner.ID, new UserRegionData
                    {
                        RegionID      = scene.ID,
                        Position      = agent.GlobalPosition,
                        LookAt        = agent.LookAt,
                        GatekeeperURI = new URI(scene.GatekeeperURI)
                    });
                }
                catch (Exception e)
                {
                    m_Log.Warn("Could not contact PresenceService", e);
                }
                circuit.LogIncomingAgent(m_Log, false);
                var useCircuit = new UseCircuitCode
                {
                    AgentID     = agentId,
                    SessionID   = sessionId.AsUUID,
                    CircuitCode = (uint)circuitCode
                };

                var viewerCircuit = new ViewerCircuit(vc.ClientUDP, (uint)circuitCode, sessionId.AsUUID, agentId, regionEndPoint);
                vc.ClientUDP.AddCircuit(viewerCircuit);
                viewerCircuit.Start();
                var accessor = new ViewerAgentAccessor(agent.ID, scene.ID, circuitCode, capsPath, sessionId.AsUUID, secureSessionId.AsUUID);
                viewerCircuit.MessageRouting.Add(MessageType.AgentDataUpdate, (m) => AgentDataUpdateReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AgentDropGroup, (m) => AgentDropGroupReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AgentMovementComplete, (m) => AgentMovementCompleteReceivedEvent.HandleAgentMovementComplete(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AlertMessage, (m) => AlertMessageReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AttachedSound, (m) => AttachedSoundReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AttachedSoundGainChange, (m) => AttachedSoundGainChangeReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AvatarAnimation, (m) => AvatarAnimationReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.AvatarSitResponse, (m) => AvatarSitResponseReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.CameraConstraint, (m) => CameraConstraintReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ChangeUserRights, (m) => ChangeUserRightsReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ChatFromSimulator, (m) => ChatFromSimulatorReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ClearFollowCamProperties, (m) => ClearFollowCamPropertiesReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.CoarseLocationUpdate, (m) => CoarseLocationUpdateReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.DeRezAck, (m) => DeRezAckReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.DisableSimulator, (m) => DisableSimulatorReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.EconomyData, (m) => EconomyDataReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.EstateCovenantReply, (m) => EstateCovenantReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.EstateOwnerMessage, (m) => HandleEstateOwnerMessage((EstateOwnerMessage)m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.FeatureDisabled, (m) => FeatureDisabledReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ForceObjectSelect, (m) => ForceObjectSelectReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.GrantGodlikePowers, (m) => GrantGodlikePowersReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.HealthMessage, (m) => HealthMessageReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ImageData, (m) => HandleImageData(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ImageNotInDatabase, (m) => HandleImageNotInDatabase(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ImagePacket, (m) => HandleImagePacket(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ImprovedInstantMessage, (m) => ImprovedInstantMessageReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.KillObject, (m) => KillObjectReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.LoadURL, (m) => LoadURLReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.LogoutReply, (m) => HandleLogoutReply(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.MoneyBalanceReply, (m) => MoneyBalanceReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ObjectAnimation, (m) => ObjectAnimationReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ObjectProperties, (m) => ObjectPropertiesReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ObjectPropertiesFamily, (m) => ObjectPropertiesFamilyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ObjectUpdate, (m) => ObjectUpdateReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ObjectUpdateCompressed, (m) => ObjectUpdateReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.OfflineNotification, (m) => OfflineNotificationReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.OnlineNotification, (m) => OnlineNotificationReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelDwellReply, (m) => ParcelDwellReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelInfoReply, (m) => ParcelInfoReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelMediaCommandMessage, (m) => ParcelMediaCommandMessageReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelMediaUpdate, (m) => ParcelMediaUpdateReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelObjectOwnersReply, (m) => ParcelObjectOwnersReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ParcelProperties, (m) => ParcelPropertiesReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.PayPriceReply, (m) => PayPriceReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.PreloadSound, (m) => PreloadSoundReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.RegionHandshake, (m) => RegionHandshakeReceivedEvent.HandleRegionHandshake(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.RegionInfo, (m) => RegionInfoReceivedEvent.HandleRegionInfo(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ScriptControlChange, (m) => ScriptControlChangeReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ScriptDialog, (m) => ScriptDialogReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ScriptQuestion, (m) => ScriptQuestionReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ScriptRunningReply, (m) => ScriptRunningReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.ScriptTeleportRequest, (m) => ScriptTeleportRequestReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.SetFollowCamProperties, (m) => SetFollowCamPropertiesReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.SimStats, (m) => SimStatsReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.SoundTrigger, (m) => SoundTriggerReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.TelehubInfo, (m) => TelehubInfoReceivedEvent.ToScriptEvent((TelehubInfo)m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.TeleportFailed, (m) => TeleportFailedReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.TeleportLocal, (m) => TeleportLocalReceivedEvent.ToScriptEvent((TeleportLocal)m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.TeleportProgress, (m) => TeleportProgressReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.TeleportStart, (m) => TeleportStartReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.UUIDGroupNameReply, (m) => UUIDGroupNameReplyReceivedEvent.ToScriptEvent(m, vc, accessor));
                viewerCircuit.MessageRouting.Add(MessageType.UUIDNameReply, (m) => UUIDNameReplyReceivedEvent.ToScriptEvent(m, vc, accessor));

                viewerCircuit.OnBulkUpdateInventory       += (m) => BulkUpdateInventoryReceivedEvent.ToScriptEvent(m, vc, accessor);
                viewerCircuit.OnUpdateCreateInventoryItem += (m) => UpdateCreateInventoryItemReceivedEvent.ToScriptEvent(m, vc, accessor);
                vc.ViewerCircuits.Add((uint)circuitCode, viewerCircuit);
                viewerCircuit.SendMessage(useCircuit);
                return(accessor);
            }
        }
Exemplo n.º 17
0
 public EventQueueGetFinishedEvent(ViewerAgentAccessor agentInfo, UUID requestID, int statusCode)
 {
     Agent      = agentInfo;
     RequestID  = requestID;
     StatusCode = statusCode;
 }