Created llappearance project. Migrated llvoavatardefines and llwearabletype.
This commit is contained in:
@@ -48,6 +48,7 @@ add_custom_target(prepare DEPENDS ${prepare_depends})
|
||||
add_subdirectory(cmake)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}aistatemachine)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}llaudio)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}llappearance)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}llcharacter)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}llcommon)
|
||||
add_subdirectory(${LIBS_OPEN_PREFIX}llimage)
|
||||
|
||||
@@ -41,6 +41,7 @@ set(cmake_SOURCE_FILES
|
||||
Hunspell.cmake
|
||||
JPEG.cmake
|
||||
LLAddBuildTest.cmake
|
||||
LLAppearance.cmake
|
||||
LLAudio.cmake
|
||||
LLCharacter.cmake
|
||||
LLCommon.cmake
|
||||
|
||||
11
indra/cmake/LLAppearance.cmake
Normal file
11
indra/cmake/LLAppearance.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
# -*- cmake -*-
|
||||
|
||||
include(Variables)
|
||||
|
||||
set(LLAPPEARANCE_INCLUDE_DIRS
|
||||
${LIBS_OPEN_DIR}/llappearance
|
||||
)
|
||||
|
||||
set(LLAPPEARANCE_LIBRARIES llappearance)
|
||||
|
||||
|
||||
89
indra/llappearance/CMakeLists.txt
Normal file
89
indra/llappearance/CMakeLists.txt
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- cmake -*-
|
||||
|
||||
project(llappearance)
|
||||
|
||||
include(00-Common)
|
||||
include(LLCommon)
|
||||
include(LLCharacter)
|
||||
include(LLImage)
|
||||
include(LLInventory)
|
||||
include(LLMath)
|
||||
include(LLMessage)
|
||||
include(LLRender)
|
||||
include(LLVFS)
|
||||
include(LLWindow)
|
||||
include(LLXML)
|
||||
include(Linking)
|
||||
|
||||
include_directories(
|
||||
${LLCOMMON_INCLUDE_DIRS}
|
||||
${LLCHARACTER_INCLUDE_DIRS}
|
||||
${LLIMAGE_INCLUDE_DIRS}
|
||||
${LLINVENTORY_INCLUDE_DIRS}
|
||||
${LLMATH_INCLUDE_DIRS}
|
||||
${LLRENDER_INCLUDE_DIRS}
|
||||
${LLVFS_INCLUDE_DIRS}
|
||||
${LLWINDOW_INCLUDE_DIRS}
|
||||
${LLXML_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(llappearance_SOURCE_FILES
|
||||
#llavatarappearance.cpp
|
||||
#llavatarjoint.cpp
|
||||
#llavatarjointmesh.cpp
|
||||
#lldriverparam.cpp
|
||||
#lllocaltextureobject.cpp
|
||||
#llpolyskeletaldistortion.cpp
|
||||
#llpolymesh.cpp
|
||||
#llpolymorph.cpp
|
||||
#lltexglobalcolor.cpp
|
||||
#lltexlayer.cpp
|
||||
#lltexlayerparams.cpp
|
||||
#lltexturemanagerbridge.cpp
|
||||
#llwearable.cpp
|
||||
#llwearabledata.cpp
|
||||
llwearabletype.cpp
|
||||
#llviewervisualparam.cpp
|
||||
llavatarappearancedefines.cpp
|
||||
)
|
||||
|
||||
set(llappearance_HEADER_FILES
|
||||
CMakeLists.txt
|
||||
|
||||
#llavatarappearance.h
|
||||
#llavatarjoint.h
|
||||
#llavatarjointmesh.h
|
||||
#lldriverparam.h
|
||||
lljointpickname.h
|
||||
#lllocaltextureobject.h
|
||||
#llpolyskeletaldistortion.h
|
||||
#llpolymesh.h
|
||||
#llpolymorph.h
|
||||
#lltexglobalcolor.h
|
||||
#lltexlayer.h
|
||||
#lltexlayerparams.h
|
||||
#lltexturemanagerbridge.h
|
||||
#llwearable.h
|
||||
#llwearabledata.h
|
||||
llwearabletype.h
|
||||
#llviewervisualparam.h
|
||||
llavatarappearancedefines.h
|
||||
)
|
||||
|
||||
set_source_files_properties(${llappearance_HEADER_FILES}
|
||||
PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||
|
||||
list(APPEND llappearance_SOURCE_FILES ${llappearance_HEADER_FILES})
|
||||
|
||||
add_library (llappearance ${llappearance_SOURCE_FILES})
|
||||
|
||||
target_link_libraries(llappearance
|
||||
${LLCHARACTER_LIBRARIES}
|
||||
${LLINVENTORY_LIBRARIES}
|
||||
${LLIMAGE_LIBRARIES}
|
||||
${LLRENDER_LIBRARIES}
|
||||
${LLVFS_LIBRARIES}
|
||||
${LLMATH_LIBRARIES}
|
||||
${LLXML_LIBRARIES}
|
||||
${LLCOMMON_LIBRARIES}
|
||||
)
|
||||
@@ -2,50 +2,43 @@
|
||||
* @file llvoavatar.cpp
|
||||
* @brief Implementation of LLVOAvatar class which is a derivation fo LLViewerObject
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2001-2009, Linden Research, Inc.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llviewercontrol.h" // gSavedSettings
|
||||
#include "linden_common.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
|
||||
const S32 LLVOAvatarDefines::SCRATCH_TEX_WIDTH = 512;
|
||||
const S32 LLVOAvatarDefines::SCRATCH_TEX_HEIGHT = 512;
|
||||
const S32 LLVOAvatarDefines::IMPOSTOR_PERIOD = 2;
|
||||
const S32 LLAvatarAppearanceDefines::SCRATCH_TEX_WIDTH = 512;
|
||||
const S32 LLAvatarAppearanceDefines::SCRATCH_TEX_HEIGHT = 512;
|
||||
const S32 LLAvatarAppearanceDefines::IMPOSTOR_PERIOD = 2;
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
/*********************************************************************************
|
||||
* Edit this function to add/remove/change textures and mesh definitions for avatars.
|
||||
* If these are changed, they MUST be changed in floater_avatar_textures.xml as well!
|
||||
*/
|
||||
|
||||
LLVOAvatarDictionary::Textures::Textures()
|
||||
LLAvatarAppearanceDictionary::Textures::Textures()
|
||||
{
|
||||
addEntry(TEX_HEAD_BODYPAINT, new TextureEntry("head_bodypaint", TRUE, BAKED_NUM_INDICES, "", LLWearableType::WT_SKIN));
|
||||
addEntry(TEX_UPPER_SHIRT, new TextureEntry("upper_shirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultShirtUUID", LLWearableType::WT_SHIRT));
|
||||
@@ -81,7 +74,7 @@ LLVOAvatarDictionary::Textures::Textures()
|
||||
addEntry(TEX_SKIRT_BAKED, new TextureEntry("skirt-baked", FALSE, BAKED_SKIRT));
|
||||
}
|
||||
|
||||
LLVOAvatarDictionary::BakedTextures::BakedTextures()
|
||||
LLAvatarAppearanceDictionary::BakedTextures::BakedTextures()
|
||||
{
|
||||
// Baked textures
|
||||
addEntry(BAKED_HEAD, new BakedEntry(TEX_HEAD_BAKED,
|
||||
@@ -117,36 +110,36 @@ LLVOAvatarDictionary::BakedTextures::BakedTextures()
|
||||
2, LLWearableType::WT_HAIR, LLWearableType::WT_ALPHA));
|
||||
}
|
||||
|
||||
LLVOAvatarDictionary::Meshes::Meshes()
|
||||
LLAvatarAppearanceDictionary::MeshEntries::MeshEntries()
|
||||
{
|
||||
// Meshes
|
||||
addEntry(MESH_ID_HAIR, new MeshEntry(BAKED_HAIR, "hairMesh", 6, LLViewerJoint::PN_4));
|
||||
addEntry(MESH_ID_HEAD, new MeshEntry(BAKED_HEAD, "headMesh", 5, LLViewerJoint::PN_5));
|
||||
addEntry(MESH_ID_EYELASH, new MeshEntry(BAKED_HEAD, "eyelashMesh", 1, LLViewerJoint::PN_0)); // no baked mesh associated currently
|
||||
addEntry(MESH_ID_UPPER_BODY, new MeshEntry(BAKED_UPPER, "upperBodyMesh", 5, LLViewerJoint::PN_1));
|
||||
addEntry(MESH_ID_LOWER_BODY, new MeshEntry(BAKED_LOWER, "lowerBodyMesh", 5, LLViewerJoint::PN_2));
|
||||
addEntry(MESH_ID_EYEBALL_LEFT, new MeshEntry(BAKED_EYES, "eyeBallLeftMesh", 2, LLViewerJoint::PN_3));
|
||||
addEntry(MESH_ID_EYEBALL_RIGHT, new MeshEntry(BAKED_EYES, "eyeBallRightMesh", 2, LLViewerJoint::PN_3));
|
||||
addEntry(MESH_ID_SKIRT, new MeshEntry(BAKED_SKIRT, "skirtMesh", 5, LLViewerJoint::PN_5));
|
||||
// MeshEntries
|
||||
addEntry(MESH_ID_HAIR, new MeshEntry(BAKED_HAIR, "hairMesh", 6, PN_4));
|
||||
addEntry(MESH_ID_HEAD, new MeshEntry(BAKED_HEAD, "headMesh", 5, PN_5));
|
||||
addEntry(MESH_ID_EYELASH, new MeshEntry(BAKED_HEAD, "eyelashMesh", 1, PN_0)); // no baked mesh associated currently
|
||||
addEntry(MESH_ID_UPPER_BODY, new MeshEntry(BAKED_UPPER, "upperBodyMesh", 5, PN_1));
|
||||
addEntry(MESH_ID_LOWER_BODY, new MeshEntry(BAKED_LOWER, "lowerBodyMesh", 5, PN_2));
|
||||
addEntry(MESH_ID_EYEBALL_LEFT, new MeshEntry(BAKED_EYES, "eyeBallLeftMesh", 2, PN_3));
|
||||
addEntry(MESH_ID_EYEBALL_RIGHT, new MeshEntry(BAKED_EYES, "eyeBallRightMesh", 2, PN_3));
|
||||
addEntry(MESH_ID_SKIRT, new MeshEntry(BAKED_SKIRT, "skirtMesh", 5, PN_5));
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*********************************************************************************/
|
||||
|
||||
LLVOAvatarDictionary::LLVOAvatarDictionary()
|
||||
LLAvatarAppearanceDictionary::LLAvatarAppearanceDictionary()
|
||||
{
|
||||
createAssociations();
|
||||
}
|
||||
|
||||
//virtual
|
||||
LLVOAvatarDictionary::~LLVOAvatarDictionary()
|
||||
LLAvatarAppearanceDictionary::~LLAvatarAppearanceDictionary()
|
||||
{
|
||||
}
|
||||
|
||||
// Baked textures are composites of textures; for each such composited texture,
|
||||
// map it to the baked texture.
|
||||
void LLVOAvatarDictionary::createAssociations()
|
||||
void LLAvatarAppearanceDictionary::createAssociations()
|
||||
{
|
||||
for (BakedTextures::const_iterator iter = mBakedTextures.begin(); iter != mBakedTextures.end(); iter++)
|
||||
{
|
||||
@@ -167,7 +160,7 @@ void LLVOAvatarDictionary::createAssociations()
|
||||
|
||||
}
|
||||
|
||||
LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name,
|
||||
LLAvatarAppearanceDictionary::TextureEntry::TextureEntry(const std::string &name,
|
||||
bool is_local_texture,
|
||||
EBakedTextureIndex baked_texture_index,
|
||||
const std::string &default_image_name,
|
||||
@@ -182,17 +175,17 @@ LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name,
|
||||
{
|
||||
}
|
||||
|
||||
LLVOAvatarDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index,
|
||||
LLAvatarAppearanceDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index,
|
||||
const std::string &name,
|
||||
U8 level,
|
||||
LLViewerJoint::PickName pick) :
|
||||
LLJointPickName pick) :
|
||||
LLDictionaryEntry(name),
|
||||
mBakedID(baked_index),
|
||||
mLOD(level),
|
||||
mPickName(pick)
|
||||
{
|
||||
}
|
||||
LLVOAvatarDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,
|
||||
LLAvatarAppearanceDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,
|
||||
const std::string &name,
|
||||
const std::string &hash_name,
|
||||
U32 num_local_textures,
|
||||
@@ -223,18 +216,18 @@ LLVOAvatarDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,
|
||||
}
|
||||
|
||||
// static
|
||||
ETextureIndex LLVOAvatarDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index)
|
||||
ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index)
|
||||
{
|
||||
return LLVOAvatarDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;
|
||||
return LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;
|
||||
}
|
||||
|
||||
//static
|
||||
EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name)
|
||||
EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::string name)
|
||||
{
|
||||
U8 index = 0;
|
||||
while (index < BAKED_NUM_INDICES)
|
||||
{
|
||||
const BakedEntry *be = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index);
|
||||
const BakedEntry *be = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index);
|
||||
if (be && be->mName.compare(name) == 0)
|
||||
{
|
||||
// baked texture found
|
||||
@@ -246,23 +239,8 @@ EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name)
|
||||
return BAKED_NUM_INDICES;
|
||||
}
|
||||
|
||||
//static
|
||||
const LLUUID LLVOAvatarDictionary::getDefaultTextureImageID(ETextureIndex index)
|
||||
{
|
||||
const TextureEntry *texture_dict = getInstance()->getTexture(index);
|
||||
const std::string &default_image_name = texture_dict->mDefaultImageName;
|
||||
if (default_image_name == "")
|
||||
{
|
||||
return IMG_DEFAULT_AVATAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
return LLUUID(gSavedSettings.getString(default_image_name));
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
LLWearableType::EType LLVOAvatarDictionary::getTEWearableType(ETextureIndex index )
|
||||
LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index )
|
||||
{
|
||||
return getInstance()->getTexture(index)->mWearableType;
|
||||
}
|
||||
@@ -3,43 +3,38 @@
|
||||
* @brief Declaration of LLVOAvatar class which is a derivation fo
|
||||
* LLViewerObject
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2001-2009, Linden Research, Inc.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LLVOAVATAR_DEFINES_H
|
||||
#define LLVOAVATAR_DEFINES_H
|
||||
#ifndef LL_AVATARAPPEARANCE_DEFINES_H
|
||||
#define LL_AVATARAPPEARANCE_DEFINES_H
|
||||
|
||||
#include <vector>
|
||||
#include "llwearable.h"
|
||||
#include "llviewerjoint.h"
|
||||
#include "lljointpickname.h"
|
||||
#include "lldictionary.h"
|
||||
#include "llwearabletype.h"
|
||||
#include "lluuid.h"
|
||||
|
||||
namespace LLVOAvatarDefines
|
||||
namespace LLAvatarAppearanceDefines
|
||||
{
|
||||
|
||||
extern const S32 SCRATCH_TEX_WIDTH;
|
||||
@@ -51,6 +46,7 @@ extern const S32 IMPOSTOR_PERIOD;
|
||||
//--------------------------------------------------------------------
|
||||
enum ETextureIndex
|
||||
{
|
||||
TEX_INVALID = -1,
|
||||
TEX_HEAD_BODYPAINT = 0,
|
||||
TEX_UPPER_SHIRT,
|
||||
TEX_LOWER_PANTS,
|
||||
@@ -117,21 +113,21 @@ typedef std::vector<EMeshIndex> mesh_vec_t;
|
||||
typedef std::vector<LLWearableType::EType> wearables_vec_t;
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// LLVOAvatarDictionary
|
||||
// LLAvatarAppearanceDictionary
|
||||
//
|
||||
// Holds dictionary static entries for textures, baked textures, meshes, etc.; i.e.
|
||||
// information that is common to all avatars.
|
||||
//
|
||||
// This holds const data - it is initialized once and the contents never change after that.
|
||||
//------------------------------------------------------------------------
|
||||
class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary>
|
||||
class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary>
|
||||
{
|
||||
//--------------------------------------------------------------------
|
||||
// Constructors and Destructors
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
LLVOAvatarDictionary();
|
||||
virtual ~LLVOAvatarDictionary();
|
||||
LLAvatarAppearanceDictionary();
|
||||
virtual ~LLAvatarAppearanceDictionary();
|
||||
private:
|
||||
void createAssociations();
|
||||
|
||||
@@ -170,22 +166,22 @@ public:
|
||||
struct MeshEntry : public LLDictionaryEntry
|
||||
{
|
||||
MeshEntry(EBakedTextureIndex baked_index,
|
||||
const std::string &name,
|
||||
U8 level,
|
||||
LLViewerJoint::PickName pick);
|
||||
const std::string &name, // names of mesh types as they are used in avatar_lad.xml
|
||||
U8 level,
|
||||
LLJointPickName pick);
|
||||
// Levels of Detail for each mesh. Must match levels of detail present in avatar_lad.xml
|
||||
// Otherwise meshes will be unable to be found, or levels of detail will be ignored
|
||||
const U8 mLOD;
|
||||
const EBakedTextureIndex mBakedID;
|
||||
const LLViewerJoint::PickName mPickName;
|
||||
const U8 mLOD;
|
||||
const EBakedTextureIndex mBakedID;
|
||||
const LLJointPickName mPickName;
|
||||
};
|
||||
|
||||
struct Meshes : public LLDictionary<EMeshIndex, MeshEntry>
|
||||
struct MeshEntries : public LLDictionary<EMeshIndex, MeshEntry>
|
||||
{
|
||||
Meshes();
|
||||
} mMeshes;
|
||||
const MeshEntry* getMesh(EMeshIndex index) const { return mMeshes.lookup(index); }
|
||||
const Meshes& getMeshes() const { return mMeshes; }
|
||||
MeshEntries();
|
||||
} mMeshEntries;
|
||||
const MeshEntry* getMeshEntry(EMeshIndex index) const { return mMeshEntries.lookup(index); }
|
||||
const MeshEntries& getMeshEntries() const { return mMeshEntries; }
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Baked Textures
|
||||
@@ -222,13 +218,11 @@ public:
|
||||
// find a baked texture index based on its name
|
||||
static EBakedTextureIndex findBakedByRegionName(std::string name);
|
||||
|
||||
static const LLUUID getDefaultTextureImageID(ETextureIndex index);
|
||||
|
||||
// Given a texture entry, determine which wearable type owns it.
|
||||
static LLWearableType::EType getTEWearableType(ETextureIndex index);
|
||||
|
||||
}; // End LLVOAvatarDictionary
|
||||
}; // End LLAvatarAppearanceDictionary
|
||||
|
||||
} // End namespace LLVOAvatarDefines
|
||||
} // End namespace LLAvatarAppearanceDefines
|
||||
|
||||
#endif
|
||||
#endif //LL_AVATARAPPEARANCE_DEFINES_H
|
||||
49
indra/llappearance/lljointpickname.h
Normal file
49
indra/llappearance/lljointpickname.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* @file lljointpickname.h
|
||||
* @brief Defines OpenGL seleciton stack names
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LL_LLJOINTPICKNAME_H
|
||||
#define LL_LLJOINTPICKNAME_H
|
||||
|
||||
class LLJoint;
|
||||
|
||||
// Sets the OpenGL selection stack name that is pushed and popped
|
||||
// with this joint state. The default value indicates that no name
|
||||
// should be pushed/popped.
|
||||
enum LLJointPickName
|
||||
{
|
||||
PN_DEFAULT = -1,
|
||||
PN_0 = 0,
|
||||
PN_1 = 1,
|
||||
PN_2 = 2,
|
||||
PN_3 = 3,
|
||||
PN_4 = 4,
|
||||
PN_5 = 5
|
||||
};
|
||||
|
||||
typedef std::vector<LLJoint*> avatar_joint_mesh_list_t;
|
||||
|
||||
#endif // LL_LLJOINTPICKNAME_H
|
||||
@@ -24,24 +24,36 @@
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "linden_common.h"
|
||||
#include "llwearabletype.h"
|
||||
#include "llinventoryfunctions.h"
|
||||
#include "lltrans.h"
|
||||
#include "llinventorytype.h"
|
||||
|
||||
static LLTranslationBridge* sTrans = NULL;
|
||||
|
||||
// static
|
||||
void LLWearableType::initClass(LLTranslationBridge* trans)
|
||||
{
|
||||
sTrans = trans;
|
||||
}
|
||||
|
||||
void LLWearableType::cleanupClass()
|
||||
{
|
||||
delete sTrans;
|
||||
}
|
||||
|
||||
struct WearableEntry : public LLDictionaryEntry
|
||||
{
|
||||
WearableEntry(const std::string &name,
|
||||
const std::string& default_new_name,
|
||||
LLAssetType::EType assetType,
|
||||
LLInventoryIcon::EIconName iconName,
|
||||
LLInventoryType::EIconName iconName,
|
||||
BOOL disable_camera_switch = FALSE,
|
||||
BOOL allow_multiwear = TRUE) :
|
||||
LLDictionaryEntry(name),
|
||||
mAssetType(assetType),
|
||||
mDefaultNewName(default_new_name),
|
||||
//*TODO:Translate
|
||||
mLabel(/*LLTrans::getString*/(name)),
|
||||
mLabel(/*sTrans->getString*/(name)),
|
||||
mIconName(iconName),
|
||||
mDisableCameraSwitch(disable_camera_switch),
|
||||
mAllowMultiwear(allow_multiwear)
|
||||
@@ -51,7 +63,7 @@ struct WearableEntry : public LLDictionaryEntry
|
||||
const LLAssetType::EType mAssetType;
|
||||
const std::string mLabel;
|
||||
const std::string mDefaultNewName; //keep mLabel for backward compatibility
|
||||
LLInventoryIcon::EIconName mIconName;
|
||||
LLInventoryType::EIconName mIconName;
|
||||
BOOL mDisableCameraSwitch;
|
||||
BOOL mAllowMultiwear;
|
||||
};
|
||||
@@ -71,26 +83,26 @@ protected:
|
||||
|
||||
LLWearableDictionary::LLWearableDictionary()
|
||||
{
|
||||
addEntry(LLWearableType::WT_SHAPE, new WearableEntry("shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_SKIN, new WearableEntry("skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_HAIR, new WearableEntry("hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_EYES, new WearableEntry("eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_EYES, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_SHIRT, new WearableEntry("shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_PANTS, new WearableEntry("pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SHOES, new WearableEntry("shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SOCKS, new WearableEntry("socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_JACKET, new WearableEntry("jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_GLOVES, new WearableEntry("gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry("undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry("underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SKIRT, new WearableEntry("skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_ALPHA, new WearableEntry("alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SHAPE, new WearableEntry("shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_SKIN, new WearableEntry("skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_HAIR, new WearableEntry("hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_EYES, new WearableEntry("eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_EYES, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_SHIRT, new WearableEntry("shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_PANTS, new WearableEntry("pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SHOES, new WearableEntry("shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SOCKS, new WearableEntry("socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_JACKET, new WearableEntry("jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_GLOVES, new WearableEntry("gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry("undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry("underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_SKIRT, new WearableEntry("skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_ALPHA, new WearableEntry("alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
|
||||
addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
|
||||
|
||||
addEntry(LLWearableType::WT_PHYSICS, new WearableEntry("physics", "New Physics", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
|
||||
addEntry(LLWearableType::WT_PHYSICS, new WearableEntry("physics", "New Physics", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
|
||||
|
||||
addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
|
||||
addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -138,7 +150,7 @@ LLAssetType::EType LLWearableType::getAssetType(LLWearableType::EType type)
|
||||
}
|
||||
|
||||
// static
|
||||
LLInventoryIcon::EIconName LLWearableType::getIconName(LLWearableType::EType type)
|
||||
LLInventoryType::EIconName LLWearableType::getIconName(LLWearableType::EType type)
|
||||
{
|
||||
const LLWearableDictionary *dict = LLWearableDictionary::getInstance();
|
||||
const WearableEntry *entry = dict->lookup(type);
|
||||
@@ -29,9 +29,16 @@
|
||||
|
||||
#include "llassettype.h"
|
||||
#include "lldictionary.h"
|
||||
#include "llinventoryicon.h"
|
||||
#include "llinventorytype.h"
|
||||
#include "llsingleton.h"
|
||||
|
||||
class LLTranslationBridge
|
||||
{
|
||||
public:
|
||||
virtual std::string getString(const std::string &xml_desc) = 0;
|
||||
};
|
||||
|
||||
|
||||
class LLWearableType
|
||||
{
|
||||
public:
|
||||
@@ -59,12 +66,15 @@ public:
|
||||
WT_NONE = -1,
|
||||
};
|
||||
|
||||
static void initClass(LLTranslationBridge* trans); // initializes static members
|
||||
static void cleanupClass(); // initializes static members
|
||||
|
||||
static const std::string& getTypeName(EType type);
|
||||
static const std::string& getTypeDefaultNewName(EType type);
|
||||
static const std::string& getTypeLabel(EType type);
|
||||
static LLAssetType::EType getAssetType(EType type);
|
||||
static EType typeNameToType(const std::string& type_name);
|
||||
static LLInventoryIcon::EIconName getIconName(EType type);
|
||||
static LLInventoryType::EIconName getIconName(EType type);
|
||||
static BOOL getDisableCameraSwitch(EType type);
|
||||
static BOOL getAllowMultiwear(EType type);
|
||||
|
||||
@@ -74,6 +74,53 @@ public:
|
||||
IT_NONE = -1
|
||||
};
|
||||
|
||||
enum EIconName
|
||||
{
|
||||
ICONNAME_TEXTURE,
|
||||
ICONNAME_SOUND,
|
||||
ICONNAME_CALLINGCARD_ONLINE,
|
||||
ICONNAME_CALLINGCARD_OFFLINE,
|
||||
ICONNAME_LANDMARK,
|
||||
ICONNAME_LANDMARK_VISITED,
|
||||
ICONNAME_SCRIPT,
|
||||
ICONNAME_CLOTHING,
|
||||
ICONNAME_OBJECT,
|
||||
ICONNAME_OBJECT_MULTI,
|
||||
ICONNAME_NOTECARD,
|
||||
ICONNAME_BODYPART,
|
||||
ICONNAME_SNAPSHOT,
|
||||
|
||||
ICONNAME_BODYPART_SHAPE,
|
||||
ICONNAME_BODYPART_SKIN,
|
||||
ICONNAME_BODYPART_HAIR,
|
||||
ICONNAME_BODYPART_EYES,
|
||||
ICONNAME_CLOTHING_SHIRT,
|
||||
ICONNAME_CLOTHING_PANTS,
|
||||
ICONNAME_CLOTHING_SHOES,
|
||||
ICONNAME_CLOTHING_SOCKS,
|
||||
ICONNAME_CLOTHING_JACKET,
|
||||
ICONNAME_CLOTHING_GLOVES,
|
||||
ICONNAME_CLOTHING_UNDERSHIRT,
|
||||
ICONNAME_CLOTHING_UNDERPANTS,
|
||||
ICONNAME_CLOTHING_SKIRT,
|
||||
ICONNAME_CLOTHING_ALPHA,
|
||||
ICONNAME_CLOTHING_TATTOO,
|
||||
|
||||
ICONNAME_ANIMATION,
|
||||
ICONNAME_GESTURE,
|
||||
|
||||
ICONNAME_CLOTHING_PHYSICS,
|
||||
|
||||
ICONNAME_LINKITEM,
|
||||
ICONNAME_LINKFOLDER,
|
||||
ICONNAME_MESH,
|
||||
|
||||
ICONNAME_INVALID,
|
||||
ICONNAME_COUNT,
|
||||
ICONNAME_NONE = -1
|
||||
};
|
||||
|
||||
|
||||
// machine transation between type and strings
|
||||
static EType lookup(const std::string& name);
|
||||
static const std::string &lookup(EType type);
|
||||
|
||||
@@ -44,6 +44,7 @@ include(UI)
|
||||
include(LLKDU)
|
||||
include(ViewerMiscLibs)
|
||||
include(ViewerArtwork.cmake)
|
||||
include(LLAppearance)
|
||||
|
||||
if (WINDOWS)
|
||||
include(CopyWinLibs)
|
||||
@@ -70,6 +71,7 @@ include_directories(
|
||||
${LLVFS_INCLUDE_DIRS}
|
||||
${LLWINDOW_INCLUDE_DIRS}
|
||||
${LLXML_INCLUDE_DIRS}
|
||||
${LLAPPEARANCE_INCLUDE_DIRS}
|
||||
# ${LSCRIPT_INCLUDE_DIRS}
|
||||
# ${LSCRIPT_INCLUDE_DIRS}/lscript_compile
|
||||
)
|
||||
@@ -515,7 +517,6 @@ set(viewer_SOURCE_FILES
|
||||
llvlcomposition.cpp
|
||||
llvlmanager.cpp
|
||||
llvoavatar.cpp
|
||||
llvoavatardefines.cpp
|
||||
llvoavatarself.cpp
|
||||
llvocache.cpp
|
||||
llvoclouds.cpp
|
||||
@@ -537,7 +538,6 @@ set(viewer_SOURCE_FILES
|
||||
llwaterparamset.cpp
|
||||
llwearable.cpp
|
||||
llwearablelist.cpp
|
||||
llwearabletype.cpp
|
||||
llweb.cpp
|
||||
llwebprofile.cpp
|
||||
llwind.cpp
|
||||
@@ -1026,7 +1026,6 @@ set(viewer_HEADER_FILES
|
||||
llvlcomposition.h
|
||||
llvlmanager.h
|
||||
llvoavatar.h
|
||||
llvoavatardefines.h
|
||||
llvoavatarself.h
|
||||
llvocache.h
|
||||
llvoclouds.h
|
||||
@@ -1049,7 +1048,6 @@ set(viewer_HEADER_FILES
|
||||
llwaterparamset.h
|
||||
llwearable.h
|
||||
llwearablelist.h
|
||||
llwearabletype.h
|
||||
llweb.h
|
||||
llwebprofile.h
|
||||
llwind.h
|
||||
@@ -1582,6 +1580,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${XMLRPCEPI_LIBRARIES}
|
||||
${ELFIO_LIBRARIES}
|
||||
${HUNSPELL_LIBRARY}
|
||||
${LLAPPEARANCE_LIBRARIES}
|
||||
)
|
||||
|
||||
if (LINUX)
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
#include "NACLantispam.h" // for NaCl Antispam Registry
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
const BOOL ANIMATE = TRUE;
|
||||
const U8 AGENT_STATE_TYPING = 0x04;
|
||||
@@ -3360,7 +3360,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
|
||||
|
||||
if ((S32)texture_index < TEX_NUM_INDICES )
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_entry = LLVOAvatarDictionary::instance().getTexture((ETextureIndex)texture_index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_entry = LLAvatarAppearanceDictionary::instance().getTexture((ETextureIndex)texture_index);
|
||||
if (texture_entry)
|
||||
{
|
||||
EBakedTextureIndex baked_index = texture_entry->mBakedTextureIndex;
|
||||
@@ -3956,7 +3956,7 @@ void LLAgent::sendAgentSetAppearance()
|
||||
|
||||
for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )
|
||||
{
|
||||
const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
|
||||
const ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
|
||||
|
||||
// if we're not wearing a skirt, we don't need the texture to be baked
|
||||
if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
|
||||
@@ -3979,7 +3979,7 @@ void LLAgent::sendAgentSetAppearance()
|
||||
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
|
||||
{
|
||||
BOOL generate_valid_hash = TRUE;
|
||||
if (isAgentAvatarValid() && !gAgentAvatarp->isBakedTextureFinal((LLVOAvatarDefines::EBakedTextureIndex)baked_index))
|
||||
if (isAgentAvatarValid() && !gAgentAvatarp->isBakedTextureFinal((LLAvatarAppearanceDefines::EBakedTextureIndex)baked_index))
|
||||
{
|
||||
generate_valid_hash = FALSE;
|
||||
LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Not caching baked texture upload for " << (U32)baked_index << " due to being uploaded at low resolution." << LL_ENDL;
|
||||
@@ -3988,7 +3988,7 @@ void LLAgent::sendAgentSetAppearance()
|
||||
const LLUUID hash = gAgentWearables.computeBakedTextureHash((EBakedTextureIndex) baked_index, generate_valid_hash);
|
||||
if (hash.notNull())
|
||||
{
|
||||
ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex) baked_index);
|
||||
ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex) baked_index);
|
||||
msg->nextBlockFast(_PREHASH_WearableData);
|
||||
msg->addUUIDFast(_PREHASH_CacheID, hash);
|
||||
msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index);
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "llagentdata.h" // gAgentID, gAgentSessionID
|
||||
#include "llcharacter.h"
|
||||
#include "llcoordframe.h" // for mFrameAgent
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "v3dmath.h"
|
||||
@@ -887,7 +887,7 @@ private:
|
||||
S32 mNumPendingQueries;
|
||||
S32 mWearablesCacheQueryID; //mTextureCacheQueryID;
|
||||
U32 mUpdateSerialNum; //mAgentWearablesUpdateSerialNum
|
||||
S32 mActiveCacheQueries[LLVOAvatarDefines::BAKED_NUM_INDICES];
|
||||
S32 mActiveCacheQueries[LLAvatarAppearanceDefines::BAKED_NUM_INDICES];
|
||||
};
|
||||
|
||||
extern LLAgentQueryManager gAgentQueryManager;
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
extern LLMenuBarGL* gMenuBarView;
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE;
|
||||
bool LLAgentWearables::mInitialWearablesLoaded = false;
|
||||
// [/SL:KB]
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -949,7 +949,7 @@ U32 LLAgentWearables::getWearableCount(const LLWearableType::EType type) const
|
||||
|
||||
U32 LLAgentWearables::getWearableCount(const U32 tex_index) const
|
||||
{
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((LLVOAvatarDefines::ETextureIndex)tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
|
||||
return getWearableCount(wearable_type);
|
||||
}
|
||||
|
||||
@@ -1162,7 +1162,7 @@ void LLAgentWearables::recoverMissingWearableDone()
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index)
|
||||
void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index)
|
||||
{
|
||||
LLWearable* wearable = getWearable((LLWearableType::EType)wearable_type, wearable_index);
|
||||
if (!wearable)
|
||||
@@ -1806,7 +1806,7 @@ void LLAgentWearables::queryWearableCache()
|
||||
num_queries++;
|
||||
// *NOTE: make sure at least one request gets packed
|
||||
|
||||
ETextureIndex te_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
|
||||
ETextureIndex te_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
|
||||
|
||||
//llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl;
|
||||
gMessageSystem->nextBlockFast(_PREHASH_WearableData);
|
||||
@@ -1831,13 +1831,13 @@ void LLAgentWearables::queryWearableCache()
|
||||
}
|
||||
}
|
||||
|
||||
LLUUID LLAgentWearables::computeBakedTextureHash(LLVOAvatarDefines::EBakedTextureIndex baked_index,
|
||||
LLUUID LLAgentWearables::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
|
||||
BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache
|
||||
{
|
||||
LLUUID hash_id;
|
||||
bool hash_computed = false;
|
||||
LLMD5 hash;
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
|
||||
|
||||
for (U8 i=0; i < baked_dict->mWearables.size(); i++)
|
||||
{
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
// newview
|
||||
#include "llinventorymodel.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
|
||||
class LLInventoryItem;
|
||||
class LLVOAvatarSelf;
|
||||
@@ -130,7 +130,7 @@ public:
|
||||
void setWearableItem(LLInventoryItem* new_item, LLWearable* wearable, bool do_append = false);
|
||||
void setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLWearable* >& wearables, BOOL remove);
|
||||
void setWearableName(const LLUUID& item_id, const std::string& new_name);
|
||||
void addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index);
|
||||
void addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index);
|
||||
U32 getWearableIndex(const LLWearable *wearable) const;
|
||||
|
||||
protected:
|
||||
@@ -179,7 +179,7 @@ protected:
|
||||
public:
|
||||
// Processes the initial wearables update message (if necessary, since the outfit folder makes it redundant)
|
||||
static void processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data);
|
||||
LLUUID computeBakedTextureHash(LLVOAvatarDefines::EBakedTextureIndex baked_index,
|
||||
LLUUID computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
|
||||
BOOL generate_valid_hash = TRUE);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -2,31 +2,25 @@
|
||||
* @file llappearance.h
|
||||
* @brief LLAppearance class definition
|
||||
*
|
||||
* $LicenseInfo:firstyear=2002&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2002-2009, Linden Research, Inc.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
@@ -44,14 +38,14 @@ public:
|
||||
void addParam( S32 id, F32 value ) { mParamMap[id] = value; }
|
||||
F32 getParam( S32 id, F32 defval ) { return get_if_there(mParamMap, id, defval ); }
|
||||
|
||||
void addTexture( S32 te, const LLUUID& uuid ) { if( te < LLVOAvatarDefines::TEX_NUM_INDICES ) mTextures[te] = uuid; }
|
||||
const LLUUID& getTexture( S32 te ) { return ( te < LLVOAvatarDefines::TEX_NUM_INDICES ) ? mTextures[te] : LLUUID::null; }
|
||||
void addTexture( S32 te, const LLUUID& uuid ) { if( te < LLAvatarAppearanceDefines::TEX_NUM_INDICES ) mTextures[te] = uuid; }
|
||||
const LLUUID& getTexture( S32 te ) { return ( te < LLAvatarAppearanceDefines::TEX_NUM_INDICES ) ? mTextures[te] : LLUUID::null; }
|
||||
|
||||
void clear() { mParamMap.clear(); for( S32 i=0; i<LLVOAvatarDefines::TEX_NUM_INDICES; i++ ) mTextures[i].setNull(); }
|
||||
void clear() { mParamMap.clear(); for( S32 i=0; i<LLAvatarAppearanceDefines::TEX_NUM_INDICES; i++ ) mTextures[i].setNull(); }
|
||||
|
||||
typedef std::map<S32, F32> param_map_t;
|
||||
param_map_t mParamMap;
|
||||
LLUUID mTextures[LLVOAvatarDefines::TEX_NUM_INDICES];
|
||||
LLUUID mTextures[LLAvatarAppearanceDefines::TEX_NUM_INDICES];
|
||||
};
|
||||
|
||||
#endif // LL_LLAPPEARANCE_H
|
||||
|
||||
@@ -584,6 +584,15 @@ LLAppViewer::~LLAppViewer()
|
||||
removeMarkerFile();
|
||||
}
|
||||
|
||||
class LLUITranslationBridge : public LLTranslationBridge
|
||||
{
|
||||
public:
|
||||
virtual std::string getString(const std::string &xml_desc)
|
||||
{
|
||||
return LLTrans::getString(xml_desc);
|
||||
}
|
||||
};
|
||||
|
||||
bool LLAppViewer::init()
|
||||
{
|
||||
//
|
||||
@@ -595,6 +604,10 @@ bool LLAppViewer::init()
|
||||
//
|
||||
LLFastTimer::reset();
|
||||
|
||||
// initialize LLWearableType translation bridge.
|
||||
// Memory will be cleaned up in ::cleanupClass()
|
||||
LLWearableType::initClass(new LLUITranslationBridge());
|
||||
|
||||
// <edit>
|
||||
// We can call this early.
|
||||
LLFrameTimer::global_initialization();
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "llviewerobjectlist.h"
|
||||
#include "llvoavatar.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
LLFloaterAvatarTextures::LLFloaterAvatarTextures(const LLUUID& id) :
|
||||
LLFloater(std::string("avatar_texture_debug")),
|
||||
@@ -72,7 +72,7 @@ BOOL LLFloaterAvatarTextures::postBuild()
|
||||
{
|
||||
for (U32 i=0; i < TEX_NUM_INDICES; i++)
|
||||
{
|
||||
const std::string tex_name = LLVOAvatarDictionary::getInstance()->getTexture(ETextureIndex(i))->mName;
|
||||
const std::string tex_name = LLAvatarAppearanceDictionary::getInstance()->getTexture(ETextureIndex(i))->mName;
|
||||
mTextures[i] = getChild<LLTextureCtrl>(tex_name);
|
||||
}
|
||||
mTitle = getTitle();
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "llfloater.h"
|
||||
#include "lluuid.h"
|
||||
#include "llstring.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
|
||||
class LLTextureCtrl;
|
||||
|
||||
@@ -59,7 +59,7 @@ private:
|
||||
private:
|
||||
LLUUID mID;
|
||||
std::string mTitle;
|
||||
LLTextureCtrl* mTextures[LLVOAvatarDefines::TEX_NUM_INDICES];
|
||||
LLTextureCtrl* mTextures[LLAvatarAppearanceDefines::TEX_NUM_INDICES];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
#include "statemachine/aifilepicker.h"
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
// *TODO:translate : The ui xml for this really needs to be integrated with the appearance paramaters
|
||||
|
||||
|
||||
@@ -1676,7 +1676,7 @@ LLUIImagePtr LLItemBridge::getIcon() const
|
||||
mIsLink);
|
||||
}
|
||||
|
||||
return LLInventoryIcon::getIcon(LLInventoryIcon::ICONNAME_OBJECT);
|
||||
return LLInventoryIcon::getIcon(LLInventoryType::ICONNAME_OBJECT);
|
||||
}
|
||||
|
||||
PermissionMask LLItemBridge::getPermissionMask() const
|
||||
|
||||
@@ -41,7 +41,7 @@ struct IconEntry : public LLDictionaryEntry
|
||||
};
|
||||
|
||||
class LLIconDictionary : public LLSingleton<LLIconDictionary>,
|
||||
public LLDictionary<LLInventoryIcon::EIconName, IconEntry>
|
||||
public LLDictionary<LLInventoryType::EIconName, IconEntry>
|
||||
{
|
||||
public:
|
||||
LLIconDictionary();
|
||||
@@ -49,48 +49,48 @@ public:
|
||||
|
||||
LLIconDictionary::LLIconDictionary()
|
||||
{
|
||||
addEntry(LLInventoryIcon::ICONNAME_TEXTURE, new IconEntry("inv_item_texture.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_SOUND, new IconEntry("inv_item_sound.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CALLINGCARD_ONLINE, new IconEntry("inv_item_callingcard_online.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CALLINGCARD_OFFLINE, new IconEntry("inv_item_callingcard_offline.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_LANDMARK, new IconEntry("inv_item_landmark.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_LANDMARK_VISITED, new IconEntry("inv_item_landmark_visited.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_SCRIPT, new IconEntry("inv_item_script.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING, new IconEntry("inv_item_clothing.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_OBJECT, new IconEntry("inv_item_object.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_OBJECT_MULTI, new IconEntry("inv_item_object_multi.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_NOTECARD, new IconEntry("inv_item_notecard.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_BODYPART, new IconEntry("inv_item_skin.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_SNAPSHOT, new IconEntry("inv_item_snapshot.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_TEXTURE, new IconEntry("inv_item_texture.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_SOUND, new IconEntry("inv_item_sound.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CALLINGCARD_ONLINE, new IconEntry("inv_item_callingcard_online.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CALLINGCARD_OFFLINE, new IconEntry("inv_item_callingcard_offline.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_LANDMARK, new IconEntry("inv_item_landmark.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_LANDMARK_VISITED, new IconEntry("inv_item_landmark_visited.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_SCRIPT, new IconEntry("inv_item_script.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING, new IconEntry("inv_item_clothing.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_OBJECT, new IconEntry("inv_item_object.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_OBJECT_MULTI, new IconEntry("inv_item_object_multi.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_NOTECARD, new IconEntry("inv_item_notecard.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_BODYPART, new IconEntry("inv_item_skin.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_SNAPSHOT, new IconEntry("inv_item_snapshot.tga"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_BODYPART_SHAPE, new IconEntry("inv_item_shape.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_BODYPART_SKIN, new IconEntry("inv_item_skin.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_BODYPART_HAIR, new IconEntry("inv_item_hair.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_BODYPART_EYES, new IconEntry("inv_item_eyes.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_BODYPART_SHAPE, new IconEntry("inv_item_shape.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_BODYPART_SKIN, new IconEntry("inv_item_skin.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_BODYPART_HAIR, new IconEntry("inv_item_hair.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_BODYPART_EYES, new IconEntry("inv_item_eyes.tga"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SHIRT, new IconEntry("inv_item_shirt.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_PANTS, new IconEntry("inv_item_pants.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SHOES, new IconEntry("inv_item_shoes.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SOCKS, new IconEntry("inv_item_socks.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_JACKET, new IconEntry("inv_item_jacket.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_GLOVES, new IconEntry("inv_item_gloves.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT, new IconEntry("inv_item_undershirt.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS, new IconEntry("inv_item_underpants.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SKIRT, new IconEntry("inv_item_skirt.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_ALPHA, new IconEntry("inv_item_alpha.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_TATTOO, new IconEntry("inv_item_tattoo.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_ANIMATION, new IconEntry("inv_item_animation.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_GESTURE, new IconEntry("inv_item_gesture.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_SHIRT, new IconEntry("inv_item_shirt.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_PANTS, new IconEntry("inv_item_pants.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_SHOES, new IconEntry("inv_item_shoes.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_SOCKS, new IconEntry("inv_item_socks.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_JACKET, new IconEntry("inv_item_jacket.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_GLOVES, new IconEntry("inv_item_gloves.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, new IconEntry("inv_item_undershirt.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, new IconEntry("inv_item_underpants.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_SKIRT, new IconEntry("inv_item_skirt.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_ALPHA, new IconEntry("inv_item_alpha.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_TATTOO, new IconEntry("inv_item_tattoo.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_ANIMATION, new IconEntry("inv_item_animation.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_GESTURE, new IconEntry("inv_item_gesture.tga"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, new IconEntry("inv_item_physics.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_CLOTHING_PHYSICS, new IconEntry("inv_item_physics.tga"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_LINKITEM, new IconEntry("inv_link_item.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_LINKFOLDER, new IconEntry("inv_link_folder.tga"));
|
||||
addEntry(LLInventoryIcon::ICONNAME_MESH, new IconEntry("inv_item_mesh.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_LINKITEM, new IconEntry("inv_link_item.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_LINKFOLDER, new IconEntry("inv_link_folder.tga"));
|
||||
addEntry(LLInventoryType::ICONNAME_MESH, new IconEntry("inv_item_mesh.tga"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_INVALID, new IconEntry("inv_invalid.png"));
|
||||
addEntry(LLInventoryType::ICONNAME_INVALID, new IconEntry("inv_invalid.png"));
|
||||
|
||||
addEntry(LLInventoryIcon::ICONNAME_NONE, new IconEntry("NONE"));
|
||||
addEntry(LLInventoryType::ICONNAME_NONE, new IconEntry("NONE"));
|
||||
}
|
||||
|
||||
LLUIImagePtr LLInventoryIcon::getIcon(LLAssetType::EType asset_type,
|
||||
@@ -102,7 +102,7 @@ LLUIImagePtr LLInventoryIcon::getIcon(LLAssetType::EType asset_type,
|
||||
return LLUI::getUIImage(icon_name);
|
||||
}
|
||||
|
||||
LLUIImagePtr LLInventoryIcon::getIcon(EIconName idx)
|
||||
LLUIImagePtr LLInventoryIcon::getIcon(LLInventoryType::EIconName idx)
|
||||
{
|
||||
return LLUI::getUIImage(getIconName(idx));
|
||||
}
|
||||
@@ -112,56 +112,56 @@ const std::string& LLInventoryIcon::getIconName(LLAssetType::EType asset_type,
|
||||
U32 misc_flag,
|
||||
BOOL item_is_multi)
|
||||
{
|
||||
EIconName idx = ICONNAME_OBJECT;
|
||||
LLInventoryType::EIconName idx = LLInventoryType::ICONNAME_OBJECT;
|
||||
if (item_is_multi)
|
||||
{
|
||||
idx = ICONNAME_OBJECT_MULTI;
|
||||
idx = LLInventoryType::ICONNAME_OBJECT_MULTI;
|
||||
return getIconName(idx);
|
||||
}
|
||||
|
||||
switch(asset_type)
|
||||
{
|
||||
case LLAssetType::AT_TEXTURE:
|
||||
idx = (inventory_type == LLInventoryType::IT_SNAPSHOT) ? ICONNAME_SNAPSHOT : ICONNAME_TEXTURE;
|
||||
idx = (inventory_type == LLInventoryType::IT_SNAPSHOT) ? LLInventoryType::ICONNAME_SNAPSHOT : LLInventoryType::ICONNAME_TEXTURE;
|
||||
break;
|
||||
case LLAssetType::AT_SOUND:
|
||||
idx = ICONNAME_SOUND;
|
||||
idx = LLInventoryType::ICONNAME_SOUND;
|
||||
break;
|
||||
case LLAssetType::AT_CALLINGCARD:
|
||||
idx = (misc_flag != 0) ? ICONNAME_CALLINGCARD_ONLINE : ICONNAME_CALLINGCARD_OFFLINE;
|
||||
idx = (misc_flag != 0) ? LLInventoryType::ICONNAME_CALLINGCARD_ONLINE : LLInventoryType::ICONNAME_CALLINGCARD_OFFLINE;
|
||||
break;
|
||||
case LLAssetType::AT_LANDMARK:
|
||||
idx = (misc_flag != 0) ? ICONNAME_LANDMARK_VISITED : ICONNAME_LANDMARK;
|
||||
idx = (misc_flag != 0) ? LLInventoryType::ICONNAME_LANDMARK_VISITED : LLInventoryType::ICONNAME_LANDMARK;
|
||||
break;
|
||||
case LLAssetType::AT_SCRIPT:
|
||||
case LLAssetType::AT_LSL_TEXT:
|
||||
case LLAssetType::AT_LSL_BYTECODE:
|
||||
idx = ICONNAME_SCRIPT;
|
||||
idx = LLInventoryType::ICONNAME_SCRIPT;
|
||||
break;
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
case LLAssetType::AT_BODYPART:
|
||||
idx = assignWearableIcon(misc_flag);
|
||||
break;
|
||||
case LLAssetType::AT_NOTECARD:
|
||||
idx = ICONNAME_NOTECARD;
|
||||
idx = LLInventoryType::ICONNAME_NOTECARD;
|
||||
break;
|
||||
case LLAssetType::AT_ANIMATION:
|
||||
idx = ICONNAME_ANIMATION;
|
||||
idx = LLInventoryType::ICONNAME_ANIMATION;
|
||||
break;
|
||||
case LLAssetType::AT_GESTURE:
|
||||
idx = ICONNAME_GESTURE;
|
||||
idx = LLInventoryType::ICONNAME_GESTURE;
|
||||
break;
|
||||
case LLAssetType::AT_LINK:
|
||||
idx = ICONNAME_LINKITEM;
|
||||
idx = LLInventoryType::ICONNAME_LINKITEM;
|
||||
break;
|
||||
case LLAssetType::AT_LINK_FOLDER:
|
||||
idx = ICONNAME_LINKFOLDER;
|
||||
idx = LLInventoryType::ICONNAME_LINKFOLDER;
|
||||
break;
|
||||
case LLAssetType::AT_OBJECT:
|
||||
idx = ICONNAME_OBJECT;
|
||||
idx = LLInventoryType::ICONNAME_OBJECT;
|
||||
break;
|
||||
case LLAssetType::AT_MESH:
|
||||
idx = ICONNAME_MESH;
|
||||
idx = LLInventoryType::ICONNAME_MESH;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -170,13 +170,13 @@ const std::string& LLInventoryIcon::getIconName(LLAssetType::EType asset_type,
|
||||
}
|
||||
|
||||
|
||||
const std::string& LLInventoryIcon::getIconName(EIconName idx)
|
||||
const std::string& LLInventoryIcon::getIconName(LLInventoryType::EIconName idx)
|
||||
{
|
||||
const IconEntry *entry = LLIconDictionary::instance().lookup(idx);
|
||||
return entry->mName;
|
||||
}
|
||||
|
||||
LLInventoryIcon::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag)
|
||||
LLInventoryType::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag)
|
||||
{
|
||||
const LLWearableType::EType wearable_type = LLWearableType::EType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & misc_flag);
|
||||
return LLWearableType::getIconName(wearable_type);
|
||||
|
||||
@@ -35,66 +35,20 @@
|
||||
class LLInventoryIcon
|
||||
{
|
||||
public:
|
||||
enum EIconName
|
||||
{
|
||||
ICONNAME_TEXTURE,
|
||||
ICONNAME_SOUND,
|
||||
ICONNAME_CALLINGCARD_ONLINE,
|
||||
ICONNAME_CALLINGCARD_OFFLINE,
|
||||
ICONNAME_LANDMARK,
|
||||
ICONNAME_LANDMARK_VISITED,
|
||||
ICONNAME_SCRIPT,
|
||||
ICONNAME_CLOTHING,
|
||||
ICONNAME_OBJECT,
|
||||
ICONNAME_OBJECT_MULTI,
|
||||
ICONNAME_NOTECARD,
|
||||
ICONNAME_BODYPART,
|
||||
ICONNAME_SNAPSHOT,
|
||||
|
||||
ICONNAME_BODYPART_SHAPE,
|
||||
ICONNAME_BODYPART_SKIN,
|
||||
ICONNAME_BODYPART_HAIR,
|
||||
ICONNAME_BODYPART_EYES,
|
||||
ICONNAME_CLOTHING_SHIRT,
|
||||
ICONNAME_CLOTHING_PANTS,
|
||||
ICONNAME_CLOTHING_SHOES,
|
||||
ICONNAME_CLOTHING_SOCKS,
|
||||
ICONNAME_CLOTHING_JACKET,
|
||||
ICONNAME_CLOTHING_GLOVES,
|
||||
ICONNAME_CLOTHING_UNDERSHIRT,
|
||||
ICONNAME_CLOTHING_UNDERPANTS,
|
||||
ICONNAME_CLOTHING_SKIRT,
|
||||
ICONNAME_CLOTHING_ALPHA,
|
||||
ICONNAME_CLOTHING_TATTOO,
|
||||
|
||||
ICONNAME_ANIMATION,
|
||||
ICONNAME_GESTURE,
|
||||
|
||||
ICONNAME_CLOTHING_PHYSICS,
|
||||
|
||||
ICONNAME_LINKITEM,
|
||||
ICONNAME_LINKFOLDER,
|
||||
ICONNAME_MESH,
|
||||
|
||||
ICONNAME_INVALID,
|
||||
ICONNAME_COUNT,
|
||||
ICONNAME_NONE = -1
|
||||
};
|
||||
|
||||
static const std::string& getIconName(LLAssetType::EType asset_type,
|
||||
LLInventoryType::EType inventory_type = LLInventoryType::IT_NONE,
|
||||
U32 misc_flag = 0, // different meanings depending on item type
|
||||
BOOL item_is_multi = FALSE);
|
||||
static const std::string& getIconName(EIconName idx);
|
||||
static const std::string& getIconName(LLInventoryType::EIconName idx);
|
||||
|
||||
static LLUIImagePtr getIcon(LLAssetType::EType asset_type,
|
||||
LLInventoryType::EType inventory_type = LLInventoryType::IT_NONE,
|
||||
U32 misc_flag = 0, // different meanings depending on item type
|
||||
BOOL item_is_multi = FALSE);
|
||||
static LLUIImagePtr getIcon(EIconName idx);
|
||||
static LLUIImagePtr getIcon(LLInventoryType::EIconName idx);
|
||||
|
||||
protected:
|
||||
static EIconName assignWearableIcon(U32 misc_flag);
|
||||
static LLInventoryType::EIconName assignWearableIcon(U32 misc_flag);
|
||||
};
|
||||
#endif // LL_LLINVENTORYICON_H
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "llfloatercustomize.h"
|
||||
|
||||
#include "llwearablelist.h"
|
||||
#include "llinventoryicon.h"
|
||||
|
||||
// subparts of the UI for focus, camera position, etc.
|
||||
enum ESubpart {
|
||||
@@ -102,7 +103,7 @@ enum ESubpart {
|
||||
SUBPART_PHYSICS_ADVANCED,
|
||||
};
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
typedef std::vector<ESubpart> subpart_vec_t;
|
||||
|
||||
@@ -707,11 +708,11 @@ BOOL LLPanelEditWearable::postBuild()
|
||||
|
||||
childSetAction("Revert", &LLPanelEditWearable::onRevertButtonClicked, (void*)this );
|
||||
|
||||
configureAlphaCheckbox(LLVOAvatarDefines::TEX_LOWER_ALPHA, "lower alpha texture invisible");
|
||||
configureAlphaCheckbox(LLVOAvatarDefines::TEX_UPPER_ALPHA, "upper alpha texture invisible");
|
||||
configureAlphaCheckbox(LLVOAvatarDefines::TEX_HEAD_ALPHA, "head alpha texture invisible");
|
||||
configureAlphaCheckbox(LLVOAvatarDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");
|
||||
configureAlphaCheckbox(LLVOAvatarDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible");
|
||||
configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_LOWER_ALPHA, "lower alpha texture invisible");
|
||||
configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_UPPER_ALPHA, "upper alpha texture invisible");
|
||||
configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_HEAD_ALPHA, "head alpha texture invisible");
|
||||
configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");
|
||||
configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible");
|
||||
|
||||
{
|
||||
const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mType);
|
||||
@@ -1518,7 +1519,7 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name)
|
||||
void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name)
|
||||
{
|
||||
LLCheckBoxCtrl* checkbox = getChild<LLCheckBoxCtrl>(name, true, false);
|
||||
if(checkbox)
|
||||
@@ -1529,7 +1530,7 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureInde
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te)
|
||||
void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)
|
||||
{
|
||||
if (!checkbox_ctrl) return;
|
||||
if (!getWearable()) return;
|
||||
@@ -1572,7 +1573,7 @@ void LLPanelEditWearable::updateAlphaCheckboxes()
|
||||
for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
|
||||
iter != mAlphaCheckbox2Index.end(); ++iter )
|
||||
{
|
||||
LLVOAvatarDefines::ETextureIndex te = (LLVOAvatarDefines::ETextureIndex)iter->second;
|
||||
LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second;
|
||||
LLCheckBoxCtrl* ctrl = getChild<LLCheckBoxCtrl>(iter->first, true, false);
|
||||
if (ctrl)
|
||||
{
|
||||
@@ -1590,7 +1591,7 @@ void LLPanelEditWearable::initPreviousAlphaTextures()
|
||||
initPreviousAlphaTextureEntry(TEX_LOWER_ALPHA);
|
||||
}
|
||||
|
||||
void LLPanelEditWearable::initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te)
|
||||
void LLPanelEditWearable::initPreviousAlphaTextureEntry(LLAvatarAppearanceDefines::ETextureIndex te)
|
||||
{
|
||||
if(!getWearable())
|
||||
return;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "llpanel.h"
|
||||
#include "llscrollingpanellist.h"
|
||||
#include "llmodaldialog.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "llwearabletype.h"
|
||||
|
||||
class LLAccordionCtrl;
|
||||
@@ -47,7 +47,7 @@ class LLLineEditor;
|
||||
class LLSubpart;
|
||||
class LLWearableSaveAsDialog;
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
class LLPanelEditWearable : public LLPanel
|
||||
{
|
||||
@@ -112,20 +112,20 @@ public:
|
||||
void onTexturePickerCommit(const LLUICtrl*);
|
||||
|
||||
//alpha mask checkboxes
|
||||
void configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name);
|
||||
void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te);
|
||||
void configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name);
|
||||
void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te);
|
||||
void updateAlphaCheckboxes();
|
||||
void initPreviousAlphaTextures();
|
||||
void initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te);
|
||||
void initPreviousAlphaTextureEntry(LLAvatarAppearanceDefines::ETextureIndex te);
|
||||
|
||||
private:
|
||||
|
||||
LLWearableType::EType mType;
|
||||
BOOL mCanTakeOff;
|
||||
typedef std::map<std::string, LLVOAvatarDefines::ETextureIndex> string_texture_index_map_t;
|
||||
typedef std::map<std::string, LLAvatarAppearanceDefines::ETextureIndex> string_texture_index_map_t;
|
||||
string_texture_index_map_t mAlphaCheckbox2Index;
|
||||
|
||||
typedef std::map<LLVOAvatarDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
|
||||
typedef std::map<LLAvatarAppearanceDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
|
||||
s32_uuid_map_t mPreviousAlphaTexture;
|
||||
U32 mCurrentSubpart;
|
||||
U32 mCurrentIndex;
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
//#include "../tools/imdebug/imdebug.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
|
||||
static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
|
||||
@@ -260,7 +260,7 @@ BOOL LLTexLayerSetBuffer::needsRender()
|
||||
}
|
||||
|
||||
// Don't render if we are trying to create a shirt texture but aren't wearing a skirt.
|
||||
if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED &&
|
||||
if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLAvatarAppearanceDefines::TEX_SKIRT_BAKED &&
|
||||
!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
|
||||
{
|
||||
cancelUpload();
|
||||
@@ -676,7 +676,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
|
||||
if (result >= 0)
|
||||
{
|
||||
layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
|
||||
LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
|
||||
LLAvatarAppearanceDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
|
||||
// Update baked texture info with the new UUID
|
||||
U64 now = LLFrameTimer::getTotalTime(); // Record starting time
|
||||
llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
|
||||
@@ -810,7 +810,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) :
|
||||
mAvatar( avatar ),
|
||||
mUpdatesEnabled( FALSE ),
|
||||
mIsVisible( TRUE ),
|
||||
mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD),
|
||||
mBakedTexIndex(LLAvatarAppearanceDefines::BAKED_HEAD),
|
||||
mInfo( NULL )
|
||||
{
|
||||
}
|
||||
@@ -1293,11 +1293,11 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)
|
||||
/* if ("upper_shirt" == local_texture_name)
|
||||
mLocalTexture = TEX_UPPER_SHIRT; */
|
||||
mLocalTexture = TEX_NUM_INDICES;
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
iter++)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (local_texture_name == texture_dict->mName)
|
||||
{
|
||||
mLocalTexture = iter->first;
|
||||
@@ -2170,7 +2170,7 @@ U32 LLTexLayerTemplate::updateWearableCache() const
|
||||
//this isn't a cloneable layer
|
||||
return 0;
|
||||
}
|
||||
LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te);
|
||||
U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
|
||||
U32 added = 0;
|
||||
for (U32 i = 0; i < num_wearables; i++)
|
||||
@@ -2337,7 +2337,7 @@ LLTexLayerInterface* LLTexLayerSet::findLayerByName(const std::string& name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void LLTexLayerSet::cloneTemplates(LLLocalTextureObject *lto, LLVOAvatarDefines::ETextureIndex tex_index, LLWearable *wearable)
|
||||
void LLTexLayerSet::cloneTemplates(LLLocalTextureObject *lto, LLAvatarAppearanceDefines::ETextureIndex tex_index, LLWearable *wearable)
|
||||
{
|
||||
// initialize all texlayers with this texture type for this LTO
|
||||
for( LLTexLayerSet::layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include <deque>
|
||||
#include "lldynamictexture.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "lltexlayerparams.h"
|
||||
|
||||
class LLVOAvatar;
|
||||
@@ -43,6 +43,7 @@ class LLTexLayerInfo;
|
||||
class LLTexLayerSetBuffer;
|
||||
class LLWearable;
|
||||
class LLViewerVisualParam;
|
||||
class LLLocalTextureObject;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// LLTexLayerInterface
|
||||
@@ -207,13 +208,13 @@ public:
|
||||
BOOL isMorphValid() const;
|
||||
void invalidateMorphMasks();
|
||||
LLTexLayerInterface* findLayerByName(const std::string& name);
|
||||
void cloneTemplates(LLLocalTextureObject *lto, LLVOAvatarDefines::ETextureIndex tex_index, LLWearable* wearable);
|
||||
void cloneTemplates(LLLocalTextureObject *lto, LLAvatarAppearanceDefines::ETextureIndex tex_index, LLWearable* wearable);
|
||||
|
||||
LLVOAvatarSelf* getAvatar() const { return mAvatar; }
|
||||
const std::string getBodyRegionName() const;
|
||||
BOOL hasComposite() const { return (mComposite.notNull()); }
|
||||
LLVOAvatarDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
|
||||
void setBakedTexIndex(LLVOAvatarDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
|
||||
LLAvatarAppearanceDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
|
||||
void setBakedTexIndex(LLAvatarAppearanceDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
|
||||
BOOL isVisible() const { return mIsVisible; }
|
||||
|
||||
static BOOL sHasCaches;
|
||||
@@ -227,7 +228,7 @@ private:
|
||||
BOOL mUpdatesEnabled;
|
||||
BOOL mIsVisible;
|
||||
|
||||
LLVOAvatarDefines::EBakedTextureIndex mBakedTexIndex;
|
||||
LLAvatarAppearanceDefines::EBakedTextureIndex mBakedTexIndex;
|
||||
const LLTexLayerSetInfo* mInfo;
|
||||
};
|
||||
|
||||
|
||||
@@ -417,11 +417,11 @@ void LLAvatarTexBar::draw()
|
||||
LLColor4 color;
|
||||
|
||||
U32 line_num = 1;
|
||||
for (LLVOAvatarDefines::LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
|
||||
const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
|
||||
const LLTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index);
|
||||
if (!layerset) continue;
|
||||
const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
// Header Files
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "lljoint.h"
|
||||
#include "lljointpickname.h"
|
||||
|
||||
class LLFace;
|
||||
class LLViewerJointMesh;
|
||||
@@ -103,21 +104,8 @@ public:
|
||||
F32 getLOD() { return mMinPixelArea; }
|
||||
void setLOD( F32 pixelArea ) { mMinPixelArea = pixelArea; }
|
||||
|
||||
// Sets the OpenGL selection stack name that is pushed and popped
|
||||
// with this joint state. The default value indicates that no name
|
||||
// should be pushed/popped.
|
||||
enum PickName
|
||||
{
|
||||
PN_DEFAULT = -1,
|
||||
PN_0 = 0,
|
||||
PN_1 = 1,
|
||||
PN_2 = 2,
|
||||
PN_3 = 3,
|
||||
PN_4 = 4,
|
||||
PN_5 = 5
|
||||
};
|
||||
void setPickName(PickName name) { mPickName = name; }
|
||||
PickName getPickName() { return mPickName; }
|
||||
void setPickName(LLJointPickName name) { mPickName = name; }
|
||||
LLJointPickName getPickName() { return mPickName; }
|
||||
|
||||
virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
|
||||
virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
|
||||
@@ -132,7 +120,7 @@ public:
|
||||
|
||||
public:
|
||||
static BOOL sDisableLOD;
|
||||
std::vector<LLViewerJointMesh*> mMeshParts;
|
||||
avatar_joint_mesh_list_t mMeshParts;
|
||||
void setMeshID( S32 id ) {mMeshID = id;}
|
||||
|
||||
protected:
|
||||
@@ -141,7 +129,7 @@ protected:
|
||||
BOOL mValid;
|
||||
U32 mComponents;
|
||||
F32 mMinPixelArea;
|
||||
PickName mPickName;
|
||||
LLJointPickName mPickName;
|
||||
BOOL mVisible;
|
||||
S32 mMeshID;
|
||||
};
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
using namespace LLOldEvents;
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
void init_client_menu(LLMenuGL* menu);
|
||||
void init_server_menu(LLMenuGL* menu);
|
||||
|
||||
@@ -2316,13 +2316,13 @@ class LLAvatarReloadTextures : public view_listener_t
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(avatar->getID());
|
||||
LLTextureReloader texture_list;
|
||||
for (U32 i = 0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
|
||||
for (U32 i = 0; i < LLAvatarAppearanceDefines::TEX_NUM_INDICES; ++i)
|
||||
{
|
||||
if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))
|
||||
{
|
||||
if(avatar->isSelf())
|
||||
{
|
||||
LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)i);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)i);
|
||||
U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
|
||||
for (U32 wearable_index = 0; wearable_index < num_wearables; wearable_index++)
|
||||
{
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global constants
|
||||
@@ -782,7 +782,7 @@ const LLSD SHClientTagMgr::generateClientTag(const LLVOAvatar* pAvatar) const
|
||||
{
|
||||
for(S32 te = TEX_UPPER_SHIRT; te <= TEX_SKIRT; ++te) //Don't iterate past skirt. The sim doesn't even send those TEs (Those TEs assume TEX_HAIR_BAKED's uuid)
|
||||
{
|
||||
LLWearableType::EType wearable = LLVOAvatarDictionary::getTEWearableType((LLVOAvatarDefines::ETextureIndex)te);
|
||||
LLWearableType::EType wearable = LLAvatarAppearanceDictionary::getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)te);
|
||||
if( wearable != LLWearableType::WT_INVALID &&
|
||||
wearable != LLWearableType::WT_ALPHA &&
|
||||
wearable != LLWearableType::WT_TATTOO &&
|
||||
@@ -941,7 +941,7 @@ LLXmlTree LLVOAvatar::sXMLTree;
|
||||
LLXmlTree LLVOAvatar::sSkeletonXMLTree;
|
||||
LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL;
|
||||
LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL;
|
||||
LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL;
|
||||
LLAvatarAppearanceDictionary *LLVOAvatar::sAvatarDictionary = NULL;
|
||||
S32 LLVOAvatar::sFreezeCounter = 0;
|
||||
U32 LLVOAvatar::sMaxVisible = 50;
|
||||
|
||||
@@ -1073,7 +1073,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
mBakedTextureDatas[i].mIsLoaded = false;
|
||||
mBakedTextureDatas[i].mIsUsed = false;
|
||||
mBakedTextureDatas[i].mMaskTexName = 0;
|
||||
mBakedTextureDatas[i].mTextureIndex = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
|
||||
mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
|
||||
}
|
||||
|
||||
mDirtyMesh = 2; // Dirty geometry, need to regenerate.
|
||||
@@ -1270,7 +1270,7 @@ BOOL LLVOAvatar::isFullyTextured() const
|
||||
{
|
||||
continue; // nonexistent LOD OK.
|
||||
}
|
||||
std::vector<LLViewerJointMesh*>::iterator meshIter = joint->mMeshParts.begin();
|
||||
avatar_joint_mesh_list_t::iterator meshIter = joint->mMeshParts.begin();
|
||||
if (meshIter != joint->mMeshParts.end())
|
||||
{
|
||||
LLViewerJointMesh *mesh = (LLViewerJointMesh *) *meshIter;
|
||||
@@ -1475,15 +1475,15 @@ void LLVOAvatar::dumpBakedStatus()
|
||||
{
|
||||
llcont << " Unbaked (";
|
||||
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = iter->second;
|
||||
const ETextureIndex index = baked_dict->mTextureIndex;
|
||||
if (!inst->isTextureDefined(index))
|
||||
{
|
||||
llcont << " " << LLVOAvatarDictionary::getInstance()->getTexture(index)->mName;
|
||||
llcont << " " << LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mName;
|
||||
}
|
||||
}
|
||||
llcont << " ) " << inst->getUnbakedPixelAreaRank();
|
||||
@@ -1675,12 +1675,12 @@ void LLVOAvatar::initInstance(void)
|
||||
//-------------------------------------------------------------------------
|
||||
mRoot.setName( "mRoot" );
|
||||
|
||||
for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
++iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = iter->first;
|
||||
const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
|
||||
LLViewerJoint* joint = new LLViewerJoint();
|
||||
joint->setName(mesh_dict->mName);
|
||||
joint->setMeshID(mesh_index);
|
||||
@@ -1721,17 +1721,17 @@ void LLVOAvatar::initInstance(void)
|
||||
//-------------------------------------------------------------------------
|
||||
// associate baked textures with meshes
|
||||
//-------------------------------------------------------------------------
|
||||
for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
++iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = iter->first;
|
||||
const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
|
||||
const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID;
|
||||
// Skip it if there's no associated baked texture.
|
||||
if (baked_texture_index == BAKED_NUM_INDICES) continue;
|
||||
|
||||
for (std::vector<LLViewerJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
|
||||
for (avatar_joint_mesh_list_t::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
|
||||
iter != mMeshLOD[mesh_index]->mMeshParts.end();
|
||||
++iter)
|
||||
{
|
||||
@@ -2348,7 +2348,7 @@ void LLVOAvatar::buildCharacter()
|
||||
jointIter != mMeshLOD.end(); ++jointIter)
|
||||
{
|
||||
LLViewerJoint* joint = (LLViewerJoint*) *jointIter;
|
||||
for (std::vector<LLViewerJointMesh*>::iterator meshIter = joint->mMeshParts.begin();
|
||||
for (avatar_joint_mesh_list_t::iterator meshIter = joint->mMeshParts.begin();
|
||||
meshIter != joint->mMeshParts.end(); ++meshIter)
|
||||
{
|
||||
LLViewerJointMesh * mesh = (LLViewerJointMesh *) *meshIter;
|
||||
@@ -5238,7 +5238,7 @@ void LLVOAvatar::updateTextures()
|
||||
mHasGrey = FALSE; // debug
|
||||
for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
|
||||
{
|
||||
LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)texture_index);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)texture_index);
|
||||
U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
|
||||
const LLTextureEntry *te = getTE(texture_index);
|
||||
|
||||
@@ -5261,7 +5261,7 @@ void LLVOAvatar::updateTextures()
|
||||
imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);
|
||||
if (imagep)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
if (texture_dict->mIsLocalTexture)
|
||||
{
|
||||
@@ -6067,7 +6067,7 @@ F32 LLVOAvatar::getPixelArea() const
|
||||
//-----------------------------------------------------------------------------
|
||||
LLPolyMesh* LLVOAvatar::getHeadMesh()
|
||||
{
|
||||
return mMeshLOD[MESH_ID_HEAD]->mMeshParts[0]->getMesh();
|
||||
return ((LLViewerJointMesh*)(mMeshLOD[MESH_ID_HEAD]->mMeshParts[0]))->getMesh();
|
||||
}
|
||||
|
||||
|
||||
@@ -6076,7 +6076,7 @@ LLPolyMesh* LLVOAvatar::getHeadMesh()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLPolyMesh* LLVOAvatar::getUpperBodyMesh()
|
||||
{
|
||||
return mMeshLOD[MESH_ID_UPPER_BODY]->mMeshParts[0]->getMesh();
|
||||
return ((LLViewerJointMesh*)(mMeshLOD[MESH_ID_UPPER_BODY]->mMeshParts[0]))->getMesh();
|
||||
}
|
||||
|
||||
|
||||
@@ -6255,7 +6255,7 @@ BOOL LLVOAvatar::loadAvatar()
|
||||
{
|
||||
LLVOAvatarXmlInfo::LLVOAvatarMorphInfo *info = *iter;
|
||||
|
||||
EBakedTextureIndex baked = LLVOAvatarDictionary::findBakedByRegionName(info->mRegion);
|
||||
EBakedTextureIndex baked = LLAvatarAppearanceDictionary::findBakedByRegionName(info->mRegion);
|
||||
if (baked != BAKED_NUM_INDICES)
|
||||
{
|
||||
LLPolyMorphTarget *morph_param;
|
||||
@@ -6463,12 +6463,12 @@ BOOL LLVOAvatar::loadMeshNodes()
|
||||
switch(lod)
|
||||
case 0:
|
||||
mesh = &mHairMesh0; */
|
||||
for (LLVOAvatarDictionary::Meshes::const_iterator mesh_iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
|
||||
mesh_iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
|
||||
for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
|
||||
mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
|
||||
++mesh_iter)
|
||||
{
|
||||
const EMeshIndex mesh_index = mesh_iter->first;
|
||||
const LLVOAvatarDictionary::MeshEntry *mesh_dict = mesh_iter->second;
|
||||
const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = mesh_iter->second;
|
||||
if (type.compare(mesh_dict->mName) == 0)
|
||||
{
|
||||
mesh_id = mesh_index;
|
||||
@@ -6481,7 +6481,7 @@ BOOL LLVOAvatar::loadMeshNodes()
|
||||
{
|
||||
if (lod < (S32)mMeshLOD[mesh_id]->mMeshParts.size())
|
||||
{
|
||||
mesh = mMeshLOD[mesh_id]->mMeshParts[lod];
|
||||
mesh = (LLViewerJointMesh*)mMeshLOD[mesh_id]->mMeshParts[lod];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -7760,12 +7760,12 @@ void LLVOAvatar::updateMeshTextures()
|
||||
}
|
||||
|
||||
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = baked_iter->first;
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
|
||||
for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
|
||||
local_tex_iter != baked_dict->mLocalTextures.end();
|
||||
@@ -7793,7 +7793,7 @@ void LLVOAvatar::setLocalTexture( ETextureIndex type, LLViewerTexture* in_tex, B
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLVOAvatar::setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
|
||||
void LLVOAvatar::setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
|
||||
{
|
||||
// invalid for anyone but self
|
||||
llassert(0);
|
||||
@@ -7855,7 +7855,7 @@ void LLVOAvatar::addMaskedMorph(EBakedTextureIndex index, LLPolyMorphTarget* mor
|
||||
}
|
||||
|
||||
// returns TRUE if morph masks are present and not valid for a given baked texture, FALSE otherwise
|
||||
BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index)
|
||||
BOOL LLVOAvatar::morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index)
|
||||
{
|
||||
if (index >= BAKED_NUM_INDICES)
|
||||
{
|
||||
@@ -7881,7 +7881,7 @@ BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex inde
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index)
|
||||
void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index)
|
||||
{
|
||||
if (index >= BAKED_NUM_INDICES)
|
||||
{
|
||||
@@ -7920,7 +7920,7 @@ void LLVOAvatar::releaseComponentTextures()
|
||||
|
||||
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry * bakedDicEntry = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = LLAvatarAppearanceDictionary::getInstance()->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) ))
|
||||
@@ -8045,11 +8045,11 @@ LLColor4 LLVOAvatar::getDummyColor()
|
||||
void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const
|
||||
{
|
||||
LL_DEBUGS("Avatar") << avString() << (isSelf() ? "Self: " : "Other: ") << context << LL_ENDL;
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
// TODO: MULTI-WEARABLE: handle multiple textures for self
|
||||
const LLViewerTexture* te_image = getImage(iter->first,0);
|
||||
if( !te_image )
|
||||
@@ -8098,11 +8098,11 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
|
||||
/* switch(type)
|
||||
case LLWearableType::WT_SHIRT:
|
||||
indicator_te = TEX_UPPER_SHIRT; */
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator tex_iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
tex_iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++tex_iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = tex_iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
|
||||
if (texture_dict->mWearableType == type)
|
||||
{
|
||||
// If you're checking another avatar's clothing, you don't have component textures.
|
||||
@@ -8113,7 +8113,7 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
|
||||
if (texture_dict->mIsUsedByBakedTexture)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
return isTextureDefined(LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
|
||||
return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -8552,12 +8552,12 @@ 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 (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (texture_dict->mIsUsedByBakedTexture)
|
||||
{
|
||||
const ETextureIndex texture_index = iter->first;
|
||||
@@ -8675,7 +8675,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
|
||||
{
|
||||
//mBakedTextureDatas[i].mTexLayerSet->destroyComposite();
|
||||
}
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->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)
|
||||
@@ -8732,7 +8732,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
|
||||
|
||||
for (U8 te = 0; te < TEX_NUM_INDICES; te++)
|
||||
{
|
||||
if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te) == type)
|
||||
{
|
||||
// MULTIPLE_WEARABLES: extend to multiple wearables?
|
||||
LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);
|
||||
@@ -9583,7 +9583,7 @@ void LLVOAvatar::idleUpdateRenderCost()
|
||||
|
||||
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
|
||||
ETextureIndex tex_index = baked_dict->mTextureIndex;
|
||||
if ((tex_index != TEX_SKIRT_BAKED) || (isWearingWearableType(LLWearableType::WT_SKIRT)))
|
||||
{
|
||||
@@ -9663,11 +9663,11 @@ void LLVOAvatar::idleUpdateRenderCost()
|
||||
}
|
||||
|
||||
// print any avatar textures we didn't already know about
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
// TODO: MULTI-WEARABLE: handle multiple textures for self
|
||||
const LLViewerTexture* te_image = getImage(iter->first,0);
|
||||
if (!te_image)
|
||||
@@ -9697,26 +9697,26 @@ void LLVOAvatar::idleUpdateRenderCost()
|
||||
BOOL LLVOAvatar::isIndexLocalTexture(ETextureIndex index)
|
||||
{
|
||||
if (index < 0 || index >= TEX_NUM_INDICES) return false;
|
||||
return LLVOAvatarDictionary::getInstance()->getTexture(index)->mIsLocalTexture;
|
||||
return LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mIsLocalTexture;
|
||||
}
|
||||
|
||||
// static
|
||||
BOOL LLVOAvatar::isIndexBakedTexture(ETextureIndex index)
|
||||
{
|
||||
if (index < 0 || index >= TEX_NUM_INDICES) return false;
|
||||
return LLVOAvatarDictionary::getInstance()->getTexture(index)->mIsBakedTexture;
|
||||
return LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mIsBakedTexture;
|
||||
}
|
||||
|
||||
const std::string LLVOAvatar::getBakedStatusForPrintout() const
|
||||
{
|
||||
std::string line;
|
||||
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex index = iter->first;
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (texture_dict->mIsBakedTexture)
|
||||
{
|
||||
line += texture_dict->mName;
|
||||
@@ -9748,7 +9748,7 @@ F32 calc_bouncy_animation(F32 x)
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index ) const
|
||||
BOOL LLVOAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex te, U32 index ) const
|
||||
{
|
||||
if (isIndexLocalTexture(te))
|
||||
{
|
||||
@@ -9766,7 +9766,7 @@ BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
|
||||
BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
|
||||
{
|
||||
if (isIndexLocalTexture(type))
|
||||
{
|
||||
@@ -9782,7 +9782,7 @@ BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 ind
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
|
||||
BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLWearable *wearable) const
|
||||
{
|
||||
// non-self avatars don't have wearables
|
||||
return FALSE;
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
#include "llviewerjointmesh.h"
|
||||
#include "llviewerjointattachment.h"
|
||||
#include "llrendertarget.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "lltexglobalcolor.h"
|
||||
#include "lldriverparam.h"
|
||||
#include "material_codes.h" // LL_MCODE_END
|
||||
@@ -481,9 +481,9 @@ private:
|
||||
// Morph masks
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
BOOL morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
|
||||
void addMaskedMorph(LLVOAvatarDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
|
||||
void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
|
||||
BOOL morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
|
||||
void addMaskedMorph(LLAvatarAppearanceDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
|
||||
void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Visibility
|
||||
@@ -584,9 +584,9 @@ public:
|
||||
// Loading status
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
virtual BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
|
||||
virtual BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
|
||||
virtual BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
|
||||
virtual BOOL isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
|
||||
virtual BOOL isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
|
||||
virtual BOOL isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLWearable *wearable) const;
|
||||
|
||||
BOOL isFullyBaked();
|
||||
static BOOL areAllNearbyInstancesBaked(S32& grey_avatars);
|
||||
@@ -612,7 +612,7 @@ protected:
|
||||
LLTexLayerSet* mTexLayerSet; // Only exists for self
|
||||
bool mIsLoaded;
|
||||
bool mIsUsed;
|
||||
LLVOAvatarDefines::ETextureIndex mTextureIndex;
|
||||
LLAvatarAppearanceDefines::ETextureIndex mTextureIndex;
|
||||
U32 mMaskTexName;
|
||||
// Stores pointers to the joint meshes that this baked texture deals with
|
||||
std::vector< LLViewerJointMesh * > mMeshes; // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
|
||||
@@ -626,10 +626,10 @@ protected:
|
||||
// Local Textures
|
||||
//--------------------------------------------------------------------
|
||||
protected:
|
||||
virtual void setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index = 0);
|
||||
virtual void addLocalTextureStats(LLVOAvatarDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0);
|
||||
virtual void setLocalTexture(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index = 0);
|
||||
virtual void addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0);
|
||||
// MULTI-WEARABLE: make self-only?
|
||||
virtual void setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index = 0);
|
||||
virtual void setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index = 0);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Texture accessors
|
||||
@@ -663,11 +663,11 @@ public:
|
||||
// Static texture/mesh/baked dictionary
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
static BOOL isIndexLocalTexture(LLVOAvatarDefines::ETextureIndex i);
|
||||
static BOOL isIndexBakedTexture(LLVOAvatarDefines::ETextureIndex i);
|
||||
static BOOL isIndexLocalTexture(LLAvatarAppearanceDefines::ETextureIndex i);
|
||||
static BOOL isIndexBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i);
|
||||
private:
|
||||
static const LLVOAvatarDefines::LLVOAvatarDictionary *getDictionary() { return sAvatarDictionary; }
|
||||
static LLVOAvatarDefines::LLVOAvatarDictionary* sAvatarDictionary;
|
||||
static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }
|
||||
static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;
|
||||
static LLVOAvatarSkeletonInfo* sAvatarSkeletonInfo;
|
||||
static LLVOAvatarXmlInfo* sAvatarXmlInfo;
|
||||
|
||||
@@ -748,9 +748,9 @@ public:
|
||||
// Clothing colors (convenience functions to access visual parameters)
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
|
||||
LLColor4 getClothesColor(LLVOAvatarDefines::ETextureIndex te);
|
||||
static BOOL teToColorParams(LLVOAvatarDefines::ETextureIndex te, U32 *param_name);
|
||||
void setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
|
||||
LLColor4 getClothesColor(LLAvatarAppearanceDefines::ETextureIndex te);
|
||||
static BOOL teToColorParams(LLAvatarAppearanceDefines::ETextureIndex te, U32 *param_name);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Global colors
|
||||
|
||||
@@ -80,7 +80,7 @@ BOOL isAgentAvatarValid()
|
||||
(!gAgentAvatarp->isDead()));
|
||||
}
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
/*********************************************************************************
|
||||
** **
|
||||
@@ -161,7 +161,7 @@ void LLVOAvatarSelf::initInstance()
|
||||
llinfos << "Self avatar object created. Starting timer." << llendl;
|
||||
mDebugSelfLoadTimer.reset();
|
||||
// clear all times to -1 for debugging
|
||||
for (U32 i =0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
|
||||
for (U32 i =0; i < LLAvatarAppearanceDefines::TEX_NUM_INDICES; ++i)
|
||||
{
|
||||
for (U32 j = 0; j <= MAX_DISCARD_LEVEL; ++j)
|
||||
{
|
||||
@@ -169,7 +169,7 @@ void LLVOAvatarSelf::initInstance()
|
||||
}
|
||||
}
|
||||
|
||||
for (U32 i =0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
|
||||
for (U32 i =0; i < LLAvatarAppearanceDefines::BAKED_NUM_INDICES; ++i)
|
||||
{
|
||||
mDebugBakedTextureTimes[i][0] = -1.0f;
|
||||
mDebugBakedTextureTimes[i][1] = -1.0f;
|
||||
@@ -509,11 +509,11 @@ BOOL LLVOAvatarSelf::loadLayersets()
|
||||
|
||||
// scan baked textures and associate the layerset with the appropriate one
|
||||
EBakedTextureIndex baked_index = BAKED_NUM_INDICES;
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
if (layer_set->isBodyRegion(baked_dict->mName))
|
||||
{
|
||||
baked_index = baked_iter->first;
|
||||
@@ -725,7 +725,7 @@ U32 LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
// need to trigger a few operations to get the avatar to use the new bakes
|
||||
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
|
||||
{
|
||||
const LLVOAvatarDefines::ETextureIndex te = mBakedTextureDatas[i].mTextureIndex;
|
||||
const LLAvatarAppearanceDefines::ETextureIndex te = mBakedTextureDatas[i].mTextureIndex;
|
||||
LLUUID texture_id = getTEImage(te)->getID();
|
||||
setNewBakedTexture(te, texture_id);
|
||||
mInitialBakeIDs[i] = texture_id;
|
||||
@@ -996,16 +996,16 @@ void LLVOAvatarSelf::updateAttachmentVisibility(U32 camera_mode)
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_result )
|
||||
{
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLAvatarAppearanceDefines::EBakedTextureIndex index = baked_iter->first;
|
||||
|
||||
if (baked_dict)
|
||||
{
|
||||
for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
|
||||
for (LLAvatarAppearanceDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
|
||||
type_iter != baked_dict->mWearables.end();
|
||||
++type_iter)
|
||||
{
|
||||
@@ -1286,9 +1286,9 @@ BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
U32 LLVOAvatarSelf::getNumWearables(LLVOAvatarDefines::ETextureIndex i) const
|
||||
U32 LLVOAvatarSelf::getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const
|
||||
{
|
||||
LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
|
||||
LLWearableType::EType type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(i);
|
||||
return gAgentWearables.getWearableCount(type);
|
||||
}
|
||||
|
||||
@@ -1361,7 +1361,7 @@ BOOL LLVOAvatarSelf::getLocalTextureGL(ETextureIndex type, LLViewerTexture** tex
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LLViewerFetchedTexture* LLVOAvatarSelf::getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, U32 index) const
|
||||
LLViewerFetchedTexture* LLVOAvatarSelf::getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
|
||||
{
|
||||
if (!isIndexLocalTexture(type))
|
||||
{
|
||||
@@ -1402,21 +1402,21 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset)
|
||||
{
|
||||
/* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet)
|
||||
return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = baked_iter->first;
|
||||
if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet)
|
||||
{
|
||||
BOOL ret = true;
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
|
||||
local_tex_iter != baked_dict->mLocalTextures.end();
|
||||
++local_tex_iter)
|
||||
{
|
||||
const ETextureIndex tex_index = *local_tex_iter;
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
|
||||
{
|
||||
@@ -1445,13 +1445,13 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) cons
|
||||
{
|
||||
if (layerset == mBakedTextureDatas[i].mTexLayerSet)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->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)
|
||||
{
|
||||
const ETextureIndex tex_index = *local_tex_iter;
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
|
||||
{
|
||||
@@ -1475,13 +1475,13 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
|
||||
|
||||
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->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)
|
||||
{
|
||||
const ETextureIndex tex_index = *local_tex_iter;
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
|
||||
{
|
||||
@@ -1495,7 +1495,7 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const
|
||||
BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const
|
||||
{
|
||||
const LLTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
|
||||
if (!layerset) return FALSE;
|
||||
@@ -1504,13 +1504,13 @@ BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureI
|
||||
return !layerset_buffer->uploadNeeded();
|
||||
}
|
||||
|
||||
BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const
|
||||
BOOL LLVOAvatarSelf::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
|
||||
{
|
||||
LLUUID id;
|
||||
BOOL isDefined = TRUE;
|
||||
if (isIndexLocalTexture(type))
|
||||
{
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(type);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(type);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
if (index >= wearable_count)
|
||||
{
|
||||
@@ -1537,7 +1537,7 @@ BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
|
||||
BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
|
||||
{
|
||||
if (isIndexBakedTexture(type))
|
||||
{
|
||||
@@ -1550,7 +1550,7 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
|
||||
BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLWearable *wearable) const
|
||||
{
|
||||
if (isIndexBakedTexture(type))
|
||||
{
|
||||
@@ -1573,7 +1573,7 @@ void LLVOAvatarSelf::requestLayerSetUploads()
|
||||
}
|
||||
}
|
||||
|
||||
void LLVOAvatarSelf::requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i)
|
||||
void LLVOAvatarSelf::requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i)
|
||||
{
|
||||
ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex;
|
||||
const BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index));
|
||||
@@ -1758,7 +1758,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
|
||||
llerrs << "Tried to set local texture with invalid type: (" << (U32) type << ", " << index << ")" << llendl;
|
||||
return;
|
||||
}
|
||||
LLWearableType::EType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType(type);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(type);
|
||||
if (!gAgentWearables.getWearable(wearable_type,index))
|
||||
{
|
||||
// no wearable is loaded, cannot set the texture.
|
||||
@@ -1818,7 +1818,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
|
||||
setBakedReady(type,baked_version_ready,index);
|
||||
}
|
||||
//virtual
|
||||
void LLVOAvatarSelf::setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
|
||||
void LLVOAvatarSelf::setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
|
||||
{
|
||||
if (!isIndexLocalTexture(type)) return;
|
||||
LLLocalTextureObject *local_tex_obj = getLocalTextureObject(type,index);
|
||||
@@ -1837,16 +1837,16 @@ void LLVOAvatarSelf::dumpLocalTextures() const
|
||||
/* ETextureIndex baked_equiv[] = {
|
||||
TEX_UPPER_BAKED,
|
||||
if (isTextureDefined(baked_equiv[i])) */
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture)
|
||||
continue;
|
||||
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
const ETextureIndex baked_equiv = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex;
|
||||
const ETextureIndex baked_equiv = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex;
|
||||
|
||||
const std::string &name = texture_dict->mName;
|
||||
const LLLocalTextureObject *local_tex_obj = getLocalTextureObject(iter->first, 0);
|
||||
@@ -2050,21 +2050,21 @@ const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLTexLayer
|
||||
|
||||
/* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet)
|
||||
return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */
|
||||
for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = baked_iter->first;
|
||||
if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
|
||||
text += llformat("%d-%s ( ",baked_index, baked_dict->mName.c_str());
|
||||
for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
|
||||
local_tex_iter != baked_dict->mLocalTextures.end();
|
||||
++local_tex_iter)
|
||||
{
|
||||
const ETextureIndex tex_index = *local_tex_iter;
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
if (wearable_count > 0)
|
||||
{
|
||||
@@ -2091,14 +2091,14 @@ const std::string LLVOAvatarSelf::debugDumpAllLocalTextureDataInfo() const
|
||||
|
||||
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
|
||||
{
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
|
||||
BOOL is_texture_final = TRUE;
|
||||
for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
|
||||
local_tex_iter != baked_dict->mLocalTextures.end();
|
||||
++local_tex_iter)
|
||||
{
|
||||
const ETextureIndex tex_index = *local_tex_iter;
|
||||
const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
|
||||
const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
|
||||
const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
|
||||
for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
|
||||
{
|
||||
@@ -2114,7 +2114,7 @@ const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) c
|
||||
{
|
||||
if (canGrabBakedTexture(baked_index))
|
||||
{
|
||||
ETextureIndex tex_index = LLVOAvatarDictionary::bakedToLocalTextureIndex(baked_index);
|
||||
ETextureIndex tex_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(baked_index);
|
||||
if (tex_index == TEX_NUM_INDICES)
|
||||
{
|
||||
return LLUUID::null;
|
||||
@@ -2126,7 +2126,7 @@ const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) c
|
||||
|
||||
BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
|
||||
{
|
||||
ETextureIndex tex_index = LLVOAvatarDictionary::bakedToLocalTextureIndex(baked_index);
|
||||
ETextureIndex tex_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(baked_index);
|
||||
if (tex_index == TEX_NUM_INDICES)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -2145,13 +2145,13 @@ BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
|
||||
// baked texture. We don't want people copying people's
|
||||
// work via baked textures.
|
||||
|
||||
const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index);
|
||||
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
|
||||
for (texture_vec_t::const_iterator iter = baked_dict->mLocalTextures.begin();
|
||||
iter != baked_dict->mLocalTextures.end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex t_index = (*iter);
|
||||
LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(t_index);
|
||||
LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(t_index);
|
||||
U32 count = gAgentWearables.getWearableCount(wearable_type);
|
||||
lldebugs << "Checking index " << (U32) t_index << " count: " << count << llendl;
|
||||
|
||||
@@ -2229,9 +2229,9 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
|
||||
}
|
||||
}
|
||||
|
||||
LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLVOAvatarDefines::ETextureIndex i, U32 wearable_index) const
|
||||
LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 wearable_index) const
|
||||
{
|
||||
LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
|
||||
LLWearableType::EType type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(i);
|
||||
LLWearable* wearable = gAgentWearables.getWearable(type, wearable_index);
|
||||
if (wearable)
|
||||
{
|
||||
@@ -2259,9 +2259,9 @@ ETextureIndex LLVOAvatarSelf::getBakedTE( const LLTexLayerSet* layerset ) const
|
||||
}
|
||||
|
||||
|
||||
void LLVOAvatarSelf::setNewBakedTexture(LLVOAvatarDefines::EBakedTextureIndex i, const LLUUID &uuid)
|
||||
void LLVOAvatarSelf::setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid)
|
||||
{
|
||||
ETextureIndex index = LLVOAvatarDictionary::bakedToLocalTextureIndex(i);
|
||||
ETextureIndex index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(i);
|
||||
setNewBakedTexture(index, uuid);
|
||||
}
|
||||
|
||||
@@ -2283,7 +2283,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
|
||||
/* switch(te)
|
||||
case TEX_HEAD_BAKED:
|
||||
llinfos << "New baked texture: HEAD" << llendl; */
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(te);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(te);
|
||||
if (texture_dict->mIsBakedTexture)
|
||||
{
|
||||
debugBakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish.
|
||||
@@ -2348,7 +2348,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
|
||||
LL_DEBUGS("Avatar") << "\t Time from avatar creation to de-cloud: " << (S32)mDebugTimeAvatarVisible << llendl;
|
||||
LL_DEBUGS("Avatar") << "\t Time from avatar creation to de-cloud for others: " << (S32)final_time << llendl;
|
||||
LL_DEBUGS("Avatar") << "\t Load time for each texture: " << llendl;
|
||||
for (U32 i = 0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
|
||||
for (U32 i = 0; i < LLAvatarAppearanceDefines::TEX_NUM_INDICES; ++i)
|
||||
{
|
||||
std::stringstream out;
|
||||
out << "\t\t (" << i << ") ";
|
||||
@@ -2376,16 +2376,16 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
|
||||
}
|
||||
}
|
||||
LL_DEBUGS("Avatar") << "\t Time points for each upload (start / finish)" << llendl;
|
||||
for (U32 i = 0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
|
||||
for (U32 i = 0; i < LLAvatarAppearanceDefines::BAKED_NUM_INDICES; ++i)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "\t\t (" << i << ") \t" << (S32)mDebugBakedTextureTimes[i][0] << " / " << (S32)mDebugBakedTextureTimes[i][1] << llendl;
|
||||
}
|
||||
|
||||
for (LLVOAvatarDefines::LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
|
||||
for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
|
||||
baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
|
||||
++baked_iter)
|
||||
{
|
||||
const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
|
||||
const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
|
||||
const LLTexLayerSet *layerset = debugGetLayerSet(baked_index);
|
||||
if (!layerset) continue;
|
||||
const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
|
||||
@@ -2454,12 +2454,12 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
|
||||
/* ETextureIndex baked_texture_indices[BAKED_NUM_INDICES] =
|
||||
TEX_HEAD_BAKED,
|
||||
TEX_UPPER_BAKED, */
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex index = iter->first;
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (texture_dict->mIsBakedTexture)
|
||||
{
|
||||
if (texture_id == gAgentAvatarp->getTEImage(index)->getID())
|
||||
@@ -2537,7 +2537,7 @@ void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index )
|
||||
case LOCTEX_UPPER_SHIRT:
|
||||
if( mUpperBodyLayerSet )
|
||||
mUpperBodyLayerSet->requestUpdate(); */
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
|
||||
if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture)
|
||||
return;
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
@@ -2553,7 +2553,7 @@ LLTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
|
||||
case TEX_HEAD_BAKED:
|
||||
case TEX_HEAD_BODYPAINT:
|
||||
return mHeadLayerSet; */
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
|
||||
if (texture_dict->mIsUsedByBakedTexture)
|
||||
{
|
||||
const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
|
||||
@@ -2602,12 +2602,12 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
|
||||
{
|
||||
LLUUID texture_id[TEX_NUM_INDICES];
|
||||
// pack away current TEs to make sure we don't send them out
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex index = iter->first;
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (!texture_dict->mIsBakedTexture)
|
||||
{
|
||||
LLTextureEntry* entry = getTE((U8) index);
|
||||
@@ -2622,12 +2622,12 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
|
||||
bool success = packTEMessage(mesgsys);
|
||||
|
||||
// unpack TEs to make sure we don't re-trigger a bake
|
||||
for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
|
||||
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
|
||||
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
|
||||
++iter)
|
||||
{
|
||||
const ETextureIndex index = iter->first;
|
||||
const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
|
||||
if (!texture_dict->mIsBakedTexture)
|
||||
{
|
||||
LLTextureEntry* entry = getTE((U8) index);
|
||||
|
||||
@@ -195,32 +195,32 @@ public:
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
/*virtual*/ bool hasPendingBakedUploads() const;
|
||||
S32 getLocalDiscardLevel(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
|
||||
S32 getLocalDiscardLevel(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
|
||||
bool areTexturesCurrent() const;
|
||||
BOOL isLocalTextureDataAvailable(const LLTexLayerSet* layerset) const;
|
||||
BOOL isLocalTextureDataFinal(const LLTexLayerSet* layerset) const;
|
||||
BOOL isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const;
|
||||
BOOL isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const;
|
||||
// If you want to check all textures of a given type, pass gAgentWearables.getWearableCount() for index
|
||||
/*virtual*/ BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
|
||||
/*virtual*/ BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
|
||||
/*virtual*/ BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
|
||||
/*virtual*/ BOOL isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
|
||||
/*virtual*/ BOOL isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
|
||||
/*virtual*/ BOOL isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLWearable *wearable) const;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Local Textures
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
BOOL getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture** image_gl_pp, U32 index) const;
|
||||
LLViewerFetchedTexture* getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
|
||||
const LLUUID& getLocalTextureID(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
|
||||
BOOL getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture** image_gl_pp, U32 index) const;
|
||||
LLViewerFetchedTexture* getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
|
||||
const LLUUID& getLocalTextureID(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
|
||||
void setLocalTextureTE(U8 te, LLViewerTexture* image, U32 index);
|
||||
/*virtual*/ void setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index);
|
||||
/*virtual*/ void setLocalTexture(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index);
|
||||
protected:
|
||||
/*virtual*/ void setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index);
|
||||
/*virtual*/ void setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index);
|
||||
void localTextureLoaded(BOOL succcess, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
|
||||
void getLocalTextureByteCount(S32* gl_byte_count) const;
|
||||
/*virtual*/ void addLocalTextureStats(LLVOAvatarDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index);
|
||||
LLLocalTextureObject* getLocalTextureObject(LLVOAvatarDefines::ETextureIndex i, U32 index) const;
|
||||
/*virtual*/ void addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index);
|
||||
LLLocalTextureObject* getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 index) const;
|
||||
|
||||
private:
|
||||
static void onLocalTextureLoaded(BOOL succcess, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
|
||||
@@ -233,10 +233,10 @@ private:
|
||||
// Baked textures
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
LLVOAvatarDefines::ETextureIndex getBakedTE(const LLTexLayerSet* layerset ) const;
|
||||
void setNewBakedTexture(LLVOAvatarDefines::EBakedTextureIndex i, const LLUUID &uuid);
|
||||
void setNewBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
|
||||
void setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
|
||||
LLAvatarAppearanceDefines::ETextureIndex getBakedTE(const LLTexLayerSet* layerset ) const;
|
||||
void setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid);
|
||||
void setNewBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid);
|
||||
void setCachedBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid);
|
||||
void forceBakeAllTextures(bool slam_for_debug = false);
|
||||
static void processRebakeAvatarTextures(LLMessageSystem* msg, void**);
|
||||
BOOL isUsingBakedTextures() const; // e.g. false if in appearance edit mode
|
||||
@@ -248,10 +248,10 @@ protected:
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void requestLayerSetUploads();
|
||||
void requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i);
|
||||
void requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i);
|
||||
LLTexLayerSet* getLayerSet(LLVOAvatarDefines::ETextureIndex index) const;
|
||||
LLTexLayerSet* getLayerSet(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
|
||||
void requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i);
|
||||
void requestLayerSetUpdate(LLAvatarAppearanceDefines::ETextureIndex i);
|
||||
LLTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::ETextureIndex index) const;
|
||||
LLTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Composites
|
||||
@@ -265,8 +265,8 @@ public:
|
||||
void setupComposites();
|
||||
void updateComposites();
|
||||
|
||||
const LLUUID& grabBakedTexture(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
|
||||
BOOL canGrabBakedTexture(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
|
||||
const LLUUID& grabBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
|
||||
BOOL canGrabBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
@@ -302,7 +302,7 @@ public:
|
||||
/*virtual*/ BOOL isWearingWearableType(LLWearableType::EType type) const;
|
||||
void wearableUpdated(LLWearableType::EType type, BOOL upload_result);
|
||||
protected:
|
||||
U32 getNumWearables(LLVOAvatarDefines::ETextureIndex i) const;
|
||||
U32 getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Attachments
|
||||
@@ -374,32 +374,32 @@ public:
|
||||
public:
|
||||
struct LLAvatarTexData
|
||||
{
|
||||
LLAvatarTexData(const LLUUID& id, LLVOAvatarDefines::ETextureIndex index) :
|
||||
LLAvatarTexData(const LLUUID& id, LLAvatarAppearanceDefines::ETextureIndex index) :
|
||||
mAvatarID(id),
|
||||
mIndex(index)
|
||||
{}
|
||||
LLUUID mAvatarID;
|
||||
LLVOAvatarDefines::ETextureIndex mIndex;
|
||||
LLAvatarAppearanceDefines::ETextureIndex mIndex;
|
||||
};
|
||||
void debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
|
||||
void debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
|
||||
void outputRezDiagnostics() const;
|
||||
void outputRezTiming(const std::string& msg) const;
|
||||
void reportAvatarRezTime() const;
|
||||
void debugBakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished);
|
||||
void debugBakedTextureUpload(LLAvatarAppearanceDefines::EBakedTextureIndex index, BOOL finished);
|
||||
static void debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
|
||||
|
||||
BOOL isAllLocalTextureDataFinal() const;
|
||||
|
||||
const LLTexLayerSet* debugGetLayerSet(LLVOAvatarDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
|
||||
const LLTexLayerSet* debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
|
||||
const std::string debugDumpLocalTextureDataInfo(const LLTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
|
||||
const std::string debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
|
||||
private:
|
||||
LLFrameTimer mDebugSelfLoadTimer;
|
||||
F32 mDebugTimeWearablesLoaded;
|
||||
F32 mDebugTimeAvatarVisible;
|
||||
F32 mDebugTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
|
||||
F32 mDebugBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
|
||||
F32 mDebugTextureLoadTimes[LLAvatarAppearanceDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
|
||||
F32 mDebugBakedTextureTimes[LLAvatarAppearanceDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
|
||||
void debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
|
||||
|
||||
/** Diagnostics
|
||||
|
||||
@@ -43,11 +43,11 @@
|
||||
#include "llvisualparam.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llvoavatardefines.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "llwearable.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
using namespace LLAvatarAppearanceDefines;
|
||||
|
||||
// static
|
||||
S32 LLWearable::sCurrentDefinitionVersion = 1;
|
||||
@@ -58,7 +58,7 @@ class LLOverrideBakedTextureUpdate
|
||||
public:
|
||||
LLOverrideBakedTextureUpdate(bool temp_state)
|
||||
{
|
||||
U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;
|
||||
U32 num_bakes = (U32) LLAvatarAppearanceDefines::BAKED_NUM_INDICES;
|
||||
for( U32 index = 0; index < num_bakes; ++index )
|
||||
{
|
||||
composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);
|
||||
@@ -68,14 +68,14 @@ public:
|
||||
|
||||
~LLOverrideBakedTextureUpdate()
|
||||
{
|
||||
U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;
|
||||
U32 num_bakes = (U32)LLAvatarAppearanceDefines::BAKED_NUM_INDICES;
|
||||
for( U32 index = 0; index < num_bakes; ++index )
|
||||
{
|
||||
gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]);
|
||||
}
|
||||
}
|
||||
private:
|
||||
bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES];
|
||||
bool composite_enabled[LLAvatarAppearanceDefines::BAKED_NUM_INDICES];
|
||||
};
|
||||
|
||||
// Private local functions
|
||||
@@ -117,6 +117,19 @@ LLAssetType::EType LLWearable::getAssetType() const
|
||||
return LLWearableType::getAssetType(mType);
|
||||
}
|
||||
|
||||
const LLUUID LLWearable::getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index)
|
||||
{
|
||||
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
|
||||
const std::string &default_image_name = texture_dict->mDefaultImageName;
|
||||
if (default_image_name == "")
|
||||
{
|
||||
return IMG_DEFAULT_AVATAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
return LLUUID(gSavedSettings.getString(default_image_name));
|
||||
}
|
||||
}
|
||||
|
||||
// reX: new function
|
||||
BOOL LLWearable::FileExportParams( FILE* file )
|
||||
@@ -484,7 +497,7 @@ BOOL LLWearable::importFile( LLFILE* file )
|
||||
|
||||
if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
|
||||
{
|
||||
image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
|
||||
image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLAvatarAppearanceDefines::ETextureIndex)te), NULL);
|
||||
}
|
||||
LLUUID textureid(text_buffer);
|
||||
mTEMap[te] = new LLLocalTextureObject(image, textureid);
|
||||
@@ -540,7 +553,7 @@ BOOL LLWearable::isOldVersion() const
|
||||
S32 te_count = 0;
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_count++;
|
||||
if( !is_in_map(mTEMap, te ) )
|
||||
@@ -594,7 +607,7 @@ BOOL LLWearable::isDirty() const
|
||||
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator current_iter = mTEMap.find(te);
|
||||
if(current_iter != mTEMap.end())
|
||||
@@ -640,9 +653,9 @@ void LLWearable::setTexturesToDefaults()
|
||||
{
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
LLUUID id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
|
||||
LLUUID id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id );
|
||||
if( mTEMap.find(te) == mTEMap.end() )
|
||||
{
|
||||
@@ -684,7 +697,7 @@ void LLWearable::writeToAvatar()
|
||||
// Pull texture entries
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = mTEMap.find(te);
|
||||
LLUUID image_id;
|
||||
@@ -694,7 +707,7 @@ void LLWearable::writeToAvatar()
|
||||
}
|
||||
else
|
||||
{
|
||||
image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
|
||||
image_id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
}
|
||||
LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
|
||||
// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
|
||||
@@ -782,7 +795,7 @@ void LLWearable::copyDataFrom(const LLWearable* 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 (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = src->mTEMap.find(te);
|
||||
LLUUID image_id;
|
||||
@@ -798,7 +811,7 @@ void LLWearable::copyDataFrom(const LLWearable* src)
|
||||
}
|
||||
else
|
||||
{
|
||||
image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
|
||||
image_id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
image = LLViewerTextureManager::getFetchedTexture( image_id );
|
||||
mTEMap[te] = new LLLocalTextureObject(image, image_id);
|
||||
mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
|
||||
@@ -944,7 +957,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
|
||||
{
|
||||
LLColor4 color;
|
||||
U32 param_name[3];
|
||||
if( LLVOAvatar::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
|
||||
if( LLVOAvatar::teToColorParams( (LLAvatarAppearanceDefines::ETextureIndex)te, param_name ) )
|
||||
{
|
||||
for( U8 index = 0; index < 3; index++ )
|
||||
{
|
||||
@@ -957,7 +970,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
|
||||
void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake )
|
||||
{
|
||||
U32 param_name[3];
|
||||
if( LLVOAvatar::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
|
||||
if( LLVOAvatar::teToColorParams( (LLAvatarAppearanceDefines::ETextureIndex)te, param_name ) )
|
||||
{
|
||||
for( U8 index = 0; index < 3; index++ )
|
||||
{
|
||||
@@ -1066,7 +1079,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 (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
|
||||
{
|
||||
te_map_t::const_iterator iter = src.find(te);
|
||||
LLUUID image_id;
|
||||
@@ -1082,7 +1095,7 @@ void LLWearable::syncImages(te_map_t &src, te_map_t &dst)
|
||||
else
|
||||
{
|
||||
// there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map.
|
||||
image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
|
||||
image_id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
image = LLViewerTextureManager::getFetchedTexture( image_id );
|
||||
}
|
||||
|
||||
@@ -1166,7 +1179,7 @@ void LLWearable::pullCrossWearableValues()
|
||||
mTEMap.clear();
|
||||
for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
|
||||
{
|
||||
if( LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te ) == mType )
|
||||
if( LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te ) == mType )
|
||||
{
|
||||
LLViewerTexture* image = avatar->getTEImage( te );
|
||||
if( image )
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "llwearabletype.h"
|
||||
#include "llfile.h"
|
||||
#include "lllocaltextureobject.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
|
||||
class LLViewerInventoryItem;
|
||||
class LLVisualParam;
|
||||
@@ -82,6 +83,7 @@ public:
|
||||
LLAssetType::EType getAssetType() const;
|
||||
S32 getDefinitionVersion() const { return mDefinitionVersion; }
|
||||
void setDefinitionVersion( S32 new_version ) { mDefinitionVersion = new_version; }
|
||||
virtual const LLUUID getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index);
|
||||
|
||||
public:
|
||||
typedef std::vector<LLVisualParam*> visual_param_vec_t;
|
||||
|
||||
Reference in New Issue
Block a user