public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) m_log.DebugFormat("[Groups]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); m_groupData.RemoveAgentFromGroup(GetRequestingAgentIDStr(remoteClient), GetRequestingAgentIDStr(remoteClient), groupID); remoteClient.SendLeaveGroupReply(groupID, true); remoteClient.SendAgentDropGroup(groupID); // SL sends out notifcations to the group messaging session that the person has left // Should this also update everyone who is in the group? SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient)); }
public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) MainConsole.Instance.DebugFormat("[GROUPS]: {0} called", MethodBase.GetCurrentMethod().Name); if ( !m_groupData.RemoveAgentFromGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID)) return; m_cachedGroupMemberships.Remove(remoteClient.AgentId); remoteClient.SendLeaveGroupReply(groupID, true); remoteClient.SendAgentDropGroup(groupID); RemoveFromGroupPowersCache(remoteClient.AgentId, groupID); if (remoteClient.ActiveGroupId == groupID) GroupTitleUpdate(remoteClient, UUID.Zero, UUID.Zero); SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient)); if (m_imService != null) { // SL sends out notifications to the group messaging session that the person has left GridInstantMessage im = new GridInstantMessage { FromAgentID = groupID, Dialog = (byte) InstantMessageDialog.SessionSend, BinaryBucket = new byte[0], FromAgentName = "System", FromGroup = true, SessionID = groupID, Message = remoteClient.Name + " has left the group.", Offline = 1, RegionID = remoteClient.Scene.RegionInfo.RegionID, Timestamp = (uint) Util.UnixTimeSinceEpoch(), ToAgentID = UUID.Zero }; m_imService.EnsureSessionIsStarted(groupID); m_imService.SendChatToSession(UUID.Zero, im); } }
public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); if (!m_groupData.RemoveAgentFromGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID)) return; remoteClient.SendLeaveGroupReply(groupID, true); remoteClient.SendAgentDropGroup(groupID); SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient)); if (m_groupsMessagingModule != null) { // SL sends out notifcations to the group messaging session that the person has left GridInstantMessage im = new GridInstantMessage(); im.fromAgentID = groupID.Guid; im.dialog = (byte)InstantMessageDialog.SessionSend; im.binaryBucket = new byte[0]; im.fromAgentName = "System"; im.fromGroup = true; im.imSessionID = groupID.Guid; im.message = remoteClient.Name + " has left the group."; im.offline = 1; im.RegionID = remoteClient.Scene.RegionInfo.RegionID.Guid; im.timestamp = (uint)Util.UnixTimeSinceEpoch(); im.toAgentID = Guid.Empty; m_groupsMessagingModule.SendMessageToGroup(im, groupID); } }
public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID) { if (m_debugEnabled) MainConsole.Instance.DebugFormat("[GROUPS]: {0} called", MethodBase.GetCurrentMethod().Name); if ( !m_groupData.RemoveAgentFromGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID)) return; remoteClient.SendLeaveGroupReply(groupID, true); remoteClient.SendAgentDropGroup(groupID); if (remoteClient.ActiveGroupId == groupID) GroupTitleUpdate(remoteClient, UUID.Zero, UUID.Zero); SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient)); if (m_groupsMessagingModule != null) { // SL sends out notifcations to the group messaging session that the person has left GridInstantMessage im = new GridInstantMessage { fromAgentID = groupID, dialog = (byte) InstantMessageDialog.SessionSend, binaryBucket = new byte[0], fromAgentName = "System", fromGroup = true, imSessionID = groupID, message = remoteClient.Name + " has left the group.", offline = 1, RegionID = remoteClient.Scene.RegionInfo.RegionID, timestamp = (uint) Util.UnixTimeSinceEpoch(), toAgentID = UUID.Zero }; m_groupsMessagingModule.EnsureGroupChatIsStarted(groupID); m_groupsMessagingModule.SendMessageToGroup(im, groupID); } }