lluserrelations.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lluserrelations.cpp
  3.  * @author Phoenix
  4.  * @date 2006-10-12
  5.  * @brief Implementation of a simple cache of user relations.
  6.  *
  7.  * $LicenseInfo:firstyear=2006&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2006-2010, Linden Research, Inc.
  10.  * 
  11.  * Second Life Viewer Source Code
  12.  * The source code in this file ("Source Code") is provided by Linden Lab
  13.  * to you under the terms of the GNU General Public License, version 2.0
  14.  * ("GPL"), unless you have obtained a separate licensing agreement
  15.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  16.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  17.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  18.  * 
  19.  * There are special exceptions to the terms and conditions of the GPL as
  20.  * it is applied to this Source Code. View the full text of the exception
  21.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  22.  * online at
  23.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  24.  * 
  25.  * By copying, modifying or distributing this software, you acknowledge
  26.  * that you have read and understood your obligations described above,
  27.  * and agree to abide by those obligations.
  28.  * 
  29.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  30.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  31.  * COMPLETENESS OR PERFORMANCE.
  32.  * $/LicenseInfo$
  33.  */
  34. #include "linden_common.h"
  35. #include "lluserrelations.h"
  36. // static
  37. const U8 LLRelationship::GRANTED_VISIBLE_MASK = LLRelationship::GRANT_MODIFY_OBJECTS | LLRelationship::GRANT_MAP_LOCATION;
  38. const LLRelationship LLRelationship::DEFAULT_RELATIONSHIP = LLRelationship(GRANT_ONLINE_STATUS, GRANT_ONLINE_STATUS, false);
  39. LLRelationship::LLRelationship() :
  40. mGrantToAgent(0),
  41. mGrantFromAgent(0),
  42. mChangeSerialNum(0),
  43. mIsOnline(false)
  44. {
  45. }
  46. LLRelationship::LLRelationship(S32 grant_to, S32 grant_from, bool is_online) :
  47. mGrantToAgent(grant_to),
  48. mGrantFromAgent(grant_from),
  49. mChangeSerialNum(0),
  50. mIsOnline(is_online)
  51. {
  52. }
  53. bool LLRelationship::isOnline() const
  54. {
  55. return mIsOnline;
  56. }
  57. void LLRelationship::online(bool is_online)
  58. {
  59. mIsOnline = is_online;
  60. mChangeSerialNum++;
  61. }
  62. bool LLRelationship::isRightGrantedTo(S32 rights) const
  63. {
  64. return ((mGrantToAgent & rights) == rights);
  65. }
  66. bool LLRelationship::isRightGrantedFrom(S32 rights) const
  67. {
  68. return ((mGrantFromAgent & rights) == rights);
  69. }
  70. S32 LLRelationship::getRightsGrantedTo() const
  71. {
  72. return mGrantToAgent;
  73. }
  74. S32 LLRelationship::getRightsGrantedFrom() const
  75. {
  76. return mGrantFromAgent;
  77. }
  78. void LLRelationship::grantRights(S32 to_agent, S32 from_agent)
  79. {
  80. mGrantToAgent |= to_agent;
  81. mGrantFromAgent |= from_agent;
  82. mChangeSerialNum++;
  83. }
  84. void LLRelationship::revokeRights(S32 to_agent, S32 from_agent)
  85. {
  86. mGrantToAgent &= ~to_agent;
  87. mGrantFromAgent &= ~from_agent;
  88. mChangeSerialNum++;
  89. }
  90. /*
  91. bool LLGrantedRights::getNextRights(
  92. LLUUID& agent_id,
  93. S32& to_agent,
  94. S32& from_agent) const
  95. {
  96. rights_map_t::const_iterator iter = mRights.upper_bound(agent_id);
  97. if(iter == mRights.end()) return false;
  98. agent_id = (*iter).first;
  99. to_agent = (*iter).second.mToAgent;
  100. from_agent = (*iter).second.mFromAgent;
  101. return true;
  102. }
  103. */