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 }); } } }
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); }
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 }); } } }
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 }); } } }
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); } } }
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); } }
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); }
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() }); }
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); }
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); } }
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); } } }
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); } }
public EventQueueGetFinishedEvent(ViewerAgentAccessor agentInfo, UUID requestID, int statusCode) { Agent = agentInfo; RequestID = requestID; StatusCode = statusCode; }