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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llfloaterbump.cpp
  3.  * @brief Floater showing recent bumps, hits with objects, pushes, etc.
  4.  * @author Cory Ondrejka, James Cook
  5.  *
  6.  * $LicenseInfo:firstyear=2003&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2003-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33.  
  34. #include "llviewerprecompiledheaders.h"
  35. #include "llsd.h"
  36. #include "mean_collision_data.h"
  37. #include "llfloaterbump.h"
  38. #include "llscrolllistctrl.h"
  39. #include "lluictrlfactory.h"
  40. #include "llviewermessage.h"
  41. ///----------------------------------------------------------------------------
  42. /// Class LLFloaterBump
  43. ///----------------------------------------------------------------------------
  44. extern BOOL gNoRender;
  45. // Default constructor
  46. LLFloaterBump::LLFloaterBump(const LLSD& key) 
  47. : LLFloater(key)
  48. {
  49. if(gNoRender) return;
  50. //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_bumps.xml");
  51. }
  52. // Destroys the object
  53. LLFloaterBump::~LLFloaterBump()
  54. {
  55. }
  56. // virtual
  57. void LLFloaterBump::onOpen(const LLSD& key)
  58. {
  59. LLScrollListCtrl* list = getChild<LLScrollListCtrl>("bump_list");
  60. if (!list)
  61. return;
  62. list->deleteAllItems();
  63. if (gMeanCollisionList.empty())
  64. {
  65. std::string none_detected = getString("none_detected");
  66. LLSD row;
  67. row["columns"][0]["value"] = none_detected;
  68. row["columns"][0]["font"] = "SansSerifBold";
  69. list->addElement(row);
  70. }
  71. else
  72. {
  73. for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
  74.  iter != gMeanCollisionList.end(); ++iter)
  75. {
  76. LLMeanCollisionData *mcd = *iter;
  77. add(list, mcd);
  78. }
  79. }
  80. }
  81. void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)
  82. {
  83. if (mcd->mFirstName.empty() || list->getItemCount() >= 20)
  84. {
  85. return;
  86. }
  87. std::string timeStr = getString ("timeStr");
  88. LLSD substitution;
  89. substitution["datetime"] = (S32) mcd->mTime;
  90. LLStringUtil::format (timeStr, substitution);
  91. std::string action;
  92. switch(mcd->mType)
  93. {
  94. case MEAN_BUMP:
  95. action = "bump";
  96. break;
  97. case MEAN_LLPUSHOBJECT:
  98. action = "llpushobject";
  99. break;
  100. case MEAN_SELECTED_OBJECT_COLLIDE:
  101. action = "selected_object_collide";
  102. break;
  103. case MEAN_SCRIPTED_OBJECT_COLLIDE:
  104. action = "scripted_object_collide";
  105. break;
  106. case MEAN_PHYSICAL_OBJECT_COLLIDE:
  107. action = "physical_object_collide";
  108. break;
  109. default:
  110. llinfos << "LLFloaterBump::add unknown mean collision type "
  111. << mcd->mType << llendl;
  112. return;
  113. }
  114. // All above action strings are in XML file
  115. LLUIString text = getString(action);
  116. text.setArg("[TIME]", timeStr);
  117. text.setArg("[FIRST]", mcd->mFirstName);
  118. text.setArg("[LAST]", mcd->mLastName);
  119. LLSD row;
  120. row["id"] = mcd->mPerp;
  121. row["columns"][0]["value"] = text;
  122. row["columns"][0]["font"] = "SansSerifBold";
  123. list->addElement(row);
  124. }