Post review changes.
parent
99219cbe80
commit
cdb96f8044
|
|
@ -127,6 +127,25 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error
|
|||
{
|
||||
reset();
|
||||
errorLine = 0;
|
||||
mStatus = loadTranslationTable("anim.ini");
|
||||
loadStatus = mStatus;
|
||||
LL_INFOS("BVH") << "Load Status 00 : " << loadStatus << LL_ENDL;
|
||||
if (mStatus == E_ST_NO_XLT_FILE)
|
||||
{
|
||||
LL_WARNS("BVH") << "NOTE: No translation table found." << LL_ENDL;
|
||||
loadStatus = mStatus;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mStatus != E_ST_OK)
|
||||
{
|
||||
LL_WARNS("BVH") << "ERROR: [line: " << getLineNumber() << "] " << mStatus << LL_ENDL;
|
||||
errorLine = getLineNumber();
|
||||
loadStatus = mStatus;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Recognize all names we've been told are legal.
|
||||
std::map<std::string, std::string>::iterator iter;
|
||||
|
|
@ -168,6 +187,292 @@ LLBVHLoader::~LLBVHLoader()
|
|||
mJoints.clear();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// LLBVHLoader::loadTranslationTable()
|
||||
//------------------------------------------------------------------------
|
||||
ELoadStatus LLBVHLoader::loadTranslationTable(const char *fileName)
|
||||
{
|
||||
//--------------------------------------------------------------------
|
||||
// open file
|
||||
//--------------------------------------------------------------------
|
||||
std::string path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,fileName);
|
||||
|
||||
LLAPRFile infile ;
|
||||
infile.open(path, LL_APR_R);
|
||||
apr_file_t *fp = infile.getFileHandle();
|
||||
if (!fp)
|
||||
return E_ST_NO_XLT_FILE;
|
||||
|
||||
LL_INFOS("BVH") << "NOTE: Loading translation table: " << fileName << LL_ENDL;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// register file to be closed on function exit
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// load header
|
||||
//--------------------------------------------------------------------
|
||||
if ( ! getLine(fp) )
|
||||
return E_ST_EOF;
|
||||
if ( strncmp(mLine, "Translations 1.0", 16) )
|
||||
return E_ST_NO_XLT_HEADER;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// load data one line at a time
|
||||
//--------------------------------------------------------------------
|
||||
BOOL loadingGlobals = FALSE;
|
||||
while ( getLine(fp) )
|
||||
{
|
||||
//----------------------------------------------------------------
|
||||
// check the 1st token on the line to determine if it's empty or a comment
|
||||
//----------------------------------------------------------------
|
||||
char token[128]; /* Flawfinder: ignore */
|
||||
if ( sscanf(mLine, " %127s", token) != 1 ) /* Flawfinder: ignore */
|
||||
continue;
|
||||
|
||||
if (token[0] == '#')
|
||||
continue;
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check if a [jointName] or [GLOBALS] was specified.
|
||||
//----------------------------------------------------------------
|
||||
if (token[0] == '[')
|
||||
{
|
||||
char name[128]; /* Flawfinder: ignore */
|
||||
if ( sscanf(mLine, " [%127[^]]", name) != 1 )
|
||||
return E_ST_NO_XLT_NAME;
|
||||
|
||||
if (strcmp(name, "GLOBALS")==0)
|
||||
{
|
||||
loadingGlobals = TRUE;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for optional emote
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "emote")==0)
|
||||
{
|
||||
char emote_str[1024]; /* Flawfinder: ignore */
|
||||
if ( sscanf(mLine, " %*s = %1023s", emote_str) != 1 ) /* Flawfinder: ignore */
|
||||
return E_ST_NO_XLT_EMOTE;
|
||||
|
||||
mEmoteName.assign( emote_str );
|
||||
// LL_INFOS() << "NOTE: Emote: " << mEmoteName.c_str() << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for global priority setting
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "priority")==0)
|
||||
{
|
||||
S32 priority;
|
||||
if ( sscanf(mLine, " %*s = %d", &priority) != 1 )
|
||||
return E_ST_NO_XLT_PRIORITY;
|
||||
|
||||
mPriority = priority;
|
||||
// LL_INFOS() << "NOTE: Priority: " << mPriority << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for global loop setting
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "loop")==0)
|
||||
{
|
||||
char trueFalse[128]; /* Flawfinder: ignore */
|
||||
trueFalse[0] = '\0';
|
||||
|
||||
F32 loop_in = 0.f;
|
||||
F32 loop_out = 1.f;
|
||||
|
||||
if ( sscanf(mLine, " %*s = %f %f", &loop_in, &loop_out) == 2 )
|
||||
{
|
||||
mLoop = TRUE;
|
||||
}
|
||||
else if ( sscanf(mLine, " %*s = %127s", trueFalse) == 1 ) /* Flawfinder: ignore */
|
||||
{
|
||||
mLoop = (LLStringUtil::compareInsensitive(trueFalse, "true")==0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return E_ST_NO_XLT_LOOP;
|
||||
}
|
||||
|
||||
mLoopInPoint = loop_in * mDuration;
|
||||
mLoopOutPoint = loop_out * mDuration;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for global easeIn setting
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "easein")==0)
|
||||
{
|
||||
F32 duration;
|
||||
char type[128]; /* Flawfinder: ignore */
|
||||
if ( sscanf(mLine, " %*s = %f %127s", &duration, type) != 2 ) /* Flawfinder: ignore */
|
||||
return E_ST_NO_XLT_EASEIN;
|
||||
|
||||
mEaseIn = duration;
|
||||
continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for global easeOut setting
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "easeout")==0)
|
||||
{
|
||||
F32 duration;
|
||||
char type[128]; /* Flawfinder: ignore */
|
||||
if ( sscanf(mLine, " %*s = %f %127s", &duration, type) != 2 ) /* Flawfinder: ignore */
|
||||
return E_ST_NO_XLT_EASEOUT;
|
||||
|
||||
mEaseOut = duration;
|
||||
continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// check for global handMorph setting
|
||||
//----------------------------------------------------------------
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "hand")==0)
|
||||
{
|
||||
S32 handMorph;
|
||||
if (sscanf(mLine, " %*s = %d", &handMorph) != 1)
|
||||
return E_ST_NO_XLT_HAND;
|
||||
|
||||
mHand = handMorph;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "constraint")==0)
|
||||
{
|
||||
Constraint constraint;
|
||||
|
||||
// try reading optional target direction
|
||||
if(sscanf( /* Flawfinder: ignore */
|
||||
mLine,
|
||||
" %*s = %d %f %f %f %f %15s %f %f %f %15s %f %f %f %f %f %f",
|
||||
&constraint.mChainLength,
|
||||
&constraint.mEaseInStart,
|
||||
&constraint.mEaseInStop,
|
||||
&constraint.mEaseOutStart,
|
||||
&constraint.mEaseOutStop,
|
||||
constraint.mSourceJointName,
|
||||
&constraint.mSourceOffset.mV[VX],
|
||||
&constraint.mSourceOffset.mV[VY],
|
||||
&constraint.mSourceOffset.mV[VZ],
|
||||
constraint.mTargetJointName,
|
||||
&constraint.mTargetOffset.mV[VX],
|
||||
&constraint.mTargetOffset.mV[VY],
|
||||
&constraint.mTargetOffset.mV[VZ],
|
||||
&constraint.mTargetDir.mV[VX],
|
||||
&constraint.mTargetDir.mV[VY],
|
||||
&constraint.mTargetDir.mV[VZ]) != 16)
|
||||
{
|
||||
if(sscanf( /* Flawfinder: ignore */
|
||||
mLine,
|
||||
" %*s = %d %f %f %f %f %15s %f %f %f %15s %f %f %f",
|
||||
&constraint.mChainLength,
|
||||
&constraint.mEaseInStart,
|
||||
&constraint.mEaseInStop,
|
||||
&constraint.mEaseOutStart,
|
||||
&constraint.mEaseOutStop,
|
||||
constraint.mSourceJointName,
|
||||
&constraint.mSourceOffset.mV[VX],
|
||||
&constraint.mSourceOffset.mV[VY],
|
||||
&constraint.mSourceOffset.mV[VZ],
|
||||
constraint.mTargetJointName,
|
||||
&constraint.mTargetOffset.mV[VX],
|
||||
&constraint.mTargetOffset.mV[VY],
|
||||
&constraint.mTargetOffset.mV[VZ]) != 13)
|
||||
{
|
||||
return E_ST_NO_CONSTRAINT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// normalize direction
|
||||
if (!constraint.mTargetDir.isExactlyZero())
|
||||
{
|
||||
constraint.mTargetDir.normVec();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
constraint.mConstraintType = CONSTRAINT_TYPE_POINT;
|
||||
mConstraints.push_back(constraint);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (loadingGlobals && LLStringUtil::compareInsensitive(token, "planar_constraint")==0)
|
||||
{
|
||||
Constraint constraint;
|
||||
|
||||
// try reading optional target direction
|
||||
if(sscanf( /* Flawfinder: ignore */
|
||||
mLine,
|
||||
" %*s = %d %f %f %f %f %15s %f %f %f %15s %f %f %f %f %f %f",
|
||||
&constraint.mChainLength,
|
||||
&constraint.mEaseInStart,
|
||||
&constraint.mEaseInStop,
|
||||
&constraint.mEaseOutStart,
|
||||
&constraint.mEaseOutStop,
|
||||
constraint.mSourceJointName,
|
||||
&constraint.mSourceOffset.mV[VX],
|
||||
&constraint.mSourceOffset.mV[VY],
|
||||
&constraint.mSourceOffset.mV[VZ],
|
||||
constraint.mTargetJointName,
|
||||
&constraint.mTargetOffset.mV[VX],
|
||||
&constraint.mTargetOffset.mV[VY],
|
||||
&constraint.mTargetOffset.mV[VZ],
|
||||
&constraint.mTargetDir.mV[VX],
|
||||
&constraint.mTargetDir.mV[VY],
|
||||
&constraint.mTargetDir.mV[VZ]) != 16)
|
||||
{
|
||||
if(sscanf( /* Flawfinder: ignore */
|
||||
mLine,
|
||||
" %*s = %d %f %f %f %f %15s %f %f %f %15s %f %f %f",
|
||||
&constraint.mChainLength,
|
||||
&constraint.mEaseInStart,
|
||||
&constraint.mEaseInStop,
|
||||
&constraint.mEaseOutStart,
|
||||
&constraint.mEaseOutStop,
|
||||
constraint.mSourceJointName,
|
||||
&constraint.mSourceOffset.mV[VX],
|
||||
&constraint.mSourceOffset.mV[VY],
|
||||
&constraint.mSourceOffset.mV[VZ],
|
||||
constraint.mTargetJointName,
|
||||
&constraint.mTargetOffset.mV[VX],
|
||||
&constraint.mTargetOffset.mV[VY],
|
||||
&constraint.mTargetOffset.mV[VZ]) != 13)
|
||||
{
|
||||
return E_ST_NO_CONSTRAINT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// normalize direction
|
||||
if (!constraint.mTargetDir.isExactlyZero())
|
||||
{
|
||||
constraint.mTargetDir.normVec();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
constraint.mConstraintType = CONSTRAINT_TYPE_PLANE;
|
||||
mConstraints.push_back(constraint);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
infile.close() ;
|
||||
return E_ST_OK;
|
||||
}
|
||||
void LLBVHLoader::makeTranslation(std::string alias_name, std::string joint_name)
|
||||
{
|
||||
//Translation &newTrans = (foomap.insert(value_type(alias_name, Translation()))).first();
|
||||
|
|
@ -926,7 +1231,9 @@ void LLBVHLoader::reset()
|
|||
mInitialized = FALSE;
|
||||
|
||||
mEmoteName = "";
|
||||
mTranslations.clear();
|
||||
mLineNumber = 0;
|
||||
mTranslations.clear();
|
||||
mConstraints.clear();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
|
@ -1156,7 +1463,29 @@ BOOL LLBVHLoader::serialize(LLDataPacker& dp)
|
|||
}
|
||||
}
|
||||
|
||||
dp.packS32(0, "num_constraints");
|
||||
S32 num_constraints = (S32)mConstraints.size();
|
||||
dp.packS32(num_constraints, "num_constraints");
|
||||
|
||||
for (ConstraintVector::iterator constraint_it = mConstraints.begin();
|
||||
constraint_it != mConstraints.end();
|
||||
constraint_it++)
|
||||
{
|
||||
U8 byte = constraint_it->mChainLength;
|
||||
dp.packU8(byte, "chain_length");
|
||||
|
||||
byte = constraint_it->mConstraintType;
|
||||
dp.packU8(byte, "constraint_type");
|
||||
dp.packBinaryDataFixed((U8*)constraint_it->mSourceJointName, 16, "source_volume");
|
||||
dp.packVector3(constraint_it->mSourceOffset, "source_offset");
|
||||
dp.packBinaryDataFixed((U8*)constraint_it->mTargetJointName, 16, "target_volume");
|
||||
dp.packVector3(constraint_it->mTargetOffset, "target_offset");
|
||||
dp.packVector3(constraint_it->mTargetDir, "target_dir");
|
||||
dp.packF32(constraint_it->mEaseInStart, "ease_in_start");
|
||||
dp.packF32(constraint_it->mEaseInStop, "ease_in_stop");
|
||||
dp.packF32(constraint_it->mEaseOutStart, "ease_out_start");
|
||||
dp.packF32(constraint_it->mEaseOutStop, "ease_out_stop");
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
#include "llmath.h"
|
||||
#include "llapr.h"
|
||||
#include "llbvhconsts.h"
|
||||
#include <deque>
|
||||
|
||||
const S32 BVH_PARSER_LINE_SIZE = 2048;
|
||||
class LLDataPacker;
|
||||
|
|
@ -228,8 +227,6 @@ class LLBVHLoader
|
|||
friend class LLKeyframeMotion;
|
||||
public:
|
||||
// Constructor
|
||||
// LLBVHLoader(const char* buffer);
|
||||
LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &errorLine);
|
||||
LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &errorLine, std::map<std::string, std::string>& joint_alias_map );
|
||||
~LLBVHLoader();
|
||||
|
||||
|
|
|
|||
|
|
@ -1600,6 +1600,7 @@ set_source_files_properties(${viewer_XUI_FILES}
|
|||
list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
|
||||
|
||||
set(viewer_APPSETTINGS_FILES
|
||||
app_settings/anim.ini
|
||||
app_settings/cmd_line.xml
|
||||
app_settings/commands.xml
|
||||
app_settings/grass.xml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Translations 1.0
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
|
||||
<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="29">
|
||||
<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015" aliases="hip pelvis">
|
||||
<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015" aliases="hip avatar_mPelvis">
|
||||
<bone name="mTail_1" pos="0.000 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.25 0.000000 0.000000">
|
||||
<bone name="mTail_2" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-.25000000 0.000000 0.000000">
|
||||
<bone name="mTail_3" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.2500000 0.000000 0.000000">
|
||||
|
|
@ -11,12 +11,12 @@
|
|||
</bone>
|
||||
<collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/>
|
||||
<collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/>
|
||||
<bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073" aliases="abdomen">
|
||||
<bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073" aliases="abdomen avatar_mTorso">
|
||||
<collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/>
|
||||
<collision_volume name="LOWER_BACK" pos = "0.0 0.0 0.023" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/>
|
||||
<collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/>
|
||||
<collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/>
|
||||
<bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877" aliases="chest">
|
||||
<bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877" aliases="chest avatar_mChest">
|
||||
<bone name="mRightWingShoulder" pos="-0.07 -0.082 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.07 -0.082 0.165">
|
||||
<bone name="mRightWingElbow" pos="-0.085 -0.115 0" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.085 -0.115 0">
|
||||
<bone name="mRightWingWrist" pos="0.000 -0.231 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -.231 -0.000000">
|
||||
|
|
@ -37,11 +37,11 @@
|
|||
<collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/>
|
||||
<collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/>
|
||||
<collision_volume name="RIGHT_PEC" pos = "0.119 -0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/>
|
||||
<bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108" aliases="neck">
|
||||
<bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108" aliases="neck avatar_mNeck">
|
||||
<collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/>
|
||||
<bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630" aliases="head">
|
||||
<bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630" aliases="head avatar_mHead">
|
||||
<collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/>
|
||||
<bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000" aliases="figureHair">
|
||||
<bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000" aliases="figureHair avatar_mSkull">
|
||||
</bone>
|
||||
<bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000">
|
||||
</bone>
|
||||
|
|
@ -49,25 +49,25 @@
|
|||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
<bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396" aliases="lCollar">
|
||||
<bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396" aliases="lCollar avatar_mCollarLeft">
|
||||
<collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
|
||||
<bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000" aliases="lShldr">
|
||||
<bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000" aliases="lShldr avatar_mShoulderLeft">
|
||||
<collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
|
||||
<bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000" aliases="lForeArm">
|
||||
<bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000" aliases="lForeArm avatar_mElbowLeft">
|
||||
<collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
|
||||
<bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000" aliases="lHand">
|
||||
<bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000" aliases="lHand avatar_mWristLeft">
|
||||
<collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/>
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
<bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396" aliases="rCollar">
|
||||
<bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396" aliases="rCollar avatar_mCollarRight">
|
||||
<collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
|
||||
<bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000" aliases="rShldr">
|
||||
<bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000" aliases="rShldr avatar_mShoulderRight">
|
||||
<collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
|
||||
<bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000" aliases="rForeArm">
|
||||
<bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000" aliases="rForeArm avatar_mElbowRight">
|
||||
<collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
|
||||
<bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000" aliases="rHand">
|
||||
<bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000" aliases="rHand avatar_mWristRight">
|
||||
<collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/>
|
||||
</bone>
|
||||
</bone>
|
||||
|
|
@ -75,26 +75,26 @@
|
|||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
<bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086" aliases="rThigh">
|
||||
<bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086" aliases="rThigh avatar_mHipRight">
|
||||
<collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
|
||||
<bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922" aliases="rShin">
|
||||
<bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922" aliases="rShin avatar_mKneeRight">
|
||||
<collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
|
||||
<bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494">
|
||||
<collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
|
||||
<bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637" aliases="rFoot">
|
||||
<bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637" aliases="rFoot avatar_mFootRight">
|
||||
<bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104">
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
<bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998" aliases="lThigh">
|
||||
<bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998" aliases="lThigh avatar_mHipLeft">
|
||||
<collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
|
||||
<bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053" aliases="lShin">
|
||||
<bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053" aliases="lShin avatar_mKneeLeft">
|
||||
<collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
|
||||
<bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449">
|
||||
<collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
|
||||
<bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620" aliases="lFoot">
|
||||
<bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620" aliases="lFoot avatar_mFootLeft">
|
||||
<bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871">
|
||||
</bone>
|
||||
</bone>
|
||||
|
|
|
|||
|
|
@ -937,27 +937,6 @@ std::string LLVOAvatar::rezStatusToString(S32 rez_status)
|
|||
return "unknown";
|
||||
}
|
||||
|
||||
void LLVOAvatar::getLegalJointNames(std::deque<std::string>& legal_joint_names,
|
||||
bool include_collision_volumes)
|
||||
{
|
||||
LLAvatarAppearance::joint_alias_map_t alias_map = getJointAliases();
|
||||
|
||||
std::map<std::string, std::string>::iterator iter;
|
||||
|
||||
for (iter = alias_map.begin(); iter != alias_map.end(); ++iter)
|
||||
{
|
||||
legal_joint_names.push_back(iter->first);
|
||||
}
|
||||
|
||||
if (include_collision_volumes)
|
||||
{
|
||||
for (S32 i = 0; i < mNumCollisionVolumes; i++)
|
||||
{
|
||||
legal_joint_names.push_back(mCollisionVolumes[i].getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLVOAvatar::dumpBakedStatus()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -147,8 +147,6 @@ public:
|
|||
void collectBakedTextureUUIDs(std::set<LLUUID>& ids) const;
|
||||
void collectTextureUUIDs(std::set<LLUUID>& ids);
|
||||
void releaseOldTextures();
|
||||
void getLegalJointNames(std::deque<std::string>& legal_joint_names,
|
||||
bool include_collision_volumes);
|
||||
/*virtual*/ void updateTextures();
|
||||
LLViewerFetchedTexture* getBakedTextureImage(const U8 te, const LLUUID& uuid);
|
||||
/*virtual*/ S32 setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
|
||||
|
|
|
|||
Loading…
Reference in New Issue