SL-93 WIP - pelvis fixup offsets
parent
90aca8f95a
commit
7fec81b102
|
|
@ -339,6 +339,14 @@ void LLJoint::removeAttachmentPosOverride( const LLUUID& mesh_id, const std::str
|
|||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// hasAttachmentPosOverride()
|
||||
//--------------------------------------------------------------------
|
||||
bool LLJoint::hasAttachmentPosOverride( LLVector3& pos, LLUUID& mesh_id ) const
|
||||
{
|
||||
return m_attachmentOverrides.findActiveOverride(mesh_id,pos);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// updatePos()
|
||||
//--------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ public:
|
|||
|
||||
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;
|
||||
|
||||
//Accessor for the joint id
|
||||
LLUUID getId( void ) { return mId; }
|
||||
|
|
|
|||
|
|
@ -7674,6 +7674,27 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
|
|||
pJoint->getName().c_str(), pos[0], pos[1], pos[2], scale[0], scale[1], scale[2]);
|
||||
}
|
||||
|
||||
for (iter = mSkeleton.begin(); iter != end; ++iter)
|
||||
{
|
||||
LLJoint* pJoint = (*iter);
|
||||
|
||||
LLVector3 pos;
|
||||
LLUUID mesh_id;
|
||||
|
||||
if (pJoint->hasAttachmentPosOverride(pos,mesh_id))
|
||||
{
|
||||
apr_file_printf( file, "\t\t<joint_offset name=\"%s\" position=\"%f %f %f\" mesh_id=\"%s\"/>\n",
|
||||
pJoint->getName().c_str(), pos[0], pos[1], pos[2], mesh_id.asString().c_str());
|
||||
}
|
||||
}
|
||||
F32 pelvis_fixup;
|
||||
LLUUID mesh_id;
|
||||
if (hasPelvisFixup(pelvis_fixup, mesh_id))
|
||||
{
|
||||
apr_file_printf( file, "\t\t<pelvis_fixup z=\"%f\" mesh_id=\"%s\"/>\n",
|
||||
pelvis_fixup, mesh_id.asString().c_str());
|
||||
}
|
||||
|
||||
apr_file_printf( file, "\t</archetype>\n" );
|
||||
apr_file_printf( file, "\n</linden_genepool>\n" );
|
||||
|
||||
|
|
|
|||
|
|
@ -4613,6 +4613,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
{
|
||||
const int jointCnt = pSkinData->mJointNames.size();
|
||||
const F32 pelvisZOffset = pSkinData->mPelvisOffset;
|
||||
const LLUUID& mesh_id = pSkinData->mMeshID;
|
||||
bool fullRig = (jointCnt>=JOINT_COUNT_REQUIRED_FOR_FULLRIG) ? true : false;
|
||||
if ( fullRig )
|
||||
{
|
||||
|
|
@ -4626,18 +4627,20 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
const LLVector3& jointPos = pSkinData->mAlternateBindMatrix[i].getTranslation();
|
||||
|
||||
//Set the joint position
|
||||
const LLUUID& mesh_id = pSkinData->mMeshID;
|
||||
pJoint->addAttachmentPosOverride( jointPos, mesh_id, pAvatarVO->avString() );
|
||||
|
||||
//If joint is a pelvis then handle old/new pelvis to foot values
|
||||
if ( lookingForJoint == "mPelvis" )
|
||||
{
|
||||
// FIXME move
|
||||
pAvatarVO->addPelvisFixup( pelvisZOffset, mesh_id );
|
||||
pelvisGotSet = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pelvisZOffset != 0.0F)
|
||||
{
|
||||
pAvatarVO->addPelvisFixup( pelvisZOffset, mesh_id );
|
||||
pelvisGotSet = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue