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 "lluictrlfactory.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         LLUICtrlFactory::getInstance()->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 = getChild<LLTextureCtrl>("baked_head");
00071         mBakedEyes = getChild<LLTextureCtrl>("baked_eyes");
00072         mBakedUpper = getChild<LLTextureCtrl>("baked_upper_body");
00073         mBakedLower = getChild<LLTextureCtrl>("baked_lower_body");
00074         mBakedSkirt = getChild<LLTextureCtrl>("baked_skirt");
00075         mHair = getChild<LLTextureCtrl>("hair");
00076         mMakeup = getChild<LLTextureCtrl>("head_bodypaint");
00077         mEye = getChild<LLTextureCtrl>("eye_texture");
00078         mShirt = getChild<LLTextureCtrl>("shirt");
00079         mUpperTattoo = getChild<LLTextureCtrl>("upper_bodypaint");
00080         mUpperJacket = getChild<LLTextureCtrl>("upper_jacket");
00081         mGloves = getChild<LLTextureCtrl>("gloves");
00082         mUndershirt = getChild<LLTextureCtrl>("undershirt");
00083         mPants = getChild<LLTextureCtrl>("pants");
00084         mLowerTattoo = getChild<LLTextureCtrl>("lower_bodypaint");
00085         mShoes = getChild<LLTextureCtrl>("shoes");
00086         mSocks = getChild<LLTextureCtrl>("socks");
00087         mJacket = getChild<LLTextureCtrl>("jacket");
00088         mUnderpants = getChild<LLTextureCtrl>("underpants");
00089         mSkirt = getChild<LLTextureCtrl>("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(LLString("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                 std::string fullname;
00146                 if (gCacheName->getFullName(avatarp->getID(), fullname))
00147                 {
00148                         setTitle(mTitle + ": " + fullname);
00149                 }
00150                 update_texture_ctrl(avatarp, mBakedHead,        LLVOAvatar::TEX_HEAD_BAKED);
00151                 update_texture_ctrl(avatarp, mBakedEyes,        LLVOAvatar::TEX_EYES_BAKED);
00152                 update_texture_ctrl(avatarp, mBakedUpper,       LLVOAvatar::TEX_UPPER_BAKED);
00153                 update_texture_ctrl(avatarp, mBakedLower,       LLVOAvatar::TEX_LOWER_BAKED);
00154                 update_texture_ctrl(avatarp, mBakedSkirt,       LLVOAvatar::TEX_SKIRT_BAKED);
00155 
00156                 update_texture_ctrl(avatarp, mMakeup,           LLVOAvatar::TEX_HEAD_BODYPAINT);
00157                 update_texture_ctrl(avatarp, mHair,                     LLVOAvatar::TEX_HAIR);
00158                 update_texture_ctrl(avatarp, mEye,                      LLVOAvatar::TEX_EYES_IRIS);
00159 
00160                 update_texture_ctrl(avatarp, mShirt,            LLVOAvatar::TEX_UPPER_SHIRT);
00161                 update_texture_ctrl(avatarp, mUpperTattoo,      LLVOAvatar::TEX_UPPER_BODYPAINT);
00162                 update_texture_ctrl(avatarp, mUpperJacket,      LLVOAvatar::TEX_UPPER_JACKET);
00163                 update_texture_ctrl(avatarp, mGloves,           LLVOAvatar::TEX_UPPER_GLOVES);
00164                 update_texture_ctrl(avatarp, mUndershirt,       LLVOAvatar::TEX_UPPER_UNDERSHIRT);
00165 
00166                 update_texture_ctrl(avatarp, mPants,            LLVOAvatar::TEX_LOWER_PANTS);
00167                 update_texture_ctrl(avatarp, mLowerTattoo,      LLVOAvatar::TEX_LOWER_BODYPAINT);
00168                 update_texture_ctrl(avatarp, mShoes,            LLVOAvatar::TEX_LOWER_SHOES);
00169                 update_texture_ctrl(avatarp, mSocks,            LLVOAvatar::TEX_LOWER_SOCKS);
00170                 update_texture_ctrl(avatarp, mJacket,           LLVOAvatar::TEX_LOWER_JACKET);
00171                 update_texture_ctrl(avatarp, mUnderpants,       LLVOAvatar::TEX_LOWER_UNDERPANTS);
00172                 update_texture_ctrl(avatarp, mSkirt,            LLVOAvatar::TEX_SKIRT);
00173         }
00174         else
00175         {
00176                 setTitle(mTitle + ": INVALID AVATAR (" + mID.asString() + ")");
00177         }
00178 }
00179 
00180 #else
00181 
00182 void LLFloaterAvatarTextures::refresh()
00183 {
00184 }
00185 
00186 #endif
00187 
00188 // static
00189 void LLFloaterAvatarTextures::onClickDump(void* data)
00190 {
00191 #if !LL_RELEASE_FOR_DOWNLOAD
00192         LLFloaterAvatarTextures* self = (LLFloaterAvatarTextures*)data;
00193         LLVOAvatar* avatarp = find_avatar(self->mID);
00194         if (!avatarp) return;
00195 
00196         for (S32 i = 0; i < avatarp->getNumTEs(); i++)
00197         {
00198                 const LLTextureEntry* te = avatarp->getTE(i);
00199                 if (!te) continue;
00200 
00201                 llinfos << "Avatar TE " << i << " id " << te->getID() << llendl;
00202         }
00203 #endif
00204 }

Generated on Fri May 16 08:33:22 2008 for SecondLife by  doxygen 1.5.5