llfloateravatartextures.cpp

Go to the documentation of this file.
00001 
00032 #include "llviewerprecompiledheaders.h"
00033 
00034 #include "llfloateravatartextures.h"
00035 
00036 #include "lltexturectrl.h"
00037 
00038 #include "llvieweruictrlfactory.h"
00039 #include "llviewerobjectlist.h"
00040 #include "llvoavatar.h"
00041 
00042 LLFloaterAvatarTextures::LLFloaterAvatarTextures(const LLUUID& id) : 
00043         LLFloater("avatar_texture_debug"),
00044         mID(id)
00045 {
00046 }
00047 
00048 LLFloaterAvatarTextures::~LLFloaterAvatarTextures()
00049 {
00050 }
00051 
00052 LLFloaterAvatarTextures* LLFloaterAvatarTextures::show(const LLUUID &id)
00053 {
00054 
00055         LLFloaterAvatarTextures* floaterp = new LLFloaterAvatarTextures(id);
00056 
00057         // Builds and adds to gFloaterView
00058         gUICtrlFactory->buildFloater(floaterp, "floater_avatar_textures.xml");
00059 
00060         gFloaterView->addChild(floaterp);
00061         floaterp->open();       /*Flawfinder: ignore*/
00062 
00063         gFloaterView->adjustToFitScreen(floaterp, FALSE);
00064 
00065         return floaterp;
00066 }
00067 
00068 BOOL LLFloaterAvatarTextures::postBuild()
00069 {
00070         mBakedHead = (LLTextureCtrl*)getChildByName("baked_head");
00071         mBakedEyes = (LLTextureCtrl*)getChildByName("baked_eyes");
00072         mBakedUpper = (LLTextureCtrl*)getChildByName("baked_upper_body");
00073         mBakedLower = (LLTextureCtrl*)getChildByName("baked_lower_body");
00074         mBakedSkirt = (LLTextureCtrl*)getChildByName("baked_skirt");
00075         mHair = (LLTextureCtrl*)getChildByName("hair");
00076         mMakeup = (LLTextureCtrl*)getChildByName("head_bodypaint");
00077         mEye = (LLTextureCtrl*)getChildByName("eye_texture");
00078         mShirt = (LLTextureCtrl*)getChildByName("shirt");
00079         mUpperTattoo = (LLTextureCtrl*)getChildByName("upper_bodypaint");
00080         mUpperJacket = (LLTextureCtrl*)getChildByName("upper_jacket");
00081         mGloves = (LLTextureCtrl*)getChildByName("gloves");
00082         mUndershirt = (LLTextureCtrl*)getChildByName("undershirt");
00083         mPants = (LLTextureCtrl*)getChildByName("pants");
00084         mLowerTattoo = (LLTextureCtrl*)getChildByName("lower_bodypaint");
00085         mShoes = (LLTextureCtrl*)getChildByName("shoes");
00086         mSocks = (LLTextureCtrl*)getChildByName("socks");
00087         mJacket = (LLTextureCtrl*)getChildByName("jacket");
00088         mUnderpants = (LLTextureCtrl*)getChildByName("underpants");
00089         mSkirt = (LLTextureCtrl*)getChildByName("skirt_texture");
00090         mTitle = getTitle();
00091 
00092         childSetAction("Dump", onClickDump, this);
00093 
00094         refresh();
00095         return TRUE;
00096 }
00097 
00098 void LLFloaterAvatarTextures::draw()
00099 {
00100         refresh();
00101         LLFloater::draw();
00102 }
00103 
00104 #if !LL_RELEASE_FOR_DOWNLOAD
00105 static void update_texture_ctrl(LLVOAvatar* avatarp,
00106                                                                  LLTextureCtrl* ctrl,
00107                                                                  LLVOAvatar::ETextureIndex te)
00108 {
00109         LLUUID id = avatarp->getTE(te)->getID();
00110         if (id == IMG_DEFAULT_AVATAR)
00111         {
00112                 ctrl->setImageAssetID(LLUUID::null);
00113                 ctrl->setToolTip("IMG_DEFAULT_AVATAR");
00114         }
00115         else
00116         {
00117                 ctrl->setImageAssetID(id);
00118                 ctrl->setToolTip(id.asString());
00119         }
00120 }
00121 
00122 static LLVOAvatar* find_avatar(const LLUUID& id)
00123 {
00124         LLViewerObject *obj = gObjectList.findObject(id);
00125         while (obj && obj->isAttachment())
00126         {
00127                 obj = (LLViewerObject *)obj->getParent();
00128         }
00129 
00130         if (obj && obj->isAvatar())
00131         {
00132                 return (LLVOAvatar*)obj;
00133         }
00134         else
00135         {
00136                 return NULL;
00137         }
00138 }
00139 
00140 void LLFloaterAvatarTextures::refresh()
00141 {
00142         LLVOAvatar *avatarp = find_avatar(mID);
00143         if (avatarp)
00144         {
00145                 char firstname[DB_FIRST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/
00146                 char lastname[DB_LAST_NAME_BUF_SIZE];           /*Flawfinder: ignore*/
00147                 if (gCacheName->getName(avatarp->getID(), firstname, lastname))
00148                 {
00149                         LLString name;
00150                         name.assign( firstname );
00151                         name.append( " " );
00152                         name.append( lastname );
00153 
00154                         setTitle(mTitle + ": " + name);
00155                 }
00156                 update_texture_ctrl(avatarp, mBakedHead,        LLVOAvatar::TEX_HEAD_BAKED);
00157                 update_texture_ctrl(avatarp, mBakedEyes,        LLVOAvatar::TEX_EYES_BAKED);
00158                 update_texture_ctrl(avatarp, mBakedUpper,       LLVOAvatar::TEX_UPPER_BAKED);
00159                 update_texture_ctrl(avatarp, mBakedLower,       LLVOAvatar::TEX_LOWER_BAKED);
00160                 update_texture_ctrl(avatarp, mBakedSkirt,       LLVOAvatar::TEX_SKIRT_BAKED);
00161 
00162                 update_texture_ctrl(avatarp, mMakeup,           LLVOAvatar::TEX_HEAD_BODYPAINT);
00163                 update_texture_ctrl(avatarp, mHair,                     LLVOAvatar::TEX_HAIR);
00164                 update_texture_ctrl(avatarp, mEye,                      LLVOAvatar::TEX_EYES_IRIS);
00165 
00166                 update_texture_ctrl(avatarp, mShirt,            LLVOAvatar::TEX_UPPER_SHIRT);
00167                 update_texture_ctrl(avatarp, mUpperTattoo,      LLVOAvatar::TEX_UPPER_BODYPAINT);
00168                 update_texture_ctrl(avatarp, mUpperJacket,      LLVOAvatar::TEX_UPPER_JACKET);
00169                 update_texture_ctrl(avatarp, mGloves,           LLVOAvatar::TEX_UPPER_GLOVES);
00170                 update_texture_ctrl(avatarp, mUndershirt,       LLVOAvatar::TEX_UPPER_UNDERSHIRT);
00171 
00172                 update_texture_ctrl(avatarp, mPants,            LLVOAvatar::TEX_LOWER_PANTS);
00173                 update_texture_ctrl(avatarp, mLowerTattoo,      LLVOAvatar::TEX_LOWER_BODYPAINT);
00174                 update_texture_ctrl(avatarp, mShoes,            LLVOAvatar::TEX_LOWER_SHOES);
00175                 update_texture_ctrl(avatarp, mSocks,            LLVOAvatar::TEX_LOWER_SOCKS);
00176                 update_texture_ctrl(avatarp, mJacket,           LLVOAvatar::TEX_LOWER_JACKET);
00177                 update_texture_ctrl(avatarp, mUnderpants,       LLVOAvatar::TEX_LOWER_UNDERPANTS);
00178                 update_texture_ctrl(avatarp, mSkirt,            LLVOAvatar::TEX_SKIRT);
00179         }
00180         else
00181         {
00182                 setTitle(mTitle + ": INVALID AVATAR (" + mID.asString() + ")");
00183         }
00184 }
00185 
00186 #else
00187 
00188 void LLFloaterAvatarTextures::refresh()
00189 {
00190 }
00191 
00192 #endif
00193 
00194 // static
00195 void LLFloaterAvatarTextures::onClickDump(void* data)
00196 {
00197 #if !LL_RELEASE_FOR_DOWNLOAD
00198         LLFloaterAvatarTextures* self = (LLFloaterAvatarTextures*)data;
00199         LLVOAvatar* avatarp = find_avatar(self->mID);
00200         if (!avatarp) return;
00201 
00202         for (S32 i = 0; i < avatarp->getNumTEs(); i++)
00203         {
00204                 const LLTextureEntry* te = avatarp->getTE(i);
00205                 if (!te) continue;
00206 
00207                 llinfos << "Avatar TE " << i << " id " << te->getID() << llendl;
00208         }
00209 #endif
00210 }

Generated on Thu Jul 1 06:08:31 2010 for Second Life Viewer by  doxygen 1.4.7