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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llviewerparceloverlay.h
  3.  * @brief LLViewerParcelOverlay class header file
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-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_LLVIEWERPARCELOVERLAY_H
  33. #define LL_LLVIEWERPARCELOVERLAY_H
  34. // The ownership data for land parcels.
  35. // One of these structures per region.
  36. #include "lldarray.h"
  37. #include "llframetimer.h"
  38. #include "lluuid.h"
  39. #include "llviewertexture.h"
  40. #include "llgl.h"
  41. class LLViewerRegion;
  42. class LLVector3;
  43. class LLColor4U;
  44. class LLVector2;
  45. class LLViewerParcelOverlay : public LLGLUpdate
  46. {
  47. public:
  48. LLViewerParcelOverlay(LLViewerRegion* region, F32 region_width_meters);
  49. ~LLViewerParcelOverlay();
  50. // ACCESS
  51. LLViewerTexture* getTexture() const { return mTexture; }
  52. BOOL isOwned(const LLVector3& pos) const;
  53. BOOL isOwnedSelf(const LLVector3& pos) const;
  54. BOOL isOwnedGroup(const LLVector3& pos) const;
  55. BOOL isOwnedOther(const LLVector3& pos) const;
  56. BOOL isSoundLocal(const LLVector3& pos) const;
  57. BOOL isBuildCameraAllowed(const LLVector3& pos) const;
  58. F32 getOwnedRatio() const;
  59. // Returns the number of vertices drawn
  60. S32 renderPropertyLines();
  61. U8 ownership( const LLVector3& pos) const;
  62. // MANIPULATE
  63. void uncompressLandOverlay(S32 chunk, U8 *compressed_overlay);
  64. // Indicate property lines and overlay texture need to be rebuilt.
  65. void setDirty();
  66. void idleUpdate(bool update_now = false);
  67. void updateGL();
  68. private:
  69. // This is in parcel rows and columns, not grid rows and columns
  70. // Stored in bottom three bits.
  71. U8 ownership(S32 row, S32 col) const
  72. { return 0x7 & mOwnership[row * mParcelGridsPerEdge + col]; }
  73. void addPropertyLine(LLDynamicArray<LLVector3, 256>& vertex_array,
  74. LLDynamicArray<LLColor4U, 256>& color_array,
  75. LLDynamicArray<LLVector2, 256>& coord_array,
  76. const F32 start_x, const F32 start_y, 
  77. const U32 edge, 
  78. const LLColor4U& color);
  79. void  updateOverlayTexture();
  80. void updatePropertyLines();
  81. private:
  82. // Back pointer to the region that owns this structure.
  83. LLViewerRegion* mRegion;
  84. S32 mParcelGridsPerEdge;
  85. LLPointer<LLViewerTexture> mTexture;
  86. LLPointer<LLImageRaw> mImageRaw;
  87. // Size: mParcelGridsPerEdge * mParcelGridsPerEdge
  88. // Each value is 0-3, PARCEL_AVAIL to PARCEL_SELF in the two low bits
  89. // and other flags in the upper bits.
  90. U8 *mOwnership;
  91. // Update propery lines and overlay texture
  92. BOOL mDirty;
  93. LLFrameTimer mTimeSinceLastUpdate;
  94. S32 mOverlayTextureIdx;
  95. S32 mVertexCount;
  96. F32* mVertexArray;
  97. U8* mColorArray;
  98. };
  99. #endif