SL-14190 moved sAvatarDictionary
parent
af3d4fdf4e
commit
5e7a0a963e
|
|
@ -175,6 +175,7 @@ LLXmlTree LLAvatarAppearance::sXMLTree;
|
|||
LLXmlTree LLAvatarAppearance::sSkeletonXMLTree;
|
||||
LLAvatarSkeletonInfo* LLAvatarAppearance::sAvatarSkeletonInfo = NULL;
|
||||
LLAvatarAppearance::LLAvatarXmlInfo* LLAvatarAppearance::sAvatarXmlInfo = NULL;
|
||||
LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* LLAvatarAppearance::sAvatarDictionary = NULL;
|
||||
|
||||
|
||||
LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
|
||||
|
|
@ -202,7 +203,7 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
|
|||
mBakedTextureDatas[i].mIsLoaded = false;
|
||||
mBakedTextureDatas[i].mIsUsed = false;
|
||||
mBakedTextureDatas[i].mMaskTexName = 0;
|
||||
mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i);
|
||||
mBakedTextureDatas[i].mTextureIndex = sAvatarDictionary->bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -215,8 +216,8 @@ void LLAvatarAppearance::initInstance()
|
|||
mRoot = createAvatarJoint();
|
||||
mRoot->setName( "mRoot" );
|
||||
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = sAvatarDictionary->getMeshEntries().begin();
|
||||
iter != sAvatarDictionary->getMeshEntries().end();
|
||||
++iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = iter->first;
|
||||
|
|
@ -261,8 +262,8 @@ void LLAvatarAppearance::initInstance()
|
|||
//-------------------------------------------------------------------------
|
||||
// associate baked textures with meshes
|
||||
//-------------------------------------------------------------------------
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = sAvatarDictionary->getMeshEntries().begin();
|
||||
iter != sAvatarDictionary->getMeshEntries().end();
|
||||
++iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = iter->first;
|
||||
|
|
@ -336,6 +337,12 @@ void LLAvatarAppearance::initClass()
|
|||
//static
|
||||
void LLAvatarAppearance::initClass(const std::string& avatar_file_name_arg, const std::string& skeleton_file_name_arg)
|
||||
{
|
||||
// init dictionary (don't repeat on second login attempt)
|
||||
if (!sAvatarDictionary)
|
||||
{
|
||||
sAvatarDictionary = new LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary();
|
||||
}
|
||||
|
||||
std::string avatar_file_name;
|
||||
|
||||
if (!avatar_file_name_arg.empty())
|
||||
|
|
@ -453,7 +460,8 @@ void LLAvatarAppearance::initClass(const std::string& avatar_file_name_arg, cons
|
|||
void LLAvatarAppearance::cleanupClass()
|
||||
{
|
||||
delete_and_clear(sAvatarXmlInfo);
|
||||
// *TODO: What about sAvatarSkeletonInfo ???
|
||||
delete_and_clear(sAvatarDictionary);
|
||||
delete_and_clear(sAvatarSkeletonInfo);
|
||||
sSkeletonXMLTree.cleanup();
|
||||
sXMLTree.cleanup();
|
||||
}
|
||||
|
|
@ -999,7 +1007,7 @@ BOOL LLAvatarAppearance::loadAvatar()
|
|||
{
|
||||
LLAvatarXmlInfo::LLAvatarMorphInfo *info = *iter;
|
||||
|
||||
EBakedTextureIndex baked = LLAvatarAppearanceDictionary::getInstance()->findBakedByRegionName(info->mRegion);
|
||||
EBakedTextureIndex baked = sAvatarDictionary->findBakedByRegionName(info->mRegion);
|
||||
if (baked != BAKED_NUM_INDICES)
|
||||
{
|
||||
LLVisualParam* morph_param;
|
||||
|
|
@ -1135,8 +1143,8 @@ BOOL LLAvatarAppearance::loadMeshNodes()
|
|||
switch(lod)
|
||||
case 0:
|
||||
mesh = &mHairMesh0; */
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = sAvatarDictionary->getMeshEntries().begin();
|
||||
mesh_iter != sAvatarDictionary->getMeshEntries().end();
|
||||
++mesh_iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = mesh_iter->first;
|
||||
|
|
@ -1264,8 +1272,8 @@ BOOL LLAvatarAppearance::loadLayersets()
|
|||
|
||||
// scan baked textures and associate the layerset with the appropriate one
|
||||
EBakedTextureIndex baked_index = BAKED_NUM_INDICES;
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = sAvatarDictionary->getBakedTextures().begin();
|
||||
baked_iter != sAvatarDictionary->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
|
|
|
|||
|
|
@ -255,6 +255,7 @@ public:
|
|||
public:
|
||||
virtual void updateMeshTextures() = 0;
|
||||
virtual void dirtyMesh() = 0; // Dirty the avatar mesh
|
||||
static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }
|
||||
protected:
|
||||
virtual void dirtyMesh(S32 priority) = 0; // Dirty the avatar mesh, with priority
|
||||
|
||||
|
|
@ -263,6 +264,9 @@ protected:
|
|||
polymesh_map_t mPolyMeshes;
|
||||
avatar_joint_list_t mMeshLOD;
|
||||
|
||||
// mesh entries and backed textures
|
||||
static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;
|
||||
|
||||
/** Meshes
|
||||
** **
|
||||
*******************************************************************************/
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ LLAvatarAppearanceDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,
|
|||
}
|
||||
}
|
||||
|
||||
ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index)
|
||||
ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index) const
|
||||
{
|
||||
return getBakedTexture(index)->mTextureIndex;
|
||||
}
|
||||
|
|
@ -301,7 +301,7 @@ EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByImageName(std::strin
|
|||
return BAKED_NUM_INDICES;
|
||||
}
|
||||
|
||||
LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index )
|
||||
LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index ) const
|
||||
{
|
||||
return getTexture(index)->mWearableType;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,13 +143,14 @@ typedef std::vector<LLWearableType::EType> wearables_vec_t;
|
|||
//
|
||||
// This holds const data - it is initialized once and the contents never change after that.
|
||||
//------------------------------------------------------------------------
|
||||
class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary>
|
||||
class LLAvatarAppearanceDictionary
|
||||
{
|
||||
//--------------------------------------------------------------------
|
||||
// Constructors and Destructors
|
||||
//--------------------------------------------------------------------
|
||||
LLSINGLETON(LLAvatarAppearanceDictionary);
|
||||
virtual ~LLAvatarAppearanceDictionary();
|
||||
public:
|
||||
LLAvatarAppearanceDictionary();
|
||||
~LLAvatarAppearanceDictionary();
|
||||
private:
|
||||
void createAssociations();
|
||||
|
||||
|
|
@ -235,14 +236,14 @@ public:
|
|||
//--------------------------------------------------------------------
|
||||
public:
|
||||
// Convert from baked texture to associated texture; e.g. BAKED_HEAD -> TEX_HEAD_BAKED
|
||||
ETextureIndex bakedToLocalTextureIndex(EBakedTextureIndex t);
|
||||
ETextureIndex bakedToLocalTextureIndex(EBakedTextureIndex t) const;
|
||||
|
||||
// find a baked texture index based on its name
|
||||
EBakedTextureIndex findBakedByRegionName(std::string name);
|
||||
EBakedTextureIndex findBakedByImageName(std::string name);
|
||||
|
||||
// Given a texture entry, determine which wearable type owns it.
|
||||
LLWearableType::EType getTEWearableType(ETextureIndex index);
|
||||
LLWearableType::EType getTEWearableType(ETextureIndex index) const;
|
||||
|
||||
static BOOL isBakedImageId(const LLUUID& id);
|
||||
static EBakedTextureIndex assetIdToBakedTextureIndex(const LLUUID& id);
|
||||
|
|
|
|||
|
|
@ -728,8 +728,8 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)
|
|||
/* if ("upper_shirt" == local_texture_name)
|
||||
mLocalTexture = TEX_UPPER_SHIRT; */
|
||||
mLocalTexture = TEX_NUM_INDICES;
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
iter++)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
|
|
@ -979,7 +979,7 @@ LLWearableType::EType LLTexLayerInterface::getWearableType() const
|
|||
|
||||
return type;
|
||||
}
|
||||
return LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(te);
|
||||
return LLAvatarAppearance::getDictionary()->getTEWearableType(te);
|
||||
}
|
||||
|
||||
LLTexLayerInterface::ERenderPass LLTexLayerInterface::getRenderPass() const
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ void LLWearable::createVisualParams(LLAvatarAppearance *avatarp)
|
|||
void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp)
|
||||
{
|
||||
LLTexLayerSet *layer_set = NULL;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)te);
|
||||
if (texture_dict && texture_dict->mIsUsedByBakedTexture)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
|
|
@ -606,7 +606,7 @@ void LLWearable::syncImages(te_map_t &src, te_map_t &dst)
|
|||
// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = src.find(te);
|
||||
LLUUID image_id;
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ U32 LLWearableData::getWearableCount(const LLWearableType::EType type) const
|
|||
|
||||
U32 LLWearableData::getWearableCount(const U32 tex_index) const
|
||||
{
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
|
||||
return getWearableCount(wearable_type);
|
||||
}
|
||||
|
||||
|
|
@ -349,7 +349,7 @@ LLUUID LLWearableData::computeBakedTextureHash(LLAvatarAppearanceDefines::EBaked
|
|||
LLUUID hash_id;
|
||||
bool hash_computed = false;
|
||||
LLMD5 hash;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index);
|
||||
|
||||
for (U8 i=0; i < baked_dict->mWearables.size(); i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ BOOL LLFloaterAvatarTextures::postBuild()
|
|||
{
|
||||
for (U32 i=0; i < TEX_NUM_INDICES; i++)
|
||||
{
|
||||
const std::string tex_name = LLAvatarAppearanceDictionary::getInstance()->getTexture(ETextureIndex(i))->mName;
|
||||
const std::string tex_name = LLAvatarAppearance::getDictionary()->getTexture(ETextureIndex(i))->mName;
|
||||
mTextures[i] = getChild<LLTextureCtrl>(tex_name);
|
||||
}
|
||||
mTitle = getTitle();
|
||||
|
|
@ -77,7 +77,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp,
|
|||
ETextureIndex te)
|
||||
{
|
||||
LLUUID id = IMG_DEFAULT_AVATAR;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture(te);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearance::getDictionary()->getTexture(te);
|
||||
if (tex_entry && tex_entry->mIsLocalTexture)
|
||||
{
|
||||
if (avatarp->isSelf())
|
||||
|
|
@ -165,14 +165,14 @@ void LLFloaterAvatarTextures::onClickDump(void* data)
|
|||
const LLTextureEntry* te = avatarp->getTE(i);
|
||||
if (!te) continue;
|
||||
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)(i));
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)(i));
|
||||
if (!tex_entry)
|
||||
continue;
|
||||
|
||||
if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))
|
||||
{
|
||||
LLUUID id = IMG_DEFAULT_AVATAR;
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)i);
|
||||
if (avatarp->isSelf())
|
||||
{
|
||||
LLViewerWearable *wearable = gAgentWearables.getViewerWearable(wearable_type, 0);
|
||||
|
|
|
|||
|
|
@ -423,8 +423,8 @@ void LLAvatarTexBar::draw()
|
|||
LLColor4 color;
|
||||
|
||||
U32 line_num = 1;
|
||||
for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearance::getDictionary()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
|
||||
|
|
|
|||
|
|
@ -7892,7 +7892,7 @@ void handle_grab_baked_texture(void* data)
|
|||
if(folder_id.notNull())
|
||||
{
|
||||
std::string name;
|
||||
name = "Baked " + LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture";
|
||||
name = "Baked " + LLAvatarAppearance::getDictionary()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture";
|
||||
|
||||
LLUUID item_id;
|
||||
item_id.generate();
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ BOOL LLViewerWearable::isOldVersion() const
|
|||
S32 te_count = 0;
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_count++;
|
||||
if( !is_in_map(mTEMap, te ) )
|
||||
|
|
@ -230,7 +230,7 @@ BOOL LLViewerWearable::isDirty() const
|
|||
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator current_iter = mTEMap.find(te);
|
||||
if(current_iter != mTEMap.end())
|
||||
|
|
@ -276,7 +276,7 @@ void LLViewerWearable::setTexturesToDefaults()
|
|||
{
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
LLUUID id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id );
|
||||
|
|
@ -300,7 +300,7 @@ void LLViewerWearable::setTexturesToDefaults()
|
|||
// virtual
|
||||
LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index) const
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture(index);
|
||||
const std::string &default_image_name = texture_dict ? texture_dict->mDefaultImageName : "";
|
||||
if (default_image_name == "")
|
||||
{
|
||||
|
|
@ -331,7 +331,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
|
|||
// Pull texture entries
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = mTEMap.find(te);
|
||||
LLUUID image_id;
|
||||
|
|
@ -424,7 +424,7 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
|
|||
// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
|
||||
for (S32 te = 0; te < TEX_NUM_INDICES; te++)
|
||||
{
|
||||
if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = src->mTEMap.find(te);
|
||||
LLUUID image_id;
|
||||
|
|
|
|||
|
|
@ -573,7 +573,6 @@ private:
|
|||
//-----------------------------------------------------------------------------
|
||||
// Static Data
|
||||
//-----------------------------------------------------------------------------
|
||||
LLAvatarAppearanceDictionary *LLVOAvatar::sAvatarDictionary = NULL;
|
||||
S32 LLVOAvatar::sFreezeCounter = 0;
|
||||
U32 LLVOAvatar::sMaxNonImpostors = 12; // overridden based on graphics setting
|
||||
F32 LLVOAvatar::sRenderDistance = 256.f;
|
||||
|
|
@ -1025,15 +1024,15 @@ void LLVOAvatar::dumpBakedStatus()
|
|||
{
|
||||
LL_CONT << " Unbaked (";
|
||||
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = sAvatarDictionary->getBakedTextures().begin();
|
||||
iter != sAvatarDictionary->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = LLAvatarAppearance::getDictionary()->getBakedTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = iter->second;
|
||||
const ETextureIndex index = baked_dict->mTextureIndex;
|
||||
if (!inst->isTextureDefined(index))
|
||||
{
|
||||
LL_CONT << " " << (sAvatarDictionary->getTexture(index) ? sAvatarDictionary->getTexture(index)->mName : "");
|
||||
LL_CONT << " " << (LLAvatarAppearance::getDictionary()->getTexture(index) ? LLAvatarAppearance::getDictionary()->getTexture(index)->mName : "");
|
||||
}
|
||||
}
|
||||
LL_CONT << " ) " << inst->getUnbakedPixelAreaRank();
|
||||
|
|
@ -1120,16 +1119,11 @@ void LLVOAvatar::initClass()
|
|||
|
||||
LLControlAvatar::sRegionChangedSlot = gAgent.addRegionChangedCallback(&LLControlAvatar::onRegionChanged);
|
||||
|
||||
// LLAvatarAppearanceDictionary is very freqently used in avatar's rendering,
|
||||
// to the point where overhead of current LLSingleton implementation notiecably
|
||||
// affects performance, so 'buffer' the value.
|
||||
sAvatarDictionary = LLAvatarAppearanceDictionary::getInstance();
|
||||
}
|
||||
|
||||
|
||||
void LLVOAvatar::cleanupClass()
|
||||
{
|
||||
sAvatarDictionary = NULL;
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
|
@ -5194,7 +5188,7 @@ void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids) const
|
|||
{
|
||||
for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
|
||||
{
|
||||
LLWearableType::EType wearable_type = sAvatarDictionary->getTEWearableType((ETextureIndex)texture_index);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)texture_index);
|
||||
U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
|
||||
|
||||
LLViewerFetchedTexture *imagep = NULL;
|
||||
|
|
@ -5203,7 +5197,7 @@ void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids) const
|
|||
imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);
|
||||
if (imagep)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = sAvatarDictionary->getTexture((ETextureIndex)texture_index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)texture_index);
|
||||
if (texture_dict && texture_dict->mIsLocalTexture)
|
||||
{
|
||||
ids.insert(imagep->getID());
|
||||
|
|
@ -5337,7 +5331,7 @@ void LLVOAvatar::updateTextures()
|
|||
mHasGrey = FALSE; // debug
|
||||
for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
|
||||
{
|
||||
LLWearableType::EType wearable_type = sAvatarDictionary->getTEWearableType((ETextureIndex)texture_index);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)texture_index);
|
||||
U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
|
||||
const LLTextureEntry *te = getTE(texture_index);
|
||||
|
||||
|
|
@ -5360,7 +5354,7 @@ void LLVOAvatar::updateTextures()
|
|||
imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);
|
||||
if (imagep)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = sAvatarDictionary->getTexture((ETextureIndex)texture_index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)texture_index);
|
||||
const EBakedTextureIndex baked_index = texture_dict ? texture_dict->mBakedTextureIndex : EBakedTextureIndex::BAKED_NUM_INDICES;
|
||||
if (texture_dict && texture_dict->mIsLocalTexture)
|
||||
{
|
||||
|
|
@ -5535,7 +5529,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
|
|||
return url;
|
||||
}
|
||||
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = sAvatarDictionary->getTexture((ETextureIndex)te);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)te);
|
||||
if (texture_entry != NULL)
|
||||
{
|
||||
url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
|
||||
|
|
@ -7570,8 +7564,8 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
|
|||
break; // Do nothing
|
||||
}
|
||||
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = sAvatarDictionary->getTextures().begin();
|
||||
tex_iter != sAvatarDictionary->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
tex_iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
++tex_iter)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
|
||||
|
|
@ -7584,7 +7578,7 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
|
|||
if (texture_dict->mIsUsedByBakedTexture)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
return isTextureDefined(sAvatarDictionary->getBakedTexture(baked_index)->mTextureIndex);
|
||||
return isTextureDefined(LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index)->mTextureIndex);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -8330,8 +8324,8 @@ void LLVOAvatar::updateMeshTextures()
|
|||
|
||||
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter =
|
||||
sAvatarDictionary->getBakedTextures().begin();
|
||||
baked_iter != sAvatarDictionary->getBakedTextures().end();
|
||||
LLAvatarAppearance::getDictionary()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = baked_iter->first;
|
||||
|
|
@ -8509,7 +8503,7 @@ void LLVOAvatar::releaseComponentTextures()
|
|||
|
||||
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = sAvatarDictionary->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
// skip if this is a skirt and av is not wearing one, or if we don't have a baked texture UUID
|
||||
if (!isTextureDefined(bakedDicEntry->mTextureIndex)
|
||||
&& ( (baked_index != BAKED_SKIRT) || isWearingWearableType(LLWearableType::WT_SKIRT) ))
|
||||
|
|
@ -8528,8 +8522,8 @@ void LLVOAvatar::releaseComponentTextures()
|
|||
void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const
|
||||
{
|
||||
LL_DEBUGS("Avatar") << avString() << (isSelf() ? "Self: " : "Other: ") << context << LL_ENDL;
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin();
|
||||
iter != sAvatarDictionary->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
|
|
@ -9278,8 +9272,8 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
|
|||
self->mBakedTextureDatas[BAKED_HEAD].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1);
|
||||
maskData->mLastDiscardLevel = discard_level; */
|
||||
BOOL found_texture_id = false;
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin();
|
||||
iter != sAvatarDictionary->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
|
||||
|
|
@ -9410,7 +9404,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
|
|||
}
|
||||
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict =
|
||||
sAvatarDictionary->getBakedTexture((EBakedTextureIndex)i);
|
||||
LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)i);
|
||||
for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
|
||||
local_tex_iter != baked_dict->mLocalTextures.end();
|
||||
++local_tex_iter)
|
||||
|
|
@ -9545,7 +9539,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
|
|||
|
||||
for (U8 te = 0; te < TEX_NUM_INDICES; te++)
|
||||
{
|
||||
if (sAvatarDictionary->getTEWearableType((ETextureIndex)te) == type)
|
||||
if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)te) == type)
|
||||
{
|
||||
// MULTIPLE_WEARABLES: extend to multiple wearables?
|
||||
LLViewerTexture* te_image = getImage((ETextureIndex)te, 0);
|
||||
|
|
@ -10456,7 +10450,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
|
|||
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict
|
||||
= sAvatarDictionary->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
= LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
ETextureIndex tex_index = baked_dict->mTextureIndex;
|
||||
if ((tex_index != TEX_SKIRT_BAKED) || (isWearingWearableType(LLWearableType::WT_SKIRT)))
|
||||
{
|
||||
|
|
@ -10521,8 +10515,8 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
|
|||
}
|
||||
|
||||
// print any avatar textures we didn't already know about
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin();
|
||||
iter != sAvatarDictionary->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
|
|
@ -10637,7 +10631,7 @@ BOOL LLVOAvatar::isIndexLocalTexture(ETextureIndex index)
|
|||
{
|
||||
return (index < 0 || index >= TEX_NUM_INDICES)
|
||||
? false
|
||||
: sAvatarDictionary->getTexture(index)->mIsLocalTexture;
|
||||
: LLAvatarAppearance::getDictionary()->getTexture(index)->mIsLocalTexture;
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
@ -10645,15 +10639,15 @@ BOOL LLVOAvatar::isIndexBakedTexture(ETextureIndex index)
|
|||
{
|
||||
return (index < 0 || index >= TEX_NUM_INDICES)
|
||||
? false
|
||||
: sAvatarDictionary->getTexture(index)->mIsBakedTexture;
|
||||
: LLAvatarAppearance::getDictionary()->getTexture(index)->mIsBakedTexture;
|
||||
}
|
||||
|
||||
const std::string LLVOAvatar::getBakedStatusForPrintout() const
|
||||
{
|
||||
std::string line;
|
||||
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin();
|
||||
iter != sAvatarDictionary->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
|
||||
iter != LLAvatarAppearance::getDictionary()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex index = iter->first;
|
||||
|
|
|
|||
|
|
@ -677,9 +677,6 @@ public:
|
|||
public:
|
||||
static BOOL isIndexLocalTexture(LLAvatarAppearanceDefines::ETextureIndex i);
|
||||
static BOOL isIndexBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i);
|
||||
private:
|
||||
static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }
|
||||
static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Messaging
|
||||
|
|
|
|||
Loading…
Reference in New Issue