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
00058 gUICtrlFactory->buildFloater(floaterp, "floater_avatar_textures.xml");
00059
00060 gFloaterView->addChild(floaterp);
00061 floaterp->open();
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];
00146 char lastname[DB_LAST_NAME_BUF_SIZE];
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
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 }