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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltoolcomp.h
  3.  * @brief Composite tools
  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_TOOLCOMP_H
  33. #define LL_TOOLCOMP_H
  34. #include "lltool.h"
  35. class LLManip;
  36. class LLToolSelectRect;
  37. class LLToolPlacer;
  38. class LLPickInfo;
  39. class LLView;
  40. class LLTextBox;
  41. //-----------------------------------------------------------------------
  42. // LLToolComposite
  43. class LLToolComposite : public LLTool
  44. {
  45. public:
  46. LLToolComposite(const std::string& name);
  47.     virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0; // Sets the current tool
  48.     virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
  49. virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask) = 0;
  50. // Map virtual functions to the currently active internal tool
  51.     virtual BOOL handleHover(S32 x, S32 y, MASK mask) { return mCur->handleHover( x, y, mask ); }
  52. virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) { return mCur->handleScrollWheel( x, y, clicks ); }
  53. virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) { return mCur->handleRightMouseDown( x, y, mask ); }
  54. virtual LLViewerObject* getEditingObject() { return mCur->getEditingObject(); }
  55. virtual LLVector3d getEditingPointGlobal() { return mCur->getEditingPointGlobal(); }
  56. virtual BOOL isEditing() { return mCur->isEditing(); }
  57. virtual void stopEditing() { mCur->stopEditing(); mCur = mDefault; }
  58. virtual BOOL clipMouseWhenDown() { return mCur->clipMouseWhenDown(); }
  59. virtual void handleSelect();
  60. virtual void handleDeselect() { mCur->handleDeselect(); mCur = mDefault; mSelected = FALSE; }
  61. virtual void render() { mCur->render(); }
  62. virtual void draw() { mCur->draw(); }
  63. virtual BOOL handleKey(KEY key, MASK mask) { return mCur->handleKey( key, mask ); }
  64. virtual void onMouseCaptureLost();
  65. virtual void screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const
  66. { mCur->screenPointToLocal(screen_x, screen_y, local_x, local_y); }
  67. virtual void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const
  68. { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); }
  69. BOOL isSelecting();
  70. protected:
  71. void setCurrentTool( LLTool* new_tool );
  72. LLTool* getCurrentTool() { return mCur; }
  73. // In hover handler, call this to auto-switch tools
  74. void setToolFromMask( MASK mask, LLTool *normal );
  75. protected:
  76. LLTool* mCur; // The tool to which we're delegating.
  77. LLTool* mDefault;
  78. BOOL mSelected;
  79. BOOL mMouseDown;
  80. LLManip* mManip;
  81. LLToolSelectRect* mSelectRect;
  82. public:
  83. static const std::string sNameComp;
  84. };
  85. //-----------------------------------------------------------------------
  86. // LLToolCompTranslate
  87. class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompInspect>
  88. {
  89. public:
  90. LLToolCompInspect();
  91. virtual ~LLToolCompInspect();
  92. // Overridden from LLToolComposite
  93.     virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  94.     virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  95. static void pickCallback(const LLPickInfo& pick_info);
  96. };
  97. //-----------------------------------------------------------------------
  98. // LLToolCompTranslate
  99. class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
  100. {
  101. public:
  102. LLToolCompTranslate();
  103. virtual ~LLToolCompTranslate();
  104. // Overridden from LLToolComposite
  105. virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  106. virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  107. virtual BOOL handleHover(S32 x, S32 y, MASK mask);
  108. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
  109. virtual void render();
  110. virtual LLTool* getOverrideTool(MASK mask);
  111. static void pickCallback(const LLPickInfo& pick_info);
  112. };
  113. //-----------------------------------------------------------------------
  114. // LLToolCompScale
  115. class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompScale>
  116. {
  117. public:
  118. LLToolCompScale();
  119. virtual ~LLToolCompScale();
  120. // Overridden from LLToolComposite
  121.     virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  122.     virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  123.     virtual BOOL handleHover(S32 x, S32 y, MASK mask);
  124. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
  125. virtual void render();
  126. virtual LLTool* getOverrideTool(MASK mask);
  127. static void pickCallback(const LLPickInfo& pick_info);
  128. };
  129. //-----------------------------------------------------------------------
  130. // LLToolCompRotate
  131. class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRotate>
  132. {
  133. public:
  134. LLToolCompRotate();
  135. virtual ~LLToolCompRotate();
  136. // Overridden from LLToolComposite
  137.     virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  138.     virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  139.     virtual BOOL handleHover(S32 x, S32 y, MASK mask);
  140. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  141. virtual void render();
  142. virtual LLTool* getOverrideTool(MASK mask);
  143. static void pickCallback(const LLPickInfo& pick_info);
  144. protected:
  145. };
  146. //-----------------------------------------------------------------------
  147. // LLToolCompCreate
  148. class LLToolCompCreate : public LLToolComposite, public LLSingleton<LLToolCompCreate>
  149. {
  150. public:
  151. LLToolCompCreate();
  152. virtual ~LLToolCompCreate();
  153. // Overridden from LLToolComposite
  154.     virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  155.     virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  156. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  157. static void pickCallback(const LLPickInfo& pick_info);
  158. protected:
  159. LLToolPlacer* mPlacer;
  160. BOOL mObjectPlacedOnMouseDown;
  161. };
  162. //-----------------------------------------------------------------------
  163. // LLToolCompGun
  164. class LLToolGun;
  165. class LLToolGrab;
  166. class LLToolSelect;
  167. class LLToolCompGun : public LLToolComposite, public LLSingleton<LLToolCompGun>
  168. {
  169. public:
  170. LLToolCompGun();
  171. virtual ~LLToolCompGun();
  172. // Overridden from LLToolComposite
  173.     virtual BOOL handleHover(S32 x, S32 y, MASK mask);
  174. virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  175. virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  176. virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
  177. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  178. virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
  179. virtual void onMouseCaptureLost();
  180. virtual void handleSelect();
  181. virtual void handleDeselect();
  182. virtual LLTool* getOverrideTool(MASK mask) { return NULL; }
  183. protected:
  184. LLToolGun* mGun;
  185. LLToolGrab* mGrab;
  186. LLTool* mNull;
  187. };
  188. #endif  // LL_TOOLCOMP_H