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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llwearable.h
  3.  * @brief LLWearable 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_LLWEARABLE_H
  33. #define LL_LLWEARABLE_H
  34. #include "lluuid.h"
  35. #include "llstring.h"
  36. #include "llpermissions.h"
  37. #include "llsaleinfo.h"
  38. #include "llassetstorage.h"
  39. #include "llwearabledictionary.h"
  40. #include "llfile.h"
  41. #include "lllocaltextureobject.h"
  42. class LLViewerInventoryItem;
  43. class LLVisualParam;
  44. class LLTexGlobalColorInfo;
  45. class LLTexGlobalColor;
  46. class LLWearable
  47. {
  48. friend class LLWearableList;
  49. //--------------------------------------------------------------------
  50. // Constructors and destructors
  51. //--------------------------------------------------------------------
  52. private:
  53. // Private constructors used by LLWearableList
  54. LLWearable(const LLTransactionID& transactionID);
  55. LLWearable(const LLAssetID& assetID);
  56. public:
  57. virtual ~LLWearable();
  58. //--------------------------------------------------------------------
  59. // Accessors
  60. //--------------------------------------------------------------------
  61. public:
  62. const LLUUID& getItemID() const;
  63. const LLAssetID& getAssetID() const { return mAssetID; }
  64. const LLTransactionID& getTransactionID() const { return mTransactionID; }
  65. EWearableType getType() const { return mType; }
  66. void setType(EWearableType type);
  67. const std::string& getName() const { return mName; }
  68. void setName(const std::string& name) { mName = name; }
  69. const std::string& getDescription() const { return mDescription; }
  70. void setDescription(const std::string& desc) { mDescription = desc; }
  71. const LLPermissions&  getPermissions() const { return mPermissions; }
  72. void setPermissions(const LLPermissions& p) { mPermissions = p; }
  73. const LLSaleInfo& getSaleInfo() const { return mSaleInfo; }
  74. void setSaleInfo(const LLSaleInfo& info) { mSaleInfo = info; }
  75. const std::string& getTypeLabel() const;
  76. const std::string& getTypeName() const;
  77. LLAssetType::EType getAssetType() const;
  78. LLLocalTextureObject* getLocalTextureObject(S32 index) const;
  79. S32 getDefinitionVersion() const { return mDefinitionVersion; }
  80. void setDefinitionVersion( S32 new_version ) { mDefinitionVersion = new_version; }
  81. public:
  82. typedef std::vector<LLVisualParam*> visual_param_vec_t;
  83. BOOL isDirty() const;
  84. BOOL isOldVersion() const;
  85. void writeToAvatar();
  86. void removeFromAvatar( BOOL upload_bake ) { LLWearable::removeFromAvatar( mType, upload_bake ); }
  87. static void removeFromAvatar( EWearableType type, BOOL upload_bake ); 
  88. BOOL exportFile(LLFILE* file) const;
  89. BOOL importFile(LLFILE* file);
  90. void setParamsToDefaults();
  91. void setTexturesToDefaults();
  92. void saveNewAsset() const;
  93. static void onSaveNewAssetComplete( const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status );
  94. void copyDataFrom(const LLWearable* src);
  95. static void setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; }
  96. friend std::ostream& operator<<(std::ostream &s, const LLWearable &w);
  97. void setItemID(const LLUUID& item_id);
  98. LLLocalTextureObject* getLocalTextureObject(S32 index);
  99. const LLLocalTextureObject* getConstLocalTextureObject(S32 index) const;
  100. void setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
  101. void addVisualParam(LLVisualParam *param);
  102. void setVisualParams();
  103. void  setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
  104. F32 getVisualParamWeight(S32 index) const;
  105. LLVisualParam* getVisualParam(S32 index) const;
  106. void getVisualParams(visual_param_vec_t &list);
  107. void animateParams(F32 delta, BOOL upload_bake);
  108. LLColor4 getClothesColor(S32 te) const;
  109. void  setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );
  110. void revertValues();
  111. void saveValues();
  112. void pullCrossWearableValues();
  113. BOOL isOnTop() const;
  114. // Something happened that requires the wearable's label to be updated (e.g. worn/unworn).
  115. void setLabelUpdated() const;
  116. // the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem,
  117. // not the wearable asset itself.
  118. void refreshName();
  119. private:
  120. typedef std::map<S32, LLLocalTextureObject*> te_map_t;
  121. typedef std::map<S32, LLVisualParam *>    visual_param_index_map_t;
  122. void  createLayers(S32 te);
  123. void  createVisualParams();
  124. void syncImages(te_map_t &src, te_map_t &dst);
  125. void destroyTextures();
  126. static S32 sCurrentDefinitionVersion; // Depends on the current state of the avatar_lad.xml.
  127. S32 mDefinitionVersion; // Depends on the state of the avatar_lad.xml when this asset was created.
  128. std::string mName;
  129. std::string mDescription;
  130. LLPermissions mPermissions;
  131. LLSaleInfo mSaleInfo;
  132. LLAssetID mAssetID;
  133. LLTransactionID mTransactionID;
  134. EWearableType mType;
  135. typedef std::map<S32, F32> param_map_t;
  136. param_map_t mSavedVisualParamMap; // last saved version of visual params
  137. visual_param_index_map_t mVisualParamIndexMap;
  138. te_map_t mTEMap; // maps TE to LocalTextureObject
  139. te_map_t mSavedTEMap; // last saved version of TEMap
  140. LLUUID mItemID;  // ID of the inventory item in the agent's inventory
  141. };
  142. #endif  // LL_LLWEARABLE_H