diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index bae1684b7a..5c9a156dce 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -614,7 +614,7 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent
{
if (volume_num >= (S32)mNumCollisionVolumes)
{
- LL_WARNS() << "Too many bones" << LL_ENDL;
+ LL_WARNS() << "Too many collision volumes" << LL_ENDL;
return FALSE;
}
joint = (&mCollisionVolumes[volume_num]);
@@ -887,21 +887,21 @@ BOOL LLAvatarAppearance::loadAvatar()
// avatar_skeleton.xml
if( !buildSkeleton(sAvatarSkeletonInfo) )
{
- LL_WARNS() << "avatar file: buildSkeleton() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: buildSkeleton() failed" << LL_ENDL;
return FALSE;
}
// avatar_lad.xml :
if( !loadSkeletonNode() )
{
- LL_WARNS() << "avatar file: loadNodeSkeleton() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: loadNodeSkeleton() failed" << LL_ENDL;
return FALSE;
}
// avatar_lad.xml :
if( !loadMeshNodes() )
{
- LL_WARNS() << "avatar file: loadNodeMesh() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: loadNodeMesh() failed" << LL_ENDL;
return FALSE;
}
@@ -911,13 +911,13 @@ BOOL LLAvatarAppearance::loadAvatar()
mTexSkinColor = new LLTexGlobalColor( this );
if( !mTexSkinColor->setInfo( sAvatarXmlInfo->mTexSkinColorInfo ) )
{
- LL_WARNS() << "avatar file: mTexSkinColor->setInfo() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: mTexSkinColor->setInfo() failed" << LL_ENDL;
return FALSE;
}
}
else
{
- LL_WARNS() << " name=\"skin_color\" not found" << LL_ENDL;
+ LL_ERRS() << " name=\"skin_color\" not found" << LL_ENDL;
return FALSE;
}
if( sAvatarXmlInfo->mTexHairColorInfo )
@@ -925,13 +925,13 @@ BOOL LLAvatarAppearance::loadAvatar()
mTexHairColor = new LLTexGlobalColor( this );
if( !mTexHairColor->setInfo( sAvatarXmlInfo->mTexHairColorInfo ) )
{
- LL_WARNS() << "avatar file: mTexHairColor->setInfo() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: mTexHairColor->setInfo() failed" << LL_ENDL;
return FALSE;
}
}
else
{
- LL_WARNS() << " name=\"hair_color\" not found" << LL_ENDL;
+ LL_ERRS() << " name=\"hair_color\" not found" << LL_ENDL;
return FALSE;
}
if( sAvatarXmlInfo->mTexEyeColorInfo )
@@ -939,26 +939,26 @@ BOOL LLAvatarAppearance::loadAvatar()
mTexEyeColor = new LLTexGlobalColor( this );
if( !mTexEyeColor->setInfo( sAvatarXmlInfo->mTexEyeColorInfo ) )
{
- LL_WARNS() << "avatar file: mTexEyeColor->setInfo() failed" << LL_ENDL;
+ LL_ERRS() << "avatar file: mTexEyeColor->setInfo() failed" << LL_ENDL;
return FALSE;
}
}
else
{
- LL_WARNS() << " name=\"eye_color\" not found" << LL_ENDL;
+ LL_ERRS() << " name=\"eye_color\" not found" << LL_ENDL;
return FALSE;
}
// avatar_lad.xml :
if (sAvatarXmlInfo->mLayerInfoList.empty())
{
- LL_WARNS() << "avatar file: missing node" << LL_ENDL;
+ LL_ERRS() << "avatar file: missing node" << LL_ENDL;
return FALSE;
}
if (sAvatarXmlInfo->mMorphMaskInfoList.empty())
{
- LL_WARNS() << "avatar file: missing node" << LL_ENDL;
+ LL_ERRS() << "avatar file: missing node" << LL_ENDL;
return FALSE;
}
@@ -1157,6 +1157,7 @@ BOOL LLAvatarAppearance::loadMeshNodes()
{
// This should never happen
LL_WARNS("Avatar") << "Could not find avatar mesh: " << info->mReferenceMeshName << LL_ENDL;
+ return FALSE;
}
}
else
@@ -1759,7 +1760,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* ro
{
LL_WARNS() << "Unknown param type." << LL_ENDL;
}
- continue;
+ return FALSE;
}
LLPolySkeletalDistortionInfo *info = new LLPolySkeletalDistortionInfo;
@@ -1784,7 +1785,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* ro
{
LL_WARNS() << "No name supplied for attachment point." << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
static LLStdStringHandle joint_string = LLXmlTree::addAttributeString("joint");
@@ -1792,7 +1793,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* ro
{
LL_WARNS() << "No bone declared in attachment point " << info->mName << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
static LLStdStringHandle position_string = LLXmlTree::addAttributeString("position");
@@ -1818,7 +1819,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* ro
{
LL_WARNS() << "No id supplied for attachment point " << info->mName << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
static LLStdStringHandle slot_string = LLXmlTree::addAttributeString("pie_slice");
@@ -1904,7 +1905,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root)
{
LL_WARNS() << "Unknown param type." << LL_ENDL;
}
- continue;
+ return FALSE;
}
LLPolyMorphTargetInfo *morphinfo = new LLPolyMorphTargetInfo();
@@ -2065,7 +2066,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root
{
LL_WARNS() << "No name supplied for morph mask." << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
static LLStdStringHandle region_string = LLXmlTree::addAttributeString("body_region");
@@ -2073,7 +2074,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root
{
LL_WARNS() << "No region supplied for morph mask." << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
static LLStdStringHandle layer_string = LLXmlTree::addAttributeString("layer");
@@ -2081,7 +2082,7 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root
{
LL_WARNS() << "No layer supplied for morph mask." << LL_ENDL;
delete info;
- continue;
+ return FALSE;
}
// optional parameter. don't throw a warning if not present.
diff --git a/indra/llappearance/llpolyskeletaldistortion.cpp b/indra/llappearance/llpolyskeletaldistortion.cpp
index df2f79a85e..2fadf85d3e 100644
--- a/indra/llappearance/llpolyskeletaldistortion.cpp
+++ b/indra/llappearance/llpolyskeletaldistortion.cpp
@@ -152,8 +152,10 @@ BOOL LLPolySkeletalDistortion::setInfo(LLPolySkeletalDistortionInfo *info)
LLJoint* joint = mAvatar->getJoint(bone_info->mBoneName);
if (!joint)
{
+ // There's no point continuing after this error - means
+ // that either the skeleton or lad file is broken.
LL_WARNS() << "Joint " << bone_info->mBoneName << " not found." << LL_ENDL;
- continue;
+ return FALSE;
}
// store it
diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp
index 1a6db08758..d225a36050 100644
--- a/indra/llcharacter/llheadrotmotion.cpp
+++ b/indra/llcharacter/llheadrotmotion.cpp
@@ -285,7 +285,10 @@ LLEyeMotion::LLEyeMotion(const LLUUID &id) : LLMotion(id)
mName = "eye_rot";
mLeftEyeState = new LLJointState;
+ mAltLeftEyeState = new LLJointState;
+
mRightEyeState = new LLJointState;
+ mAltRightEyeState = new LLJointState;
}
@@ -318,18 +321,38 @@ LLMotion::LLMotionInitStatus LLEyeMotion::onInitialize(LLCharacter *character)
return STATUS_FAILURE;
}
+ mAltLeftEyeState->setJoint( character->getJoint("mFaceEyeAltLeft") );
+ if ( ! mAltLeftEyeState->getJoint() )
+ {
+ LL_INFOS() << getName() << ": Can't get alt left eyeball joint." << LL_ENDL;
+ return STATUS_FAILURE;
+ }
+
mRightEyeState->setJoint( character->getJoint("mEyeRight") );
if ( ! mRightEyeState->getJoint() )
{
- LL_INFOS() << getName() << ": Can't get Right eyeball joint." << LL_ENDL;
+ LL_INFOS() << getName() << ": Can't get right eyeball joint." << LL_ENDL;
+ return STATUS_FAILURE;
+ }
+
+ mAltRightEyeState->setJoint( character->getJoint("mFaceEyeAltRight") );
+ if ( ! mAltRightEyeState->getJoint() )
+ {
+ LL_INFOS() << getName() << ": Can't get alt right eyeball joint." << LL_ENDL;
return STATUS_FAILURE;
}
mLeftEyeState->setUsage(LLJointState::ROT);
+ mAltLeftEyeState->setUsage(LLJointState::ROT);
+
mRightEyeState->setUsage(LLJointState::ROT);
+ mAltRightEyeState->setUsage(LLJointState::ROT);
addJointState( mLeftEyeState );
+ addJointState( mAltLeftEyeState );
+
addJointState( mRightEyeState );
+ addJointState( mAltRightEyeState );
return STATUS_SUCCESS;
}
@@ -343,17 +366,101 @@ BOOL LLEyeMotion::onActivate()
return TRUE;
}
+//-----------------------------------------------------------------------------
+// LLEyeMotion::adjustEyeTarget()
+//-----------------------------------------------------------------------------
+void LLEyeMotion::adjustEyeTarget(LLVector3* targetPos, LLJointState& left_eye_state, LLJointState& right_eye_state)
+{
+ // Compute eye rotation.
+ BOOL has_eye_target = FALSE;
+ LLQuaternion target_eye_rot;
+ LLVector3 eye_look_at;
+ F32 vergence;
+
+ if (targetPos)
+ {
+ LLVector3 skyward(0.f, 0.f, 1.f);
+ LLVector3 left;
+ LLVector3 up;
+
+ eye_look_at = *targetPos;
+ has_eye_target = TRUE;
+ F32 lookAtDistance = eye_look_at.normVec();
+
+ left.setVec(skyward % eye_look_at);
+ up.setVec(eye_look_at % left);
+
+ target_eye_rot = LLQuaternion(eye_look_at, left, up);
+ // convert target rotation to head-local coordinates
+ target_eye_rot *= ~mHeadJoint->getWorldRotation();
+ // eliminate any Euler roll - we're lucky that roll is applied last.
+ F32 roll, pitch, yaw;
+ target_eye_rot.getEulerAngles(&roll, &pitch, &yaw);
+ target_eye_rot.setQuat(0.0f, pitch, yaw);
+ // constrain target orientation to be in front of avatar's face
+ target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE);
+
+ // calculate vergence
+ F32 interocular_dist = (left_eye_state.getJoint()->getWorldPosition() - right_eye_state.getJoint()->getWorldPosition()).magVec();
+ vergence = -atan2((interocular_dist / 2.f), lookAtDistance);
+ // Guess we should take the return value of that llclamp...
+ // llclamp(vergence, -F_PI_BY_TWO, 0.f);
+ vergence = llclamp(vergence, -F_PI_BY_TWO, 0.f);
+ //
+ }
+ else
+ {
+ target_eye_rot = LLQuaternion::DEFAULT;
+ vergence = 0.f;
+ }
+
+ //RN: subtract 4 degrees to account for foveal angular offset relative to pupil
+ vergence += 4.f * DEG_TO_RAD;
+
+ // calculate eye jitter
+ LLQuaternion eye_jitter_rot;
+
+ // vergence not too high...
+ if (vergence > -0.05f)
+ {
+ //...go ahead and jitter
+ eye_jitter_rot.setQuat(0.f, mEyeJitterPitch + mEyeLookAwayPitch, mEyeJitterYaw + mEyeLookAwayYaw);
+ }
+ else
+ {
+ //...or don't
+ eye_jitter_rot.loadIdentity();
+ }
+
+ // calculate vergence of eyes as an object gets closer to the avatar's head
+ LLQuaternion vergence_quat;
+
+ if (has_eye_target)
+ {
+ vergence_quat.setQuat(vergence, LLVector3(0.f, 0.f, 1.f));
+ }
+ else
+ {
+ vergence_quat.loadIdentity();
+ }
+
+ // calculate eye rotations
+ LLQuaternion left_eye_rot = target_eye_rot;
+ left_eye_rot = vergence_quat * eye_jitter_rot * left_eye_rot;
+
+ LLQuaternion right_eye_rot = target_eye_rot;
+ vergence_quat.transQuat();
+ right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot;
+
+ left_eye_state.setRotation( left_eye_rot );
+ right_eye_state.setRotation( right_eye_rot );
+}
//-----------------------------------------------------------------------------
// LLEyeMotion::onUpdate()
//-----------------------------------------------------------------------------
BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
{
- // Compute eye rotation.
- LLQuaternion target_eye_rot;
- LLVector3 eye_look_at;
- F32 vergence;
-
//calculate jitter
if (mEyeJitterTimer.getElapsedTimeF32() > mEyeJitterTime)
{
@@ -426,87 +533,10 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
}
}
- BOOL has_eye_target = FALSE;
LLVector3* targetPos = (LLVector3*)mCharacter->getAnimationData("LookAtPoint");
- if (targetPos)
- {
- LLVector3 skyward(0.f, 0.f, 1.f);
- LLVector3 left;
- LLVector3 up;
-
- eye_look_at = *targetPos;
- has_eye_target = TRUE;
- F32 lookAtDistance = eye_look_at.normVec();
-
- left.setVec(skyward % eye_look_at);
- up.setVec(eye_look_at % left);
-
- target_eye_rot = LLQuaternion(eye_look_at, left, up);
- // convert target rotation to head-local coordinates
- target_eye_rot *= ~mHeadJoint->getWorldRotation();
- // eliminate any Euler roll - we're lucky that roll is applied last.
- F32 roll, pitch, yaw;
- target_eye_rot.getEulerAngles(&roll, &pitch, &yaw);
- target_eye_rot.setQuat(0.0f, pitch, yaw);
- // constrain target orientation to be in front of avatar's face
- target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE);
-
- // calculate vergence
- F32 interocular_dist = (mLeftEyeState->getJoint()->getWorldPosition() - mRightEyeState->getJoint()->getWorldPosition()).magVec();
- vergence = -atan2((interocular_dist / 2.f), lookAtDistance);
-
- // Guess we should take the return value of that llclamp...
- // llclamp(vergence, -F_PI_BY_TWO, 0.f);
- vergence = llclamp(vergence, -F_PI_BY_TWO, 0.f);
- //
- }
- else
- {
- target_eye_rot = LLQuaternion::DEFAULT;
- vergence = 0.f;
- }
-
- //RN: subtract 4 degrees to account for foveal angular offset relative to pupil
- vergence += 4.f * DEG_TO_RAD;
-
- // calculate eye jitter
- LLQuaternion eye_jitter_rot;
-
- // vergence not too high...
- if (vergence > -0.05f)
- {
- //...go ahead and jitter
- eye_jitter_rot.setQuat(0.f, mEyeJitterPitch + mEyeLookAwayPitch, mEyeJitterYaw + mEyeLookAwayYaw);
- }
- else
- {
- //...or don't
- eye_jitter_rot.loadIdentity();
- }
-
- // calculate vergence of eyes as an object gets closer to the avatar's head
- LLQuaternion vergence_quat;
-
- if (has_eye_target)
- {
- vergence_quat.setQuat(vergence, LLVector3(0.f, 0.f, 1.f));
- }
- else
- {
- vergence_quat.loadIdentity();
- }
-
- // calculate eye rotations
- LLQuaternion left_eye_rot = target_eye_rot;
- left_eye_rot = vergence_quat * eye_jitter_rot * left_eye_rot;
-
- LLQuaternion right_eye_rot = target_eye_rot;
- vergence_quat.transQuat();
- right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot;
-
- mLeftEyeState->setRotation( left_eye_rot );
- mRightEyeState->setRotation( right_eye_rot );
+ adjustEyeTarget(targetPos, *mLeftEyeState, *mRightEyeState);
+ adjustEyeTarget(targetPos, *mAltLeftEyeState, *mAltRightEyeState);
return TRUE;
}
@@ -523,11 +553,23 @@ void LLEyeMotion::onDeactivate()
joint->setRotation(LLQuaternion::DEFAULT);
}
+ joint = mAltLeftEyeState->getJoint();
+ if (joint)
+ {
+ joint->setRotation(LLQuaternion::DEFAULT);
+ }
+
joint = mRightEyeState->getJoint();
if (joint)
{
joint->setRotation(LLQuaternion::DEFAULT);
}
+
+ joint = mAltRightEyeState->getJoint();
+ if (joint)
+ {
+ joint->setRotation(LLQuaternion::DEFAULT);
+ }
}
// End
diff --git a/indra/llcharacter/llheadrotmotion.h b/indra/llcharacter/llheadrotmotion.h
index 569dbef2dd..53ae1813bc 100644
--- a/indra/llcharacter/llheadrotmotion.h
+++ b/indra/llcharacter/llheadrotmotion.h
@@ -176,6 +176,8 @@ public:
// it will be deactivated
virtual BOOL onActivate();
+ void adjustEyeTarget(LLVector3* targetPos, LLJointState& left_eye_state, LLJointState& right_eye_state);
+
// called per time step
// must return TRUE while it is active, and
// must return FALSE when the motion is completed.
@@ -193,6 +195,8 @@ public:
LLJoint *mHeadJoint;
LLPointer mLeftEyeState;
LLPointer mRightEyeState;
+ LLPointer mAltLeftEyeState;
+ LLPointer mAltRightEyeState;
LLFrameTimer mEyeJitterTimer;
F32 mEyeJitterTime;
diff --git a/indra/newview/app_settings/keywords_lsl_default.xml b/indra/newview/app_settings/keywords_lsl_default.xml
index 1515afa5af..7a4ede81af 100644
--- a/indra/newview/app_settings/keywords_lsl_default.xml
+++ b/indra/newview/app_settings/keywords_lsl_default.xml
@@ -1007,7 +1007,7 @@
type
integer
value
- 0x800
+ 0x800
tooltip
@@ -1617,7 +1617,7 @@
type
string
value
- 0x0A0x0A0x0A
+ \\n\\n\\n
tooltip
Indicates the last line of a notecard was read.
@@ -5511,7 +5511,7 @@
type
integer
value
- 0x40
+ 0x40
tooltip
Controls whether the object can be grabbed.\nA grab is the default action when in third person, and is available as the hand tool in build mode. This is useful for physical objects that you don't want other people to be able to trivially disturb. The default is FALSE
@@ -5520,7 +5520,7 @@
type
integer
value
- 0x400
+ 0x400
tooltip
Prevent click-and-drag movement on all prims in the object.
@@ -9802,15 +9802,17 @@
return
string
arguments
-
+
tooltip
Returns a string describing the error code passed or the string corresponding with XP_ERROR_UNKNOWN_ERROR if the value is not a valid Experience error code.
@@ -10160,7 +10162,7 @@
Parameters
type
- integer
+ list
tooltip
A list of PRIM_* property constants to return values of.
@@ -10251,7 +10253,7 @@
Parameters
type
- integer
+ list
tooltip
PRIM_* flags.
@@ -12172,7 +12174,7 @@
First
type
- string
+ integer
tooltip
Index of the first key to return.
@@ -12181,7 +12183,7 @@
Count
type
- string
+ integer
tooltip
The number of keys to return.
@@ -14797,7 +14799,7 @@
arguments
- AvatarID
+ AgentID
type
key
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index ed06de1e95..cfbacecd7a 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -1,6 +1,6 @@
+ version="2.0" wearable_definition_version="22">
-
+
-
+
-
+
-
-
+
+
-
+
@@ -807,6 +807,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -880,7 +954,7 @@
-
+
@@ -971,7 +1045,7 @@
scale="0.0 0.0 0.0"
offset="0 -0.02 0" />
-
@@ -1164,56 +1238,57 @@
scale="0 0 0"
offset="0 -.009 0" />
-
+ offset="0 .0090 0" />
-
+ offset="0 -.0090 0" />
+
+ offset="0 .0090 0" />
+ offset="0 -.0090 0" />
+
+ offset="0 .0090 0" />
-
+ offset="0 -.0090 0" />
+
+ offset="0 .0090 0" />
-
+ offset="0 -.0090 0" />
+
+ offset="0 .0090 0" />
-
+ offset="0 -.0090 0" />
+
-
+
-
+
@@ -1258,12 +1333,12 @@
scale="0 0 0"
offset="0 0 -.004" />
-
-
@@ -1291,27 +1366,27 @@
name="mFaceLipUpperLeft"
scale="0 0 0"
offset="0 0 .004" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1431,109 +1506,9 @@
scale="0 0 0"
offset=".016 0 0" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
-
-
-
+
@@ -1648,27 +1624,27 @@
name = "mFaceTeethLower"
scale = "1 1 1"
offset = "0 0 0" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+ offset="0 0 -0.001" />
-
+ offset="0 0 -0.001" />
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
-
-
@@ -2049,37 +2042,37 @@
name="mFaceEyeAltRight"
scale="0 0 0"
offset="-.005 0 0" />
-
+
+ scale="0 0.3 0.7"
+ offset=" 0 0 0" />
+ scale="0 0.3 0.7"
+ offset="0 0 0" />
-
+ scale="0 0.3 0.7"
+ offset=" 0 0 0" />
-
+ scale="0 0.3 0.7"
+ offset=" 0 0 0" />
+
-
+
-
+
@@ -2183,7 +2176,7 @@
scale="0 0 .5" />
-
+
-
+
+ offset = "0.0 0.0 0.0"
+ scale = "0.50 0.3 0.1" />
+ offset = "0 0 0"
+ scale = "0.0 0.3 0.0" />
+ offset = "0 0 0"
+ scale = "0.0 0.3 0.0" />
-
+
-
+
-
+
@@ -2280,16 +2273,16 @@
+ offset = "0.001 0.013 0"/>
+ offset = "-0.001 -0.013 0" />
@@ -2302,44 +2295,44 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+ offset = "-0.008 0.00 0.0" />
+
-
+ offset = "-0.009 0.00 0.0025" />
+
-
+ offset = "-0.009 0.00 0.0025" />
+
-
+ offset = "-0.009 0.00 0.0025" />
+
-
+ offset = "-0.008 0.00 0.0" />
+
-
+ offset = "-0.008 0.00 -0.0015" />
+
+ offset = "-0.008 0.00 -0.0025" />
-
+ offset = "-0.008 0.00 -0.0015" />
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+ scale = "0.2 0.00 0.4"
+ offset = "0.004 0.00 0.004" />
+
-
+ scale = "0.2 0.00 0.4"
+ offset = "0.004 0.00 0.004" />
+
-
+ scale = "0.2 0.00 0.4"
+ offset = "0.004 0.00 0.004" />
+
-
+
-
+
-
+
-
+
-
+ offset = "-0.004 0.00 0.006" />
+
+ offset = "-0.004 0.00 0.003" />
+ offset = "-0.004 0.00 0.006" />
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
-
+
+
+
+ name = "mFaceLipCornerRight"
+ scale = "0.0 0 0"
+ offset = "0 0.001 0" />
-
+ name = "mFaceLipCornerLeft"
+ scale = "0.0 0 0"
+ offset = "0 -0.001 0" />
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ offset = "0.0 -0.006 0.0" />
+
-
-
+ offset = "0.0 -0.006 0.0" />
+
+
@@ -2982,14 +2900,14 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ offset = "0.0 0.006 0.0" />
+
-
+ offset = "0.0 0.006 0.0" />
+
@@ -3063,15 +2941,15 @@
-
+
-
+
-
+
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+ value_default="0">
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ name = "mFaceChin"
+ offset = "0.008 0.00 0"
+ scale = "0.0 0.0 0.0" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ offset="0 0 0" />
+
+
-
+
-
+
-
+
-
+
-
+
+ offset="0 0 0" />
+ offset="0 0 0" />
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+ name="mFaceEyebrowCenterRight"
+ scale="0 0 0"
+ offset="0 -0.0045 -0.0053" />
+ name="mFaceEyebrowInnerRight"
+ scale="0 0 0"
+ offset="0 -0.00225 -0.0048" />
+
+
+ name="mFaceEyebrowCenterLeft"
+ scale="0 0 0"
+ offset="0 0.0045 -0.0053" />
+ name="mFaceEyebrowInnerLeft"
+ scale="0 0 0"
+ offset="0 0.00225 -0.0048" />
+
+
+ name="mFaceEyeAltLeft"
+ scale="0 0 0"
+ offset="0 0.0042 -0.0035" />
+ name="mFaceEyeLidUpperRight"
+ scale="0 0 0"
+ offset="0 -0.0039 -0.0032" />
-
+ name="mFaceEyeLidUpperLeft"
+ scale="0 0 0"
+ offset="0 0.0039 -0.0032" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+ offset="0 0 0.0016" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
@@ -4036,7 +3666,7 @@
@@ -4054,7 +3684,12 @@
name="mFaceJaw"
scale="0.0 0.5 0.0"
offset="0.0 0.0 0.0" />
-
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
+ scale="0.0 -0.2 0.0"
+ offset="0.0 0 0.0" />
+ scale="0.0 -0.2 0.0"
+ offset="0.0 0 0.0" />
+ scale="0.0 -1.0 0.0"
+ offset="0.0 0.01 -0.01" />
+ scale="0.0 -0.8 0.0"
+ offset="0.0 -0.01 -0.01" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -6374,10 +6584,10 @@
value_max="1.2">
-
+
-
+
-
+
-
-
+
+ cross_wearable="true"
+ value_min="0"
+ value_max="1">
@@ -8754,7 +8964,7 @@
-
+
-
+
-
+
id="30004" />
-
+
-
-
+
+
id="30656" />
-
+
id="30506" />
-
+
id="30764" />
-
+
-
+
id="30035" />
-
+
id="30015" />
-
+
id="30796" />
-
+
id="30185" />
-
+
id="30760" />
-
-
+
+
id="30665" />
-
+
id="20006" />
-
+
-
+
id="20007" />
-
+
id="20008" />
-
+
-
-
+
+
id="30650" />
-
+
id="30880" />
-
+
id="30765" />
-
+
id="30001" />
-
+
id="30758" />
-
+
id="30027" />
-
+
id="30759" />
-
+
id="30010" />
-
+
id="30017" />
-
+
id="30018" />
-
+
id="30014" />
-
+
max1="1"
max2="1"
min2="1" />
-
+
max1="1"
max2="1"
min2="1" />
-
+
max1="1"
max2="1"
min2="1" />
-
+
@@ -13542,7 +13752,7 @@ render_pass="bump">
-
+
@@ -14232,7 +14442,7 @@ render_pass="bump">
max1="1"
max2="1"
min2="1" />
-
+
max1="1"
max2="1"
min2="1" />
-
+
@@ -14273,28 +14483,13 @@ render_pass="bump">
-
+
-
-
-
-
-
-
-
-
-
-
+ id="30646" />
@@ -14322,7 +14517,7 @@ render_pass="bump">
-
+
@@ -14553,6 +14748,24 @@ render_pass="bump">
+
+
+
+
+
+
+
@@ -14607,6 +14820,7 @@ render_pass="bump">
camera_elevation=".1"
camera_distance=".35">
+
@@ -14624,6 +14838,10 @@ render_pass="bump">
+
+
+
@@ -15068,6 +15286,10 @@ render_pass="bump">
+
+
+
@@ -15532,6 +15754,8 @@ render_pass="bump">
+
@@ -15555,6 +15779,8 @@ render_pass="bump">
+
@@ -15577,9 +15803,11 @@ render_pass="bump">
+
-
+
-
+
-
+
max1="1"
max2="1"
min2="1" />
-
+
+
@@ -21,11 +21,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -34,10 +34,10 @@
-
-
-
-
+
+
+
+
@@ -48,27 +48,30 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
+
+
+
+
+
+
+
@@ -103,9 +106,9 @@
-
-
-
+
+
+
@@ -140,9 +143,9 @@
-
-
-
+
+
+
@@ -179,7 +182,7 @@
-
+
@@ -210,20 +213,20 @@
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
-
+
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 1f8f27a248..a54ae09557 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -960,7 +960,8 @@ void LLFastTimerView::doAnalysisDefault(std::string baseline, std::string target
base[label]["Samples"].asInteger());
}
- exportCharts(baseline, target);
+ // BENTO - this currently crashes
+ // exportCharts(baseline, target);
os.flush();
os.close();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fd3e301dd3..a8b50cb59c 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6241,11 +6241,11 @@ void LLVOAvatar::showAttachmentPosOverrides(bool verbose) const
{
std::stringstream ss;
std::copy(joint_names.begin(), joint_names.end(), std::ostream_iterator(ss, ","));
- LL_INFOS() << getFullname() << " attachment positions defined for joints: " << ss.str() << "\n" << LL_ENDL;
+ LL_DEBUGS("Avatar") << getFullname() << " attachment positions defined for joints: " << ss.str() << "\n" << LL_ENDL;
}
else
{
- LL_INFOS() << getFullname() << " no attachment positions defined for any joints" << "\n" << LL_ENDL;
+ LL_DEBUGS("Avatar") << getFullname() << " no attachment positions defined for any joints" << "\n" << LL_ENDL;
}
if (!verbose)
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index ebc4ab62f4..d7f6d43787 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4927,7 +4927,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
pAvatarVO->addAttachmentPosOverridesForObject(vobj);
if (pAvatarVO->isSelf())
{
- //pAvatarVO->showAttachmentPosOverrides();
+ bool verbose = true;
+ pAvatarVO->showAttachmentPosOverrides(verbose);
}
}
diff --git a/scripts/content_tools/skel_tool.py b/scripts/content_tools/skel_tool.py
index f7301c55e1..7dabadb2b8 100644
--- a/scripts/content_tools/skel_tool.py
+++ b/scripts/content_tools/skel_tool.py
@@ -366,17 +366,17 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description="process SL avatar_skeleton/avatar_lad files")
parser.add_argument("--verbose", action="store_true",help="verbose flag")
- parser.add_argument("--ogfile", help="specify file containing base bones")
+ parser.add_argument("--ogfile", help="specify file containing base bones", default="avatar_skeleton_orig.xml")
parser.add_argument("--ref_file", help="specify another file containing replacements for missing fields")
- parser.add_argument("--lad_file", help="specify avatar_lad file to check")
- parser.add_argument("--orig_lad_file", help="specify avatar_lad file to compare to")
+ parser.add_argument("--lad_file", help="specify avatar_lad file to check", default="avatar_lad.xml")
+ parser.add_argument("--orig_lad_file", help="specify avatar_lad file to compare to", default="avatar_lad_orig.xml")
parser.add_argument("--aliases", help="specify file containing bone aliases")
parser.add_argument("--validate", action="store_true", help="check specified input file for validity")
parser.add_argument("--fix", action="store_true", help="try to correct errors")
parser.add_argument("--remove", nargs="+", help="remove specified joints")
parser.add_argument("--list", action="store_true", help="list joint names")
parser.add_argument("--compare", help="alternate skeleton file to compare")
- parser.add_argument("infilename", help="name of a skel .xml file to input")
+ parser.add_argument("infilename", help="name of a skel .xml file to input", default="avatar_skeleton.xml")
parser.add_argument("outfilename", nargs="?", help="name of a skel .xml file to output")
args = parser.parse_args()