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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llfloaterworldmap.h
  3.  * @brief LLFloaterWorldMap class definition
  4.  *
  5.  * $LicenseInfo:firstyear=2003&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2003-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. /*
  33.  * Map of the entire world, with multiple background images,
  34.  * avatar tracking, teleportation by double-click, etc.
  35.  */
  36. #ifndef LL_LLFLOATERWORLDMAP_H
  37. #define LL_LLFLOATERWORLDMAP_H
  38. #include "lldarray.h"
  39. #include "llfloater.h"
  40. #include "llhudtext.h"
  41. #include "llmapimagetype.h"
  42. #include "lltracker.h"
  43. class LLEventInfo;
  44. class LLFriendObserver;
  45. class LLInventoryModel;
  46. class LLInventoryObserver;
  47. class LLItemInfo;
  48. class LLLineEditor;
  49. class LLTabContainer;
  50. class LLFloaterWorldMap : public LLFloater
  51. {
  52. public:
  53. LLFloaterWorldMap(const LLSD& key);
  54. virtual ~LLFloaterWorldMap();
  55. // Prefer this to gFloaterWorldMap
  56. static LLFloaterWorldMap* getInstance();
  57. static void *createWorldMapView(void* data);
  58. BOOL postBuild();
  59. /*virtual*/ void onOpen(const LLSD& key);
  60. /*virtual*/ void onClose(bool app_quitting);
  61. static void reloadIcons(void*);
  62. /*virtual*/ void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE );
  63. /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
  64. /*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
  65. /*virtual*/ void draw();
  66. // methods for dealing with inventory. The observe() method is
  67. // called during program startup. inventoryUpdated() will be
  68. // called by a helper object when an interesting change has
  69. // occurred.
  70. void observeInventory(LLInventoryModel* inventory);
  71. void inventoryChanged();
  72. // Calls for dealing with changes in friendship
  73. void observeFriends();
  74. void friendsChanged();
  75. // tracking methods
  76. void trackAvatar( const LLUUID& avatar_id, const std::string& name );
  77. void trackLandmark( const LLUUID& landmark_item_id ); 
  78. void trackLocation(const LLVector3d& pos);
  79. void trackEvent(const LLItemInfo &event_info);
  80. void trackGenericItem(const LLItemInfo &item);
  81. void trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord);
  82. static const LLUUID& getHomeID() { return sHomeID; }
  83. // A z_attenuation of 0.0f collapses the distance into the X-Y plane
  84. F32 getDistanceToDestination(const LLVector3d& pos_global, F32 z_attenuation = 0.5f) const;
  85. void clearLocationSelection(BOOL clear_ui = FALSE);
  86. void clearAvatarSelection(BOOL clear_ui = FALSE);
  87. void clearLandmarkSelection(BOOL clear_ui = FALSE);
  88. // Adjust the maximally zoomed out limit of the zoom slider so you can
  89. // see the whole world, plus a little.
  90. void adjustZoomSliderBounds();
  91. // Catch changes in the sim list
  92. void updateSims(bool found_null_sim);
  93. // teleport to the tracked item, if there is one
  94. void teleport();
  95. protected:
  96. void onGoHome();
  97. void onLandmarkComboPrearrange();
  98. void onLandmarkComboCommit();
  99. void onAvatarComboPrearrange();
  100. void     onAvatarComboCommit();
  101. void onComboTextEntry( );
  102. void onSearchTextEntry( LLLineEditor* ctrl );
  103. void onClearBtn();
  104. void onClickTeleportBtn();
  105. void onShowTargetBtn();
  106. void onShowAgentBtn();
  107. void onCopySLURL();
  108. void centerOnTarget(BOOL animate);
  109. void updateLocation();
  110. // fly to the tracked item, if there is one
  111. void fly();
  112. void buildLandmarkIDLists();
  113. void flyToLandmark();
  114. void teleportToLandmark();
  115. void setLandmarkVisited();
  116. void buildAvatarIDList();
  117. void flyToAvatar();
  118. void teleportToAvatar();
  119. void updateSearchEnabled();
  120. void onLocationFocusChanged( LLFocusableElement* ctrl );
  121. void     onLocationCommit();
  122. void     onCommitSearchResult();
  123. void cacheLandmarkPosition();
  124. private:
  125. LLPanel* mPanel; // Panel displaying the map
  126. // Ties to LLWorldMapView::sMapScale, in pixels per region
  127. F32 mCurZoomVal;
  128. LLFrameTimer mZoomTimer;
  129. LLDynamicArray<LLUUID> mLandmarkAssetIDList;
  130. LLDynamicArray<LLUUID> mLandmarkItemIDList;
  131. static const LLUUID sHomeID;
  132. LLInventoryModel* mInventory;
  133. LLInventoryObserver* mInventoryObserver;
  134. LLFriendObserver* mFriendObserver;
  135. std::string mCompletingRegionName;
  136. // Local position from trackURL() request, used to select final
  137. // position once region lookup complete.
  138. LLVector3 mCompletingRegionPos;
  139. std::string mLastRegionName;
  140. BOOL mWaitingForTracker;
  141. BOOL mIsClosing;
  142. BOOL mSetToUserPosition;
  143. LLVector3d mTrackedLocation;
  144. LLTracker::ETrackingStatus mTrackedStatus;
  145. std::string mTrackedSimName;
  146. std::string mTrackedAvatarName;
  147. std::string mSLURL;
  148. };
  149. extern LLFloaterWorldMap* gFloaterWorldMap;
  150. #endif