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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llworldmapview.h
  3.  * @brief LLWorldMapView class header file
  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. // View of the global map of the world
  33. // The data (model) for the global map (a singleton, unique to the application instance) is 
  34. // in LLWorldMap and is typically accessed using LLWorldMap::getInstance()
  35. #ifndef LL_LLWORLDMAPVIEW_H
  36. #define LL_LLWORLDMAPVIEW_H
  37. #include "llpanel.h"
  38. #include "llworldmap.h"
  39. #include "v4color.h"
  40. const S32 DEFAULT_TRACKING_ARROW_SIZE = 16;
  41. class LLUUID;
  42. class LLVector3d;
  43. class LLVector3;
  44. class LLTextBox;
  45. class LLWorldMapView : public LLPanel
  46. {
  47. public:
  48. static void initClass();
  49. static void cleanupClass();
  50. LLWorldMapView();
  51. virtual ~LLWorldMapView();
  52. virtual BOOL postBuild();
  53. virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE );
  54. virtual void setVisible(BOOL visible);
  55. virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  56. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  57. virtual BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
  58. virtual BOOL handleHover( S32 x, S32 y, MASK mask );
  59. virtual BOOL handleToolTip( S32 x, S32 y, MASK mask);
  60. bool checkItemHit(S32 x, S32 y, LLItemInfo& item, LLUUID* id, bool track);
  61. void handleClick(S32 x, S32 y, MASK mask, S32* hit_type, LLUUID* id);
  62. // Scale and pan are shared across all instances! (i.e. Terrain and Objects maps are always registered)
  63. static void setScale( F32 scale );
  64. static void translatePan( S32 delta_x, S32 delta_y );
  65. static void setPan( S32 x, S32 y, BOOL snap = TRUE );
  66. // Return true if the current scale level is above the threshold for accessing region info
  67. static bool showRegionInfo();
  68. LLVector3 globalPosToView(const LLVector3d& global_pos);
  69. LLVector3d viewPosToGlobal(S32 x,S32 y);
  70. virtual void draw();
  71. void drawGenericItems(const LLSimInfo::item_info_list_t& items, LLUIImagePtr image);
  72. void drawGenericItem(const LLItemInfo& item, LLUIImagePtr image);
  73. void drawImage(const LLVector3d& global_pos, LLUIImagePtr image, const LLColor4& color = LLColor4::white);
  74. void drawImageStack(const LLVector3d& global_pos, LLUIImagePtr image, U32 count, F32 offset, const LLColor4& color);
  75. void drawAgents();
  76. void drawItems();
  77. void drawFrustum();
  78. void drawMipmap(S32 width, S32 height);
  79. bool drawMipmapLevel(S32 width, S32 height, S32 level, bool load = true);
  80. static void cleanupTextures();
  81. // Draw the tracking indicator, doing the right thing if it's outside
  82. // the view area.
  83. void drawTracking( const LLVector3d& pos_global, const LLColor4& color, BOOL draw_arrow = TRUE,
  84.   const std::string& label = std::string(), const std::string& tooltip = std::string(),
  85.   S32 vert_offset = 0);
  86. static void drawTrackingArrow(const LLRect& view_rect, S32 x, S32 y, 
  87.   const LLColor4& color,
  88.   S32 arrow_size = DEFAULT_TRACKING_ARROW_SIZE);
  89. static void drawTrackingDot(F32 x_pixels, 
  90. F32 y_pixels, 
  91. const LLColor4& color,
  92. F32 relative_z = 0.f,
  93. F32 dot_radius = 5.f);
  94. static void drawTrackingCircle( const LLRect& rect, S32 x, S32 y, 
  95. const LLColor4& color, 
  96. S32 min_thickness, 
  97. S32 overlap );
  98. static void drawAvatar( F32 x_pixels, 
  99. F32 y_pixels, 
  100. const LLColor4& color,
  101. F32 relative_z = 0.f,
  102. F32 dot_radius = 3.f);
  103. static void drawIconName(F32 x_pixels, 
  104. F32 y_pixels, 
  105. const LLColor4& color,
  106. const std::string& first_line,
  107. const std::string& second_line);
  108. // Prevents accidental double clicks
  109. static void clearLastClick() { sHandledLastClick = FALSE; }
  110. // if the view changes, download additional sim info as needed
  111. void updateVisibleBlocks();
  112. protected:
  113. void setDirectionPos( LLTextBox* text_box, F32 rotation );
  114. void updateDirections();
  115. public:
  116. LLColor4 mBackgroundColor;
  117. static LLUIImagePtr sAvatarSmallImage;
  118. static LLUIImagePtr sAvatarYouImage;
  119. static LLUIImagePtr sAvatarYouLargeImage;
  120. static LLUIImagePtr sAvatarLevelImage;
  121. static LLUIImagePtr sAvatarAboveImage;
  122. static LLUIImagePtr sAvatarBelowImage;
  123. static LLUIImagePtr sTelehubImage;
  124. static LLUIImagePtr sInfohubImage;
  125. static LLUIImagePtr sHomeImage;
  126. static LLUIImagePtr sEventImage;
  127. static LLUIImagePtr sEventMatureImage;
  128. static LLUIImagePtr sEventAdultImage;
  129. static LLUIImagePtr sTrackCircleImage;
  130. static LLUIImagePtr sTrackArrowImage;
  131. static LLUIImagePtr sClassifiedsImage;
  132. static LLUIImagePtr sForSaleImage;
  133. static LLUIImagePtr sForSaleAdultImage;
  134. static F32 sMapScale; // scale = size of a region in pixels
  135. BOOL mItemPicked;
  136. static F32 sPanX; // in pixels
  137. static F32 sPanY; // in pixels
  138. static F32 sTargetPanX; // in pixels
  139. static F32 sTargetPanY; // in pixels
  140. static S32 sTrackingArrowX;
  141. static S32 sTrackingArrowY;
  142. static bool sVisibleTilesLoaded;
  143. // Are we mid-pan from a user drag?
  144. BOOL mPanning;
  145. S32 mMouseDownPanX; // value at start of drag
  146. S32 mMouseDownPanY; // value at start of drag
  147. S32 mMouseDownX;
  148. S32 mMouseDownY;
  149. LLTextBox* mTextBoxEast;
  150. LLTextBox* mTextBoxNorth;
  151. LLTextBox* mTextBoxWest;
  152. LLTextBox* mTextBoxSouth;
  153. LLTextBox* mTextBoxSouthEast;
  154. LLTextBox* mTextBoxNorthEast;
  155. LLTextBox* mTextBoxNorthWest;
  156. LLTextBox* mTextBoxSouthWest;
  157. LLTextBox* mTextBoxScrollHint;
  158. static BOOL sHandledLastClick;
  159. S32 mSelectIDStart;
  160. // Keep the list of regions that are displayed on screen. Avoids iterating through the whole region map after draw().
  161. typedef std::vector<U64> handle_list_t;
  162. handle_list_t mVisibleRegions; // set every frame
  163. static std::map<std::string,std::string> sStringsMap;
  164. private:
  165. void drawTileOutline(S32 level, F32 top, F32 left, F32 bottom, F32 right);
  166. };
  167. #endif