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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltoolmorph.h
  3.  * @brief A tool to select object faces.
  4.  *
  5.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2001-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLTOOLMORPH_H
  33. #define LL_LLTOOLMORPH_H
  34. #include "lltool.h"
  35. #include "m4math.h"
  36. #include "v2math.h"
  37. #include "lldynamictexture.h"
  38. #include "llundo.h"
  39. #include "lltextbox.h"
  40. #include "llstrider.h"
  41. #include "llviewervisualparam.h"
  42. #include "llframetimer.h"
  43. #include "llviewertexture.h"
  44. class LLViewerJointMesh;
  45. class LLPolyMesh;
  46. class LLViewerObject;
  47. //-----------------------------------------------------------------------------
  48. // LLVisualParamHint
  49. //-----------------------------------------------------------------------------
  50. class LLVisualParamHint : public LLViewerDynamicTexture
  51. {
  52. protected:
  53. virtual ~LLVisualParamHint();
  54. public:
  55. LLVisualParamHint(
  56. S32 pos_x, S32 pos_y,
  57. S32 width, S32 height, 
  58. LLViewerJointMesh *mesh, 
  59. LLViewerVisualParam *param,
  60. F32 param_weight);
  61. BOOL needsRender();
  62. void preRender(BOOL clear_depth);
  63. BOOL render();
  64. void requestUpdate( S32 delay_frames ) {mNeedsUpdate = TRUE; mDelayFrames = delay_frames; }
  65. void setUpdateDelayFrames( S32 delay_frames ) { mDelayFrames = delay_frames; }
  66. void draw();
  67. LLViewerVisualParam* getVisualParam() { return mVisualParam; }
  68. F32 getVisualParamWeight() { return mVisualParamWeight; }
  69. BOOL getVisible() { return mIsVisible; }
  70. void setAllowsUpdates( BOOL b ) { mAllowsUpdates = b; }
  71. const LLRect& getRect() { return mRect; }
  72. // Requests updates for all instances (excluding two possible exceptions)  Grungy but efficient.
  73. static void requestHintUpdates( LLVisualParamHint* exception1 = NULL, LLVisualParamHint* exception2 = NULL );
  74. protected:
  75. BOOL mNeedsUpdate; // does this texture need to be re-rendered?
  76. BOOL mIsVisible; // is this distortion hint visible?
  77. LLViewerJointMesh* mJointMesh; // mesh that this distortion applies to
  78. LLViewerVisualParam* mVisualParam; // visual param applied by this hint
  79. F32 mVisualParamWeight; // weight for this visual parameter
  80. BOOL mAllowsUpdates; // updates are blocked unless this is true
  81. S32 mDelayFrames; // updates are blocked for this many frames
  82. LLRect mRect;
  83. F32 mLastParamWeight;
  84. LLUIImagePtr mBackgroundp;
  85. typedef std::set< LLVisualParamHint* > instance_list_t;
  86. static instance_list_t sInstances;
  87. };
  88. // this class resets avatar data at the end of an update cycle
  89. class LLVisualParamReset : public LLViewerDynamicTexture
  90. {
  91. protected:
  92. /*virtual */ ~LLVisualParamReset(){}
  93. public:
  94. LLVisualParamReset();
  95. /*virtual */ BOOL render();
  96. static BOOL sDirty;
  97. };
  98. #endif