Merge bento-box
commit
dd1a86c20c
|
|
@ -627,6 +627,7 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent
|
|||
parent->addChild( joint );
|
||||
}
|
||||
|
||||
// SL-315
|
||||
joint->setPosition(info->mPos);
|
||||
joint->setRotation(mayaQ(info->mRot.mV[VX], info->mRot.mV[VY],
|
||||
info->mRot.mV[VZ], LLQuaternion::XYZ));
|
||||
|
|
@ -868,6 +869,7 @@ void LLAvatarAppearance::buildCharacter()
|
|||
//-------------------------------------------------------------------------
|
||||
// initialize the pelvis
|
||||
//-------------------------------------------------------------------------
|
||||
// SL-315
|
||||
mPelvisp->setPosition( LLVector3(0.0f, 0.0f, 0.0f) );
|
||||
|
||||
mIsBuilt = TRUE;
|
||||
|
|
@ -1290,7 +1292,8 @@ LLJoint *LLAvatarAppearance::getCharacterJoint( U32 num )
|
|||
}
|
||||
if (!mSkeleton[num])
|
||||
{
|
||||
mSkeleton[num] = createAvatarJoint(num);
|
||||
mSkeleton[num] = createAvatarJoint();
|
||||
mSkeleton[num]->setJointNum(num);
|
||||
}
|
||||
return mSkeleton[num];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,7 +127,6 @@ public:
|
|||
|
||||
protected:
|
||||
virtual LLAvatarJoint* createAvatarJoint() = 0;
|
||||
virtual LLAvatarJoint* createAvatarJoint(S32 joint_num) = 0;
|
||||
virtual LLAvatarJointMesh* createAvatarJointMesh() = 0;
|
||||
void makeJointAliases(LLAvatarBoneInfo *bone_info);
|
||||
|
||||
|
|
|
|||
|
|
@ -58,13 +58,6 @@ LLAvatarJoint::LLAvatarJoint(const std::string &name, LLJoint *parent) :
|
|||
init();
|
||||
}
|
||||
|
||||
LLAvatarJoint::LLAvatarJoint(S32 joint_num) :
|
||||
LLJoint(joint_num)
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
void LLAvatarJoint::init()
|
||||
{
|
||||
mValid = FALSE;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ class LLAvatarJoint :
|
|||
{
|
||||
public:
|
||||
LLAvatarJoint();
|
||||
LLAvatarJoint(S32 joint_num);
|
||||
// *TODO: Only used for LLVOAvatarSelf::mScreenp. *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
|
||||
LLAvatarJoint(const std::string &name, LLJoint *parent = NULL);
|
||||
virtual ~LLAvatarJoint();
|
||||
|
|
|
|||
|
|
@ -289,6 +289,7 @@ void LLAvatarJointMesh::setMesh( LLPolyMesh *mesh )
|
|||
}
|
||||
|
||||
// acquire the transform from the mesh object
|
||||
// SL-315
|
||||
setPosition( mMesh->getPosition() );
|
||||
setRotation( mMesh->getRotation() );
|
||||
setScale( mMesh->getScale() );
|
||||
|
|
|
|||
|
|
@ -649,6 +649,7 @@ void LLPolyMorphTarget::apply( ESex avatar_sex )
|
|||
LLVector3 pos_delta = volume_morph->mPos * delta_weight;
|
||||
|
||||
volume_morph->mVolume->setScale(volume_morph->mVolume->getScale() + scale_delta);
|
||||
// SL-315
|
||||
volume_morph->mVolume->setPosition(volume_morph->mVolume->getPosition() + pos_delta);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -227,6 +227,7 @@ void LLPolySkeletalDistortion::apply( ESex avatar_sex )
|
|||
LLVector3 newPosition = joint->getPosition();
|
||||
LLVector3 positionDelta = iter->second;
|
||||
newPosition = newPosition + (effective_weight * positionDelta) - (mLastWeight * positionDelta);
|
||||
// SL-315
|
||||
joint->setPosition(newPosition);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,12 +91,12 @@ target_link_libraries(
|
|||
|
||||
|
||||
# Add tests
|
||||
if (LL_TESTS)
|
||||
include(LLAddBuildTest)
|
||||
# UNIT TESTS
|
||||
SET(llcharacter_TEST_SOURCE_FILES
|
||||
lljoint.cpp
|
||||
)
|
||||
LL_ADD_PROJECT_UNIT_TESTS(llcharacter "${llcharacter_TEST_SOURCE_FILES}")
|
||||
endif (LL_TESTS)
|
||||
#if (LL_TESTS)
|
||||
# include(LLAddBuildTest)
|
||||
# # UNIT TESTS
|
||||
# SET(llcharacter_TEST_SOURCE_FILES
|
||||
# lljoint.cpp
|
||||
# )
|
||||
# LL_ADD_PROJECT_UNIT_TESTS(llcharacter "${llcharacter_TEST_SOURCE_FILES}")
|
||||
#endif (LL_TESTS)
|
||||
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ LLMotion::LLMotionInitStatus LLEditingMotion::onInitialize(LLCharacter *characte
|
|||
addJointState( mWristState );
|
||||
|
||||
// propagate joint positions to kinematic chain
|
||||
// SL-315
|
||||
mParentJoint.setPosition( mParentState->getJoint()->getWorldPosition() );
|
||||
mShoulderJoint.setPosition( mShoulderState->getJoint()->getPosition() );
|
||||
mElbowJoint.setPosition( mElbowState->getJoint()->getPosition() );
|
||||
|
|
@ -143,6 +144,7 @@ LLMotion::LLMotionInitStatus LLEditingMotion::onInitialize(LLCharacter *characte
|
|||
BOOL LLEditingMotion::onActivate()
|
||||
{
|
||||
// propagate joint positions to kinematic chain
|
||||
// SL-315
|
||||
mParentJoint.setPosition( mParentState->getJoint()->getWorldPosition() );
|
||||
mShoulderJoint.setPosition( mShoulderState->getJoint()->getPosition() );
|
||||
mElbowJoint.setPosition( mElbowState->getJoint()->getPosition() );
|
||||
|
|
@ -181,6 +183,7 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
focus_pt += mCharacter->getCharacterPosition();
|
||||
|
||||
// propagate joint positions to kinematic chain
|
||||
// SL-315
|
||||
mParentJoint.setPosition( mParentState->getJoint()->getWorldPosition() );
|
||||
mShoulderJoint.setPosition( mShoulderState->getJoint()->getPosition() );
|
||||
mElbowJoint.setPosition( mElbowState->getJoint()->getPosition() );
|
||||
|
|
@ -217,7 +220,8 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
" and focus point " << focus_pt << LL_ENDL;
|
||||
target.setVec(1.f, 1.f, 1.f);
|
||||
}
|
||||
|
||||
|
||||
// SL-315
|
||||
mTarget.setPosition( target + mParentJoint.getPosition());
|
||||
|
||||
// LL_INFOS() << "Point At: " << mTarget.getPosition() << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -121,20 +121,12 @@ LLJoint::LLJoint() :
|
|||
touch();
|
||||
}
|
||||
|
||||
LLJoint::LLJoint(S32 joint_num) :
|
||||
mJointNum(joint_num)
|
||||
{
|
||||
init();
|
||||
touch();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLJoint()
|
||||
// Class Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
LLJoint::LLJoint(const std::string &name, LLJoint *parent) :
|
||||
mJointNum(0)
|
||||
mJointNum(-2)
|
||||
{
|
||||
init();
|
||||
mUpdateXform = FALSE;
|
||||
|
|
@ -219,6 +211,18 @@ void LLJoint::touch(U32 flags)
|
|||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// setJointNum()
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLJoint::setJointNum(S32 joint_num)
|
||||
{
|
||||
mJointNum = joint_num;
|
||||
if (mJointNum + 2 >= LL_CHARACTER_MAX_ANIMATED_JOINTS)
|
||||
{
|
||||
LL_INFOS() << "Does LL_CHARACTER_MAX_ANIMATED_JOINTS need to be increased?" << LL_ENDL;
|
||||
LL_ERRS() << "joint_num " << joint_num << " too large for " << LL_CHARACTER_MAX_ANIMATED_JOINTS << LL_ENDL;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
// getRoot()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -327,12 +331,15 @@ bool do_debug_joint(const std::string& name)
|
|||
//--------------------------------------------------------------------
|
||||
void LLJoint::setPosition( const LLVector3& pos )
|
||||
{
|
||||
LLScopedContextString str("setPosition");
|
||||
if (pos != getPosition())
|
||||
{
|
||||
if (do_debug_joint(getName()))
|
||||
{
|
||||
LLCallStack cs;
|
||||
LLContextStatus con_status;
|
||||
LL_DEBUGS("Avatar") << " joint " << getName() << " set pos " << pos << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "CONTEXT:\n" << "====================\n" << con_status << "====================" << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "STACK:\n" << "====================\n" << cs << "====================" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
|
@ -424,12 +431,18 @@ void LLJoint::updatePos(const std::string& av_info)
|
|||
LLUUID mesh_id;
|
||||
if (m_attachmentOverrides.findActiveOverride(mesh_id,found_pos))
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "av " << av_info << " joint " << getName() << " updatePos, winner of " << m_attachmentOverrides.count() << " is mesh " << mesh_id << " pos " << found_pos << LL_ENDL;
|
||||
if (do_debug_joint(getName()))
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "av " << av_info << " joint " << getName() << " updatePos, winner of " << m_attachmentOverrides.count() << " is mesh " << mesh_id << " pos " << found_pos << LL_ENDL;
|
||||
}
|
||||
pos = found_pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "av " << av_info << " joint " << getName() << " updatePos, winner is posBeforeOverrides " << m_posBeforeOverrides << LL_ENDL;
|
||||
if (do_debug_joint(getName()))
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "av " << av_info << " joint " << getName() << " updatePos, winner is posBeforeOverrides " << m_posBeforeOverrides << LL_ENDL;
|
||||
}
|
||||
pos = m_posBeforeOverrides;
|
||||
}
|
||||
setPosition(pos);
|
||||
|
|
|
|||
|
|
@ -40,14 +40,15 @@
|
|||
#include "xform.h"
|
||||
|
||||
const S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15;
|
||||
// BENTO JOINT COUNT LIMIT - need to set this to final skeleton size + 2
|
||||
const U32 LL_CHARACTER_MAX_JOINTS = 144; // must be divisible by 4!
|
||||
// BENTO JOINT COUNT LIMIT - need to set this to final skeleton size
|
||||
// (bones + attachments) + 2, rounded to next multiple of 4.
|
||||
const U32 LL_CHARACTER_MAX_ANIMATED_JOINTS = 164; // must be divisible by 4!
|
||||
const U32 LL_MAX_JOINTS_PER_MESH_OBJECT = 110;
|
||||
|
||||
// These should be higher than the joint_num of any
|
||||
// other joint, to avoid conflicts in updateMotionsByType()
|
||||
const U32 LL_HAND_JOINT_NUM = (LL_CHARACTER_MAX_JOINTS-1);
|
||||
const U32 LL_FACE_JOINT_NUM = (LL_CHARACTER_MAX_JOINTS-2);
|
||||
const U32 LL_HAND_JOINT_NUM = (LL_CHARACTER_MAX_ANIMATED_JOINTS-1);
|
||||
const U32 LL_FACE_JOINT_NUM = (LL_CHARACTER_MAX_ANIMATED_JOINTS-2);
|
||||
const S32 LL_CHARACTER_MAX_PRIORITY = 7;
|
||||
const F32 LL_MAX_PELVIS_OFFSET = 5.f;
|
||||
|
||||
|
|
@ -142,7 +143,7 @@ public:
|
|||
|
||||
public:
|
||||
LLJoint();
|
||||
LLJoint(S32 joint_num);
|
||||
|
||||
// *TODO: Only used for LLVOAvatarSelf::mScreenp. *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
|
||||
LLJoint( const std::string &name, LLJoint *parent=NULL );
|
||||
virtual ~LLJoint();
|
||||
|
|
@ -160,6 +161,10 @@ public:
|
|||
const std::string& getName() const { return mName; }
|
||||
void setName( const std::string &name ) { mName = name; }
|
||||
|
||||
// joint num
|
||||
S32 getJointNum() const { return mJointNum; }
|
||||
void setJointNum(S32 joint_num);
|
||||
|
||||
// get/set support
|
||||
SupportCategory getSupport() const { return mSupport; }
|
||||
void setSupport( const SupportCategory& support) { mSupport = support; }
|
||||
|
|
@ -186,7 +191,8 @@ public:
|
|||
// get/set local position
|
||||
const LLVector3& getPosition();
|
||||
void setPosition( const LLVector3& pos );
|
||||
|
||||
|
||||
// BENTO - history? Not implemented or used.
|
||||
void setDefaultPosition( const LLVector3& pos );
|
||||
|
||||
// get/set world position
|
||||
|
|
@ -228,8 +234,6 @@ public:
|
|||
|
||||
virtual BOOL isAnimatable() const { return TRUE; }
|
||||
|
||||
S32 getJointNum() const { return mJointNum; }
|
||||
|
||||
void addAttachmentPosOverride( const LLVector3& pos, const LLUUID& mesh_id, const std::string& av_info );
|
||||
void removeAttachmentPosOverride( const LLUUID& mesh_id, const std::string& av_info );
|
||||
bool hasAttachmentPosOverride( LLVector3& pos, LLUUID& mesh_id ) const;
|
||||
|
|
|
|||
|
|
@ -1401,7 +1401,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
|
|||
delete mJointMotionList; // <FS:Ansariel> Mem-leak fix by Drake Arconis
|
||||
return FALSE;
|
||||
}
|
||||
else if (num_motions > LL_CHARACTER_MAX_JOINTS)
|
||||
else if (num_motions > LL_CHARACTER_MAX_ANIMATED_JOINTS)
|
||||
{
|
||||
LL_WARNS() << "too many joints in animation" << LL_ENDL;
|
||||
delete mJointMotionList; // <FS:Ansariel> Mem-leak fix by Drake Arconis
|
||||
|
|
@ -1443,7 +1443,14 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
|
|||
LLJoint *joint = mCharacter->getJoint( joint_name );
|
||||
if (joint)
|
||||
{
|
||||
S32 joint_num = joint->getJointNum();
|
||||
// LL_INFOS() << " joint: " << joint_name << LL_ENDL;
|
||||
if ((joint_num >= (S32)LL_CHARACTER_MAX_ANIMATED_JOINTS) || (joint_num < 0))
|
||||
{
|
||||
LL_WARNS() << "Joint will be omitted from animation: joint_num " << joint_num << " is outside of legal range [0-"
|
||||
<< LL_CHARACTER_MAX_ANIMATED_JOINTS << ") for joint " << joint->getName() << LL_ENDL;
|
||||
joint = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -201,10 +201,12 @@ BOOL LLKeyframeStandMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
//-------------------------------------------------------------------------
|
||||
// propagate joint positions to internal versions
|
||||
//-------------------------------------------------------------------------
|
||||
// SL-315
|
||||
mPelvisJoint.setPosition(
|
||||
root_world_pos +
|
||||
mPelvisState->getPosition() );
|
||||
|
||||
// SL-315
|
||||
mHipLeftJoint.setPosition( mHipLeftState->getJoint()->getPosition() );
|
||||
mKneeLeftJoint.setPosition( mKneeLeftState->getJoint()->getPosition() );
|
||||
mAnkleLeftJoint.setPosition( mAnkleLeftState->getJoint()->getPosition() );
|
||||
|
|
@ -213,6 +215,7 @@ BOOL LLKeyframeStandMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
mKneeLeftJoint.setScale( mKneeLeftState->getJoint()->getScale() );
|
||||
mAnkleLeftJoint.setScale( mAnkleLeftState->getJoint()->getScale() );
|
||||
|
||||
// SL-315
|
||||
mHipRightJoint.setPosition( mHipRightState->getJoint()->getPosition() );
|
||||
mKneeRightJoint.setPosition( mKneeRightState->getJoint()->getPosition() );
|
||||
mAnkleRightJoint.setPosition( mAnkleRightState->getJoint()->getPosition() );
|
||||
|
|
@ -265,6 +268,7 @@ BOOL LLKeyframeStandMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
mCharacter->getGround( mAnkleLeftJoint.getWorldPosition(), mPositionLeft, mNormalLeft);
|
||||
mCharacter->getGround( mAnkleRightJoint.getWorldPosition(), mPositionRight, mNormalRight);
|
||||
|
||||
// SL-315
|
||||
mTargetLeft.setPosition( mPositionLeft );
|
||||
mTargetRight.setPosition( mPositionRight );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ LLMotion::LLMotion( const LLUUID &id ) :
|
|||
mDeactivateCallbackUserData(NULL)
|
||||
{
|
||||
for (S32 i=0; i<3; ++i)
|
||||
memset(&mJointSignature[i][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
|
||||
memset(&mJointSignature[i][0], 0, sizeof(U8) * LL_CHARACTER_MAX_ANIMATED_JOINTS);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -112,9 +112,10 @@ void LLMotion::addJointState(const LLPointer<LLJointState>& jointState)
|
|||
|
||||
// for now, usage is everything
|
||||
S32 joint_num = jointState->getJoint()->getJointNum();
|
||||
if ((joint_num >= (S32)LL_CHARACTER_MAX_JOINTS) || (joint_num < 0))
|
||||
if ((joint_num >= (S32)LL_CHARACTER_MAX_ANIMATED_JOINTS) || (joint_num < 0))
|
||||
{
|
||||
LL_WARNS() << "joint_num " << joint_num << " is outside of legal range [0-" << LL_CHARACTER_MAX_JOINTS << ")" << LL_ENDL;
|
||||
LL_WARNS() << "joint_num " << joint_num << " is outside of legal range [0-" << LL_CHARACTER_MAX_ANIMATED_JOINTS << ") for joint " << jointState->getJoint()->getName() << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
mJointSignature[0][joint_num] = (usage & LLJointState::POS) ? (0xff >> (7 - priority)) : 0;
|
||||
mJointSignature[1][joint_num] = (usage & LLJointState::ROT) ? (0xff >> (7 - priority)) : 0;
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ protected:
|
|||
F32 mSendStopTimestamp; // time when simulator should be told to stop this motion
|
||||
F32 mResidualWeight; // blend weight at beginning of stop motion phase
|
||||
F32 mFadeWeight; // for fading in and out based on LOD
|
||||
U8 mJointSignature[3][LL_CHARACTER_MAX_JOINTS]; // signature of which joints are animated at what priority
|
||||
U8 mJointSignature[3][LL_CHARACTER_MAX_ANIMATED_JOINTS]; // signature of which joints are animated at what priority
|
||||
void (*mDeactivateCallback)(void* data);
|
||||
void* mDeactivateCallbackUserData;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
#include "llanimationstates.h"
|
||||
#include "llstl.h"
|
||||
|
||||
const S32 NUM_JOINT_SIGNATURE_STRIDES = LL_CHARACTER_MAX_JOINTS / 4;
|
||||
const S32 NUM_JOINT_SIGNATURE_STRIDES = LL_CHARACTER_MAX_ANIMATED_JOINTS / 4;
|
||||
const U32 MAX_MOTION_INSTANCES = 32;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -488,8 +488,8 @@ void LLMotionController::updateAdditiveMotions()
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLMotionController::resetJointSignatures()
|
||||
{
|
||||
memset(&mJointSignature[0][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
|
||||
memset(&mJointSignature[1][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
|
||||
memset(&mJointSignature[0][0], 0, sizeof(U8) * LL_CHARACTER_MAX_ANIMATED_JOINTS);
|
||||
memset(&mJointSignature[1][0], 0, sizeof(U8) * LL_CHARACTER_MAX_ANIMATED_JOINTS);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -553,9 +553,9 @@ static LLTrace::BlockTimerStatHandle FTM_MOTION_ON_UPDATE("Motion onUpdate");
|
|||
void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_type)
|
||||
{
|
||||
BOOL update_result = TRUE;
|
||||
U8 last_joint_signature[LL_CHARACTER_MAX_JOINTS];
|
||||
U8 last_joint_signature[LL_CHARACTER_MAX_ANIMATED_JOINTS];
|
||||
|
||||
memset(&last_joint_signature, 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
|
||||
memset(&last_joint_signature, 0, sizeof(U8) * LL_CHARACTER_MAX_ANIMATED_JOINTS);
|
||||
|
||||
// iterate through active motions in chronological order
|
||||
for (motion_list_t::iterator iter = mActiveMotions.begin();
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ protected:
|
|||
S32 mTimeStepCount;
|
||||
F32 mLastInterp;
|
||||
|
||||
U8 mJointSignature[2][LL_CHARACTER_MAX_JOINTS];
|
||||
U8 mJointSignature[2][LL_CHARACTER_MAX_ANIMATED_JOINTS];
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -386,6 +386,7 @@ void LLJointStateBlender::blendJointStates(BOOL apply_now)
|
|||
}
|
||||
|
||||
// apply transforms
|
||||
// SL-315
|
||||
target_joint->setPosition(blended_pos + added_pos);
|
||||
target_joint->setScale(blended_scale + added_scale);
|
||||
target_joint->setRotation(added_rot * blended_rot);
|
||||
|
|
@ -417,6 +418,7 @@ void LLJointStateBlender::interpolate(F32 u)
|
|||
return;
|
||||
}
|
||||
|
||||
// SL-315
|
||||
target_joint->setPosition(lerp(target_joint->getPosition(), mJointCache.getPosition(), u));
|
||||
target_joint->setScale(lerp(target_joint->getScale(), mJointCache.getScale(), u));
|
||||
target_joint->setRotation(nlerp(u, target_joint->getRotation(), mJointCache.getRotation()));
|
||||
|
|
@ -444,6 +446,7 @@ void LLJointStateBlender::resetCachedJoint()
|
|||
return;
|
||||
}
|
||||
LLJoint* source_joint = mJointStates[0]->getJoint();
|
||||
// SL-315
|
||||
mJointCache.setPosition(source_joint->getPosition());
|
||||
mJointCache.setScale(source_joint->getScale());
|
||||
mJointCache.setRotation(source_joint->getRotation());
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ namespace tut
|
|||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
// SL-315
|
||||
lljoint.setPosition(vec3);
|
||||
LLVector3 pos = lljoint.getPosition();
|
||||
ensure("setPosition()/getPosition() failed ", (vec3 == pos));
|
||||
|
|
@ -98,6 +99,7 @@ namespace tut
|
|||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
// SL-315
|
||||
lljoint.setWorldPosition(vec3);
|
||||
LLVector3 pos = lljoint.getWorldPosition();
|
||||
ensure("1:setWorldPosition()/getWorldPosition() failed ", (vec3 == pos));
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
*
|
||||
* $LicenseInfo:firstyear=2016&license=bsd$
|
||||
*
|
||||
* Linden notes: Small modifications from the original source at https://stackwalker.codeplex.com/
|
||||
*
|
||||
* History:
|
||||
* 2005-07-27 v1 - First public release on http://www.codeproject.com/
|
||||
* http://www.codeproject.com/threads/StackWalker.asp
|
||||
|
|
@ -1012,8 +1014,9 @@ BOOL StackWalker::LoadModules()
|
|||
static StackWalker::PReadProcessMemoryRoutine s_readMemoryFunction = NULL;
|
||||
static LPVOID s_readMemoryFunction_UserData = NULL;
|
||||
|
||||
BOOL StackWalker::ShowCallstack(HANDLE hThread, const CONTEXT *context, PReadProcessMemoryRoutine readMemoryFunction, LPVOID pUserData)
|
||||
BOOL StackWalker::ShowCallstack(bool verbose, HANDLE hThread, const CONTEXT *context, PReadProcessMemoryRoutine readMemoryFunction, LPVOID pUserData)
|
||||
{
|
||||
m_verbose = verbose;
|
||||
CONTEXT c;
|
||||
CallstackEntry csEntry;
|
||||
IMAGEHLP_SYMBOL64 *pSym = NULL;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
*
|
||||
* $LicenseInfo:firstyear=2016&license=bsd$
|
||||
*
|
||||
* Linden notes: Small modifications from the original source at https://stackwalker.codeplex.com/
|
||||
*
|
||||
* LICENSE (http://www.opensource.org/licenses/bsd-license.php)
|
||||
*
|
||||
* Copyright (c) 2005-2009, Jochen Kalmbach
|
||||
|
|
@ -113,6 +115,7 @@ public:
|
|||
BOOL LoadModules();
|
||||
|
||||
BOOL ShowCallstack(
|
||||
bool verbose,
|
||||
HANDLE hThread = GetCurrentThread(),
|
||||
const CONTEXT *context = NULL,
|
||||
PReadProcessMemoryRoutine readMemoryFunction = NULL,
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llcommon.h"
|
||||
#include "llcallstack.h"
|
||||
#include "StackWalker.h"
|
||||
|
|
@ -39,10 +41,10 @@ public:
|
|||
~LLCallStackImpl()
|
||||
{
|
||||
}
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0)
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false)
|
||||
{
|
||||
m_stack.clear();
|
||||
ShowCallstack();
|
||||
ShowCallstack(verbose);
|
||||
// Skip the first few lines because they're just bookkeeping for LLCallStack,
|
||||
// plus any additional lines requested to skip.
|
||||
S32 first_line = skip_count + 3;
|
||||
|
|
@ -65,7 +67,7 @@ class LLCallStackImpl
|
|||
public:
|
||||
LLCallStackImpl() {}
|
||||
~LLCallStackImpl() {}
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0)
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false)
|
||||
{
|
||||
stack.clear();
|
||||
}
|
||||
|
|
@ -74,15 +76,16 @@ public:
|
|||
|
||||
LLCallStackImpl *LLCallStack::s_impl = NULL;
|
||||
|
||||
LLCallStack::LLCallStack(S32 skip_count):
|
||||
m_skipCount(skip_count)
|
||||
LLCallStack::LLCallStack(S32 skip_count, bool verbose):
|
||||
m_skipCount(skip_count),
|
||||
m_verbose(verbose)
|
||||
{
|
||||
if (!s_impl)
|
||||
{
|
||||
s_impl = new LLCallStackImpl;
|
||||
}
|
||||
LLTimer t;
|
||||
s_impl->getStack(m_strings, m_skipCount);
|
||||
s_impl->getStack(m_strings, m_skipCount, m_verbose);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack)
|
||||
|
|
@ -94,3 +97,56 @@ std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack)
|
|||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
#include "llthreadlocalstorage.h"
|
||||
|
||||
LLContextStrings::LLContextStrings()
|
||||
{
|
||||
}
|
||||
|
||||
// static
|
||||
LLContextStrings* LLContextStrings::getThreadLocalInstance()
|
||||
{
|
||||
LLContextStrings *cons = LLThreadLocalSingletonPointer<LLContextStrings>::getInstance();
|
||||
if (!cons)
|
||||
{
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::setInstance(new LLContextStrings);
|
||||
}
|
||||
return LLThreadLocalSingletonPointer<LLContextStrings>::getInstance();
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::addContextString(const std::string& str)
|
||||
{
|
||||
LLContextStrings *cons = getThreadLocalInstance();
|
||||
//LL_INFOS() << "CTX " << (S32)cons << " ADD " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL;
|
||||
cons->m_contextStrings[str]++;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::removeContextString(const std::string& str)
|
||||
{
|
||||
LLContextStrings *cons = getThreadLocalInstance();
|
||||
cons->m_contextStrings[str]--;
|
||||
//LL_INFOS() << "CTX " << (S32)cons << " REMOVE " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL;
|
||||
if (cons->m_contextStrings[str] == 0)
|
||||
{
|
||||
cons->m_contextStrings.erase(str);
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::output(std::ostream& os)
|
||||
{
|
||||
const std::map<std::string,S32>& strings = LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->m_contextStrings;
|
||||
for (std::map<std::string,S32>::const_iterator it = strings.begin(); it!=strings.end(); ++it)
|
||||
{
|
||||
os << it->first << "[" << it->second << "]" << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status)
|
||||
{
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->output(s);
|
||||
return s;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,16 +24,55 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include <map>
|
||||
|
||||
class LLCallStackImpl;
|
||||
|
||||
class LLCallStack
|
||||
{
|
||||
public:
|
||||
LLCallStack(S32 skip_count=0);
|
||||
LLCallStack(S32 skip_count=0, bool verbose=false);
|
||||
std::vector<std::string> m_strings;
|
||||
bool m_verbose;
|
||||
private:
|
||||
static LLCallStackImpl *s_impl;
|
||||
S32 m_skipCount;
|
||||
};
|
||||
|
||||
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack);
|
||||
|
||||
class LLContextStrings
|
||||
{
|
||||
public:
|
||||
LLContextStrings();
|
||||
static void addContextString(const std::string& str);
|
||||
static void removeContextString(const std::string& str);
|
||||
static void output(std::ostream& os);
|
||||
static LLContextStrings* getThreadLocalInstance();
|
||||
private:
|
||||
std::map<std::string,S32> m_contextStrings;
|
||||
};
|
||||
|
||||
class LLScopedContextString
|
||||
{
|
||||
public:
|
||||
LLScopedContextString(const std::string& str):
|
||||
m_str(str)
|
||||
{
|
||||
LLContextStrings::addContextString(m_str);
|
||||
}
|
||||
~LLScopedContextString()
|
||||
{
|
||||
LLContextStrings::removeContextString(m_str);
|
||||
}
|
||||
private:
|
||||
std::string m_str;
|
||||
};
|
||||
|
||||
// This doesn't really have any state, just acts as class to hook the
|
||||
// ostream override to.
|
||||
struct LLContextStatus
|
||||
{
|
||||
};
|
||||
|
||||
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status);
|
||||
|
|
|
|||
|
|
@ -1484,6 +1484,7 @@ void LLAgentCamera::updateCamera()
|
|||
diff.mV[VZ] = 0.f;
|
||||
}
|
||||
|
||||
// SL-315
|
||||
gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff);
|
||||
|
||||
gAgentAvatarp->mRoot->updateWorldMatrixChildren();
|
||||
|
|
@ -2225,6 +2226,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)
|
|||
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
// SL-315
|
||||
gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);
|
||||
gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE );
|
||||
gAgentAvatarp->startMotion( ANIM_AGENT_BREATHE_ROT );
|
||||
|
|
@ -2265,6 +2267,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
|
|||
{
|
||||
if (!gAgentAvatarp->isSitting())
|
||||
{
|
||||
// SL-315
|
||||
gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);
|
||||
}
|
||||
gAgentAvatarp->startMotion(ANIM_AGENT_BODY_NOISE);
|
||||
|
|
|
|||
|
|
@ -214,7 +214,10 @@ void LLSkinningUtil::remapSkinInfoJoints(LLVOAvatar *avatar, LLMeshSkinInfo* ski
|
|||
|
||||
for (U32 j = 0; j < skin->mJointNames.size(); ++j)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "Starting joint[" << j << "] = " << skin->mJointNames[j] << " j_remap " << j_remap[j] << " ==> " << new_joint_names[j_remap[j]] << LL_ENDL;
|
||||
if (skin->mJointNames[j] != new_joint_names[j_remap[j]])
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "Starting joint[" << j << "] = " << skin->mJointNames[j] << " j_remap " << j_remap[j] << " ==> " << new_joint_names[j_remap[j]] << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
skin->mJointNames = new_joint_names;
|
||||
|
|
|
|||
|
|
@ -52,11 +52,6 @@ LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) :
|
|||
LLAvatarJoint(name, parent)
|
||||
{ }
|
||||
|
||||
LLViewerJoint::LLViewerJoint(S32 joint_num) :
|
||||
LLAvatarJoint(joint_num)
|
||||
{ }
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// ~LLViewerJoint()
|
||||
// Class Destructor
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ class LLViewerJoint :
|
|||
{
|
||||
public:
|
||||
LLViewerJoint();
|
||||
LLViewerJoint(S32 joint_num);
|
||||
// *TODO: Only used for LLVOAvatarSelf::mScreenp. *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
|
||||
LLViewerJoint(const std::string &name, LLJoint *parent = NULL);
|
||||
virtual ~LLViewerJoint();
|
||||
|
|
|
|||
|
|
@ -358,6 +358,7 @@ void LLViewerJointAttachment::setAttachmentVisibility(BOOL visible)
|
|||
void LLViewerJointAttachment::setOriginalPosition(LLVector3& position)
|
||||
{
|
||||
mOriginalPos = position;
|
||||
// SL-315
|
||||
setPosition(position);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@
|
|||
#include "llsdutil.h"
|
||||
#include "llscenemonitor.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llcallstack.h"
|
||||
|
||||
#include "fsdata.h"
|
||||
#include "lfsimfeaturehandler.h" // <FS:CR> Opensim
|
||||
|
|
@ -1081,7 +1082,6 @@ void LLVOAvatar::deleteCachedImages(bool clearAll)
|
|||
{
|
||||
if (LLViewerTexLayerSet::sHasCaches)
|
||||
{
|
||||
LL_DEBUGS() << "Deleting layer set caches" << LL_ENDL;
|
||||
for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
|
||||
iter != LLCharacter::sInstances.end(); ++iter)
|
||||
{
|
||||
|
|
@ -1249,12 +1249,6 @@ LLAvatarJoint* LLVOAvatar::createAvatarJoint()
|
|||
return new LLViewerJoint();
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLAvatarJoint* LLVOAvatar::createAvatarJoint(S32 joint_num)
|
||||
{
|
||||
return new LLViewerJoint(joint_num);
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLAvatarJointMesh* LLVOAvatar::createAvatarJointMesh()
|
||||
{
|
||||
|
|
@ -1860,8 +1854,6 @@ void LLVOAvatar::releaseMeshData()
|
|||
return;
|
||||
}
|
||||
|
||||
LL_DEBUGS() << "Releasing mesh data" << LL_ENDL;
|
||||
|
||||
// cleanup mesh data
|
||||
for (avatar_joint_list_t::iterator iter = mMeshLOD.begin();
|
||||
iter != mMeshLOD.end();
|
||||
|
|
@ -2074,17 +2066,12 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
// Do base class updates...
|
||||
U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp);
|
||||
|
||||
//LLTEContents tec;
|
||||
//S32 te_retval = parseTEMessage(mesgsys, _PREHASH_ObjectData, block_num, tec);
|
||||
|
||||
LL_DEBUGS("Avatar") << avString() << update_type << LL_ENDL;
|
||||
|
||||
// Print out arrival information once we have name of avatar.
|
||||
if (has_name && getNVPair("FirstName"))
|
||||
{
|
||||
mDebugExistenceTimer.reset();
|
||||
debugAvatarRezTime("AvatarRezArrivedNotification","avatar arrived");
|
||||
}
|
||||
if (has_name && getNVPair("FirstName"))
|
||||
{
|
||||
mDebugExistenceTimer.reset();
|
||||
debugAvatarRezTime("AvatarRezArrivedNotification","avatar arrived");
|
||||
}
|
||||
|
||||
if(retval & LLViewerObject::INVALID_UPDATE)
|
||||
{
|
||||
|
|
@ -2202,6 +2189,8 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
|
|||
return;
|
||||
}
|
||||
|
||||
LLScopedContextString str("avatar_idle_update " + getFullname());
|
||||
|
||||
checkTextureLoading() ;
|
||||
|
||||
// force immediate pixel area update on avatars using last frames data (before drawable or camera updates)
|
||||
|
|
@ -3554,6 +3543,7 @@ void LLVOAvatar::idleUpdateBelowWater()
|
|||
void LLVOAvatar::slamPosition()
|
||||
{
|
||||
gAgent.setPositionAgent(getPositionAgent());
|
||||
// SL-315
|
||||
mRoot->setWorldPosition(getPositionAgent()); // teleport
|
||||
setChanged(TRANSLATED);
|
||||
if (mDrawable.notNull())
|
||||
|
|
@ -3944,6 +3934,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
mTimeLast = animation_time;
|
||||
|
||||
// put the pelvis at slaved position/mRotation
|
||||
// SL-315
|
||||
mRoot->setWorldPosition( getPositionAgent() ); // first frame
|
||||
mRoot->setWorldRotation( getRotation() );
|
||||
}
|
||||
|
|
@ -3998,6 +3989,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
if (newPosition != mRoot->getXform()->getWorldPosition())
|
||||
{
|
||||
mRoot->touch();
|
||||
// SL-315
|
||||
mRoot->setWorldPosition( newPosition ); // regular update
|
||||
}
|
||||
|
||||
|
|
@ -4165,6 +4157,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
{
|
||||
LLVector3 pos = mDrawable->getPosition();
|
||||
pos += getHoverOffset() * mDrawable->getRotation();
|
||||
// SL-315
|
||||
mRoot->setPosition(pos);
|
||||
mRoot->setRotation(mDrawable->getRotation());
|
||||
}
|
||||
|
|
@ -4195,6 +4188,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
LLVector3 pos = mRoot->getWorldPosition();
|
||||
pos.mV[VZ] += off_z;
|
||||
mRoot->touch();
|
||||
// SL-315
|
||||
mRoot->setWorldPosition(pos);
|
||||
}
|
||||
}
|
||||
|
|
@ -5752,6 +5746,8 @@ bool LLVOAvatar::getRiggedMeshID(LLViewerObject* pVO, LLUUID& mesh_id)
|
|||
|
||||
void LLVOAvatar::clearAttachmentPosOverrides()
|
||||
{
|
||||
LLScopedContextString str("clearAttachmentPosOverrides " + getFullname());
|
||||
|
||||
//Subsequent joints are relative to pelvis
|
||||
avatar_joint_list_t::iterator iter = mSkeleton.begin();
|
||||
avatar_joint_list_t::iterator end = mSkeleton.end();
|
||||
|
|
@ -5776,7 +5772,9 @@ void LLVOAvatar::addAttachmentPosOverridesForObject(LLViewerObject *vo)
|
|||
{
|
||||
LL_WARNS("Avatar") << "called with invalid avatar" << LL_ENDL;
|
||||
}
|
||||
|
||||
|
||||
LLScopedContextString str("addAttachmentPosOverridesForObject " + av->getFullname());
|
||||
|
||||
// Process all children
|
||||
LLViewerObject::const_child_list_t& children = vo->getChildren();
|
||||
for (LLViewerObject::const_child_list_t::const_iterator it = children.begin();
|
||||
|
|
@ -5897,6 +5895,7 @@ void LLVOAvatar::resetJointPositionsOnDetach(const LLUUID& mesh_id)
|
|||
if ( pJoint && pJoint == pJointPelvis)
|
||||
{
|
||||
removePelvisFixup( mesh_id );
|
||||
// SL-315
|
||||
pJoint->setPosition( LLVector3( 0.0f, 0.0f, 0.0f) );
|
||||
}
|
||||
}
|
||||
|
|
@ -6042,7 +6041,6 @@ BOOL LLVOAvatar::loadSkeletonNode ()
|
|||
}
|
||||
|
||||
LLViewerJointAttachment* attachment = new LLViewerJointAttachment();
|
||||
|
||||
attachment->setName(info->mName);
|
||||
LLJoint *parent_joint = getJoint(info->mJointName);
|
||||
if (!parent_joint)
|
||||
|
|
@ -6075,7 +6073,7 @@ BOOL LLVOAvatar::loadSkeletonNode ()
|
|||
int group = info->mGroup;
|
||||
if (group >= 0)
|
||||
{
|
||||
if (group < 0 || group >= 9)
|
||||
if (group < 0 || group > 9)
|
||||
{
|
||||
LL_WARNS() << "Invalid group number (" << group << ") for attachment point " << info->mName << LL_ENDL;
|
||||
}
|
||||
|
|
@ -6102,7 +6100,8 @@ BOOL LLVOAvatar::loadSkeletonNode ()
|
|||
attachment->setPieSlice(info->mPieMenuSlice);
|
||||
attachment->setVisibleInFirstPerson(info->mVisibleFirstPerson);
|
||||
attachment->setIsHUDAttachment(info->mIsHUDAttachment);
|
||||
|
||||
// attachment can potentially be animated, needs a number.
|
||||
attachment->setJointNum(mSkeleton.size() + attachmentID -1);
|
||||
mAttachmentPoints[attachmentID] = attachment;
|
||||
|
||||
// now add attachment joint
|
||||
|
|
@ -6723,6 +6722,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
|
|||
// objects to be not rendered for new arrivals. See EXT-6835 and EXT-1655.
|
||||
sitDown(TRUE);
|
||||
mRoot->getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
|
||||
// SL-315
|
||||
mRoot->setPosition(getPosition());
|
||||
mRoot->updateWorldMatrixChildren();
|
||||
|
||||
|
|
@ -6781,6 +6781,7 @@ void LLVOAvatar::getOffObject()
|
|||
sitDown(FALSE);
|
||||
|
||||
mRoot->getXform()->setParent(NULL); // LLVOAvatar::getOffObject
|
||||
// SL-315
|
||||
mRoot->setPosition(cur_position_world);
|
||||
mRoot->setRotation(cur_rotation_world);
|
||||
mRoot->getXform()->update();
|
||||
|
|
@ -7985,7 +7986,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
|
|||
U8 av_u8;
|
||||
mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, av_u8, 0);
|
||||
contents.mAppearanceVersion = av_u8;
|
||||
LL_DEBUGS("Avatar") << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << LL_ENDL;
|
||||
mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);
|
||||
// For future use:
|
||||
//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
|
||||
|
|
@ -7997,7 +7998,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
|
|||
{
|
||||
LLVector3 hover;
|
||||
mesgsys->getVector3Fast(_PREHASH_AppearanceHover, _PREHASH_HoverHeight, hover);
|
||||
LL_DEBUGS("Avatar") << avString() << " hover received " << hover.mV[ VX ] << "," << hover.mV[ VY ] << "," << hover.mV[ VZ ] << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << avString() << " hover received " << hover.mV[ VX ] << "," << hover.mV[ VY ] << "," << hover.mV[ VZ ] << LL_ENDL;
|
||||
contents.mHoverOffset = hover;
|
||||
contents.mHoverOffsetWasSet = true;
|
||||
}
|
||||
|
|
@ -8007,7 +8008,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
|
|||
bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (ll_rand(2) == 0); // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing
|
||||
if( num_blocks > 1 && !drop_visual_params_debug)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << avString() << " handle visual params, num_blocks " << num_blocks << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << avString() << " handle visual params, num_blocks " << num_blocks << LL_ENDL;
|
||||
|
||||
LLVisualParam* param = getFirstVisualParam();
|
||||
llassert(param); // if this ever fires, we should do the same as when num_blocks<=1
|
||||
|
|
@ -8068,7 +8069,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
|
|||
{
|
||||
S32 index = it - contents.mParams.begin();
|
||||
contents.mParamAppearanceVersion = ll_round(contents.mParamWeights[index]);
|
||||
LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8111,9 +8112,9 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
|
|||
appearance_version = 0;
|
||||
}
|
||||
// </FS:Ansariel> [Legacy Bake]
|
||||
LL_DEBUGS("Avatar") << "appearance version info - field " << contents.mAppearanceVersion
|
||||
<< " param: " << contents.mParamAppearanceVersion
|
||||
<< " final: " << appearance_version << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << "appearance version info - field " << contents.mAppearanceVersion
|
||||
// << " param: " << contents.mParamAppearanceVersion
|
||||
// << " final: " << appearance_version << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -8122,8 +8123,6 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "starts" << LL_ENDL;
|
||||
|
||||
// <FS:CR> Use LLCachedControl
|
||||
//bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
|
||||
static LLCachedControl<bool> enable_verbose_dumps(gSavedSettings, "DebugAvatarAppearanceMessage");
|
||||
|
|
@ -8181,7 +8180,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "appearance message received" << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << "appearance message received" << LL_ENDL;
|
||||
}
|
||||
|
||||
// Check for stale update.
|
||||
|
|
@ -8279,8 +8278,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
|||
BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
|
||||
mFirstAppearanceMessageReceived = TRUE;
|
||||
|
||||
LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
|
||||
<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
|
||||
// << " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
|
||||
|
||||
if (is_first_appearance_message )
|
||||
{
|
||||
|
|
@ -8293,7 +8292,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
|||
// Apply visual params
|
||||
if( num_params > 1)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << avString() << " handle visual params, num_params " << num_params << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << avString() << " handle visual params, num_params " << num_params << LL_ENDL;
|
||||
BOOL params_changed = FALSE;
|
||||
BOOL interp_params = FALSE;
|
||||
S32 params_changed_count = 0;
|
||||
|
|
@ -8533,7 +8532,7 @@ void LLVOAvatar::onInitialBakedTextureLoaded( BOOL success, LLViewerFetchedTextu
|
|||
|
||||
if (selfp)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << selfp->avString() << "discard_level " << discard_level << " success " << success << " final " << final << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << selfp->avString() << "discard_level " << discard_level << " success " << success << " final " << final << LL_ENDL;
|
||||
}
|
||||
|
||||
if (!success && selfp)
|
||||
|
|
@ -8551,14 +8550,14 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success,
|
|||
LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src,
|
||||
S32 discard_level, BOOL final, void* userdata)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "onBakedTextureLoaded: " << src_vi->getID() << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << "onBakedTextureLoaded: " << src_vi->getID() << LL_ENDL;
|
||||
|
||||
LLUUID id = src_vi->getID();
|
||||
LLUUID *avatar_idp = (LLUUID *)userdata;
|
||||
LLVOAvatar *selfp = (LLVOAvatar *)gObjectList.findObject(*avatar_idp);
|
||||
if (selfp)
|
||||
{
|
||||
LL_DEBUGS("Avatar") << selfp->avString() << "discard_level " << discard_level << " success " << success << " final " << final << " id " << src_vi->getID() << LL_ENDL;
|
||||
//LL_DEBUGS("Avatar") << selfp->avString() << "discard_level " << discard_level << " success " << success << " final " << final << " id " << src_vi->getID() << LL_ENDL;
|
||||
}
|
||||
|
||||
if (selfp && !success)
|
||||
|
|
|
|||
|
|
@ -368,7 +368,6 @@ protected:
|
|||
|
||||
protected:
|
||||
/*virtual*/ LLAvatarJoint* createAvatarJoint(); // Returns LLViewerJoint
|
||||
/*virtual*/ LLAvatarJoint* createAvatarJoint(S32 joint_num); // Returns LLViewerJoint
|
||||
/*virtual*/ LLAvatarJointMesh* createAvatarJointMesh(); // Returns LLViewerJointMesh
|
||||
public:
|
||||
void updateHeadOffset();
|
||||
|
|
|
|||
|
|
@ -405,6 +405,7 @@ BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLAvatarSkeletonInfo *info)
|
|||
F32 aspect = LLViewerCamera::getInstance()->getAspect();
|
||||
LLVector3 scale(1.f, aspect, 1.f);
|
||||
mScreenp->setScale(scale);
|
||||
// SL-315
|
||||
mScreenp->setWorldPosition(LLVector3::zero);
|
||||
// need to update screen agressively when sidebar opens/closes, for example
|
||||
mScreenp->mUpdateXform = TRUE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue